Я пытаюсь импортировать CSV-файл. Из-за используемой нами программы первая строка – это, по сути, все заголовки, которые я хотел бы пропустить, так как я уже размещал свои собственные заголовки через HTML. Как я могу заставить код пропустить первую строку CSV? (команда strpos должна отключить первое поле во всех строках).
<?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); } ?>
Поскольку вы все равно отслеживаете номер строки, вы можете использовать continue
для пропусков остальной части цикла для первой строки.
Например, добавьте это в начало цикла while (чуть выше $num = count($data)
):
if($row == 1){ $row++; continue; }
Есть и другие способы сделать это, но просто убедитесь, что, когда вы продолжаете, $row
все еще увеличивается, или вы получите бесконечный цикл!
Вместо того, чтобы использовать условие для проверки, является ли это первой строкой, лучшим решением является просто добавить дополнительную строку кода до строки, из которой начинается цикл while, как показано ниже:
.... ..... 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) { ....... .......
Это так же просто ……
поместите это внутри цикла while:
if ($row == 1) continue;
Добавьте это в тело цикла while над $row++;
:
if ($row == 1) { continue; }
$count = 0; while (($fields = fgetcsv($handle, 0, ",")) !== FALSE) { $count++; if ($count == 1) { continue; }
это сработало для меня:
$count = 0; while(! feof($file)) { $entry = fgetcsv($file, 0, ';'); if ($count > 0) { //skip first line, header } $count++; }
используйте этот код
// 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'; } ?>
-// 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'; } ?>