2011-12-22 48 views
0

我的PHP代碼有些問題。 基本上我有一個CSV的人的列表,我正在使用fgetcsv將該文件讀入表中。我試圖做的是將他們的名字顯示爲鏈接,他們點擊鏈接,調用fputcsv,並在名稱旁邊放置1。使用fgetcsv寫入CSV

目前我只有顯示部分工作。 我不太確定寫作部分從哪裏開始。

任何有識之士將不勝感激。

非常感謝!

<?php 
    $row = 1; 
    $handle = fopen("test/list.csv", "r"); 
    echo("<table>"); 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     echo("<tr>\r\n"); 
     foreach ($data as $index=>$val) { 
       echo("\t<td><a href=\"#\">$val</a></td>\r\n"); 
     } 
     echo("</tr>\r\n"); 
    } 
    echo("</table>"); 
    fclose($handle); 
    ?> 

回答

2

您不能直接將csv文件視爲數據庫。你需要有一些方法來指示被點擊的行來自原始csv文件。通過行號或(最好)每行中的某個唯一ID字段。

我會假裝CSV文件的該列0是行的唯一indentifier,所以你必須爲這個ouptut:

foreach ($data as $index=>$val) { 
      echo("\t<td><a href=\"update.php?id={$data[0]}\">$val</a></td>\r\n"); 
    } 

然後在update.php腳本,在基本僞代碼:

<?php 
$id = $GET['id']; 

$fh = fopen('test/list.csv', 'rb'); 
$out = fopen('newlist.csv'', 'wb'); 
while($row = fgetcsv($fh)) { 
    if ($row[0] == $id) { 
     $row[xxx] = 1; // write '1' for this row because it's the row that was clicked on 
    } 
    fputcsv($out, $row); // write out to new file 
} 

請注意,我正在使用第二個文件進行修改的輸出。這比嘗試就地編輯原始csv更安全。一旦你做了任何必要的修改,你只需將新文件移到舊文件上,編輯就完成了。

+0

@Mark B謝謝!現在我知道從哪裏開始。對於顯示部分,我遇到了一個問題......如何在顯示CSV時跳過唯一標識符?我的CSV文件看起來像: 1,凱文約翰遜 2,史蒂夫喬布斯 3,比爾蓋茨 4,史蒂夫沃茲 如何隱藏1,2,3,4使用fgetcsv? \t \t \t \t '而(($數據= fgetcsv($處理,1000, 「 」))== FALSE!){ 回波(「 \ r \ n」); 的foreach($數據作爲$索引=> $ val)的{ \t \t \t \t \t回波( 「\噸​​$val \ r \ n」); \t \t \t \t \t \t \t}' – 2011-12-22 22:00:22

+0

fgetcsv解析在每個線的基礎上的CSV和返回各個字段的陣列。這意味着$ row [0]是1,2,3,4的東西,$ row [1]是名稱。 – 2011-12-22 22:10:17