Sauter la première ligne D'un fichier CSV
j'essaie d'importer un fichier CSV. En raison du programme que nous utilisons, la première rangée est essentiellement tous les en-têtes que je voudrais sauter puisque j'ai déjà mis mes propres en-têtes dans Via HTML. Comment puis-je obtenir le code pour sauter la première rangée du CSV? (strpos de commande est de couper le premier champ dans toutes les lignes.)
<?php
$row = 1;
if (($handle = fopen("ptt.csv", "r")) !== FALSE) {
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
if(strpos($data[$c], 'Finished') !== false) {
$c++;
echo "<TR> <TD nowrap>" . $data[$c] . "</ TD>"; }
Else{
echo "<TD nowrap>" . $data[$c] . "</ TD>";
}
}
}
fclose($handle);
}
?>
8 réponses
comme vous gardez la trace du numéro de ligne de toute façon, vous pouvez utiliser continue
d'ignorer le reste de la boucle de la première ligne.
par exemple, ajoutez ceci au début de votre boucle while (juste au-dessus de $num = count($data)
):
if($row == 1){ $row++; continue; }
Il y a d'autres façons de le faire, mais assurez-vous juste que si vous continuez, $row
est encore incrémenté ou vous obtiendrez une boucle infinie!
au lieu d'utiliser la condition if pour vérifier si c'est la première ligne, une meilleure solution est d'ajouter une ligne de code supplémentaire avant la ligne à partir de laquelle la boucle while commence comme indiqué ci-dessous :
....
.....
fgetcsv($handle);//Adding this line will skip the reading of th first line from the csv file and the reading process will begin from the second line onwards
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
.......
.......
C'est tout aussi simple......
mettez ceci dans votre boucle while:
if ($row == 1) continue;
ajouter ceci dans le corps du while
boucle au-dessus du $row++;
:
if ($row == 1) {
continue;
}
$count = 0;
while (($fields = fgetcsv($handle, 0, ",")) !== FALSE) {
$count++;
if ($count == 1) { continue; }
cela a fonctionné pour moi:
$count = 0;
while(! feof($file))
{
$entry = fgetcsv($file, 0, ';');
if ($count > 0) {
//skip first line, header
}
$count++;
}
veuillez utiliser les lignes de code suivantes
$flag = true;
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if($flag) { $flag = false; continue; }
//your code for insert
}
avoir la variable flag comme true et la mettre à false sautera la première ligne du fichier CSV. C'est simple et facile à mettre en œuvre.
Utilisez ce code
// mysql hostname
$hostname = 'localhost';
// mysql username
$username = 'root';
// mysql password
$password = '';
if (isset($_FILES['file']))
{
// get the csv file and open it up
$file = $_FILES['file']['tmp_name'];
//$handle is a valid file pointer to a file successfully opened by fopen(), popen(), or fsockopen().
$handle = fopen($file, "r");
try {
// Database Connection using PDO
$dbh = new PDO("mysql:host=$hostname;dbname=clasdb", $username, $password);
// prepare for insertion
$STM = $dbh->prepare('INSERT INTO statstrackertemp (ServerName, HiMemUti, AvgMemUti, HiCpuUti, AvgCpuUti, HiIOPerSec, AvgIOPerSec, HiDiskUsage, AvgDsikUsage) VALUES (?, ?, ?, ?, ?,?, ?, ?, ? )');
if ($handle !== FALSE)
{
// fgets() Gets a line from file pointer and read the first line from $handle and ignore it.
fgets($handle);
// created loop here
while (($data = fgetcsv($handle, 1000, ',')) !== FALSE)
{
$STM->execute($data);
}
fclose($handle);
}
}
catch(PDOException $e)
{
die($e->getMessage());
}
echo 'Data imported';
}
else
{
echo 'Could not import Data';
}
?>