2013-01-03 62 views
0

我正在處理一個php代碼,該代碼讀取同一文件夾中的.csv文件並在html中打印表格。 由於該文件包含很多行,我想將表限制爲特定行數(例如50)。 我真的不知道該怎麼做,任何人都可以幫助新手,因爲我是?用php腳本生成的html表的分頁問題

<?php 

$row = 1; 
if (($handle = fopen("myfile.csv", "r")) !== FALSE) { 

echo '<table border="1">'; 

while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { 
    $num = count($data); 
    if ($row == 1) { 
     echo '<thead><tr>'; 
    }else{ 
     echo '<tr>'; 
    } 

    for ($c=0; $c < $num; $c++) { 
     if(empty($data[$c])) { 
      $value = "&nbsp;"; 
     }else{ 
      $value = $data[$c]; 
     } 
     if ($row == 1) { 
      echo '<th>'.$value.'</th>'; 
     }else{ 
      echo '<td>'.$value.'</td>'; 
     } 
    } 

    if ($row == 1) { 
     echo '</tr></thead><tbody>'; 
    }else{ 
     echo '</tr>'; 
    } 
    $row++; 
} 

echo '</tbody></table>'; 
fclose($handle); 
} 
?> 
+0

jQuery的數據表:http://www.datatables.net – MECU

+0

您只需要使用$行++。瞭解更多關於控制結構的信息,並嘗試一下! – Smandoli

+0

你想分頁(如谷歌搜索結果)?或者你只是想限制結果的顯示?發佈了兩個答案,您使用的答案取決於此。 – Smandoli

回答

1

你會想要做的是傳遞一個GET參數,像開始,然後用它來設置起始編號爲您的for循環

for ($c=0; $c < $num; $c++) { 

就變成像

for ($c=$_GET['start']; $c < $_GET['start']+50 && $c < $num; $c++) { 

然後在頁面的底部添加鏈接像

<a href="<?=$_SERVER['PHP_SELF']?>?start=<?=$_GET['start']-50 ?>">"><< Prev</a> 
<a href="<?=$_SERVER['PHP_SELF']?>?start=<?=$_GET['start']+50 ?>">">Next >></a> 

顯然這不是一個健壯的/安全的解決方案,您需要添加檢查以確保啓動變量是一個數字,並添加邊界檢查。

+0

嗨,彼得,我試着用你的代碼,但沒有發生任何事情,也許我誤會了一些東西......無論如何感謝您的回覆 – mattew

1

您可以使用$row的值來限制它。

的代碼會是這個樣子:

if ($row == 50): 
    break; //exits while loop 
endif; 
+1

'($ row> = 50)''會更安全,因爲'$ row'會立即嘗試查找不等於50的方式:-) – Smandoli