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);
}
?>
18
demandé sur Nathan Dunn 2012-06-05 20:26:56

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!

21
répondu John Lawrence 2012-06-05 16:32:37

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......

43
répondu Rahul Gupta 2013-10-08 08:21:55

mettez ceci dans votre boucle while:

if ($row == 1) continue;

1
répondu Crayon Violent 2012-06-05 16:30:53

ajouter ceci dans le corps du while boucle au-dessus du $row++;:

if ($row == 1) {
    continue;
}
0
répondu prehfeldt 2012-06-05 16:31:16
$count = 0;
while (($fields = fgetcsv($handle, 0, ",")) !== FALSE) {
    $count++;
    if ($count == 1) { continue; }
0
répondu Nimish 2014-03-04 08:16:49

cela a fonctionné pour moi:

$count = 0;

while(! feof($file))

      {

          $entry = fgetcsv($file, 0, ';');

          if ($count > 0) {
          //skip first line, header


          }

      $count++;
}
0
répondu Louis Ferreira 2017-06-26 11:31:10

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.

0
répondu Amir Md Amiruzzaman 2017-12-29 13:50:22

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';
}

?>
-2
répondu Furqan Aziz 2013-11-27 07:10:36