@doriulbool

Как изменить конкретные позиции в csv файле средствами php?

Прошу помочь с идеей реализации изменения данных в csv файлах.
Есть форма для поиска значения в многомерном массиве
<form method=post name=form4>
<table><tbody><tr>
 <td><input type=text name=fieldid /></td>
 <td><input type=submit name=form4 /></td>
</tr></table></tbody></form>

Сам поиск данных и возврат их в новую форму для дальнейшей правки
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['form4'])) {
$needle = $_POST['fieldid'];
$result = array_filter($get_csv, function($innerArray){
global $needle;
return ($innerArray[0] == $needle);});

$get_csv // У меня многомерный массив из csv файла

echo "<form method=post name=form5><table><tbody><tr>";
foreach ($result as $val) {
echo "<td><input type=text name=field0 value=\"" . $val[0] . "\"/></td>";
echo "<td><input type=text name=field1 value=\"" . $val[1] . "\"/></td>";
echo "<td><input type=text name=field2 value=\"" . $val[2] . "\"/></td>";
echo "<td><input type=text name=field3 value=\"" . $val[3] . "\"/></td>";}
echo " <td><input type=submit name=form5/></td>";
echo "</tr></table></tbody></form>";

if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['form5'])) {
$field0 = $_POST['field0'];$field1 = $_POST['field1'];$field2 =  $_POST['field2'];$field3 = $_POST['field3'];

$f=fopen("old.csv","r");
$r=fopen("new.csv","w");
while (!feof($f)) {
$s=fgets($f);
 $a=explode(";",$s);    
 if ($a[0]==$field0) $a[1]=$field1;
 fputs($r,implode(";",$a);
 }
 fclose($f);
 fclose($r);
 });
 }


Сама замена у меня осуществляется с помощью перезаписи файла, да и не текущего, а другого. Сейчас читаю по справочнику, что с помощью array_replace возможно поменять значение в массиве, но как потом заменить в файле только необходимую строчку без перезаписи? Насколько я знаю средствами php возможно добавлять данные лишь в конец csv файла.
  • Вопрос задан
  • 367 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы