2011-10-07 123 views
0

我正在將CSV文件導入到我的數據庫中。我想顯示列的前5行,以便了解文件內的內容。 所以下面我製作了一個快速腳本來打開文件。我計算列的數量,循環遍歷列數,爲每個列創建,然後在其下面引入一個while()循環來顯示行。當然,我循環的列數來匹配。PHP fgetcsv()顯示前5行

我成功地從文件中獲取數據,而我甚至得到列數正確。但它顯示的是文件中間某處的結果,而不是前5條記錄。

第一行幫助我知道的列叫什麼,(如果有列名)。

該腳本很髒,我很好奇它是如何優化的。

<? 
$filerow = $numcols =0; 
if(is_file($targetDirectoryFile)){ 
$file_opened = fopen($targetDirectoryFile, "r"); // open the file 
?> 
<table class="itemstable" style="width:100%;"> 
<? 
    $getfileInfo = fgetcsv($file_opened); 
    $numcols = count($getfileInfo); // count columns 
?> 
    <tr> 
     <? for($cols = 0; $cols < $numcols; $cols++){ // loop thru # of columns ?> 
     <th>Column <?=$cols+1;?></th> 
     <? } ?> 
    </tr> 
    <? 
    // feels like this could be done better. 
    while ($getfileInfo2 = fgetcsv($file_opened)){ 
     $filerow++; 
    ?> 
     <tr> 
      <? for($col = 0; $col < $numcols; $col++){ // loop thru # of columns ?> 
      <td><?=trim($getfileInfo2[$col]);?></td> 
      <? } ?> 
     </tr> 

    <? 
     if($filerow > 4){ break; fclose($file_opened); // stop and close after 5 loops } 
    } 
echo '</table>'; 
//fclose($file_opened); 
} 
?> 

回答

0

至於優化,你可以只使用擺脫在循環的if聲明:

while (($getfileInfo2 = fgetcsv($file_opened)) && ($filerow < 5)) 
{ 

我也並不認爲你的文件,你把後面的語句被正確關閉break聲明,但我不明白這會如何導致您遇到的問題。

關於中間的輸出;輸入文件和生成的html是什麼樣的?

+0

我遇到的問題實際上是一個令人尷尬的問題。重複的記錄名稱,除了一個字符。我正在查看錯誤的文件。 Soooooo,我只是做一個三重檢查的心理筆記。 – coffeemonitor