2011-12-22 3 views
0

У меня возникают проблемы с моим PHP-кодом. В основном у меня есть список людей в CSV, и я читаю этот файл в таблице, используя fgetcsv. Я пытаюсь сделать, чтобы их имена отображались как ссылка, они нажимают на ссылку, она вызывает fputcsv и помещает 1 рядом с их именем.Запись в CSV с использованием fgetcsv

В настоящее время у меня есть только часть отображения. Я не уверен, с чего начать писать.

Любое понимание было бы весьма полезным.

Спасибо, куча !!

<?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 как базу данных напрямую. Вам нужно будет иметь некоторые указания, указывающие, что строка WHICH выбрана в исходном файле csv. Либо номер строки, либо (желательно) некоторое уникальное поле идентификатора в каждой строке.

Я сделаю вид, что столбец 0 из файла CSV является уникальным Indentifier для строки, так что вы должны были бы это для ouptut:

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

А потом в сценарии update.php, в основном pseudo-ish code:

<?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, Bill Gates 4, Steve Woz Как скрыть 1,2,3,4, используя fgetcsv? \t \t \t \t 'в то время как (($ = данные fgetcsv ($ ручка, 1000, " ")) == FALSE) { эхо (" \ г \ п"); Еогеасп ($ данные как $ индекс => $ Val) { \t \t \t \t \t эхо-сигнала ("\ т $val \ г \ п"); \t \t \t \t \t \t \t} ' –

+0

fgetcsv разбирает CSV на основе каждой линии и возвращает массив отдельных полей. это означает, что $ row [0] - это 1,2,3,4 вещи в свою очередь, а $ row [1] - имена. –

Смежные вопросы