Запись в файл

Fynjy

Guest
Заись в файл

Как записать в файл значения так чтобы:
Было
1|1|1|
2|2|2|
3|3|3|

Стало
1|2|1|
2|2|2|
3|3|3|

То есть в нужную ячейку
 

tony2001

TeaM PHPClub
да точно так же, как и в ненужную ячейку.
теперь переформулируй вопрос так, чтобы стало ясно в чем у тебя проблема.
 

Fynjy

Guest
Есть текстовый файл,
1|1|1|
2|2|2|
3|3|3|
..........
Как его перезаписать чтобы получилось
1|2|1|
2|2|2|
3|3|3|
...........
то есть допустим перезаписать значение 3 в строке 8
 

tony2001

TeaM PHPClub
прочитать(fopen, fread, explode), поменять прочитанные данные, записать (fwrite, fclose).
 

Фанат

oncle terrible
Команда форума
Fynjy
обычно данные считывают в массив.
ну, а уж узменить элемент массива - это самая базовая операция языка.
Тебе дать что-нибудь почитать об этом?
 

Фанат

oncle terrible
Команда форума
вот здесь по-русски написано про массивы в пхп
http://www.php.net/manual/ru/language.types.array.php

Но тебе оттуда нужно немного. работа с элементом массива точно такая же, как и с обычной переменной - взял, да присвоил ей новое значение.
 

Fynjy

Guest
$com_file="test.txt";
$file = file("$com_file");
foreach($file as $mas)
{
$fp=fopen("$com_file","w");
fwrite($fp,"$mas");
fclose($fp);
}

почему считывает весь масив, а записует только его первую строку
 

crocodile2u

http://vbolshov.org.ru
1) Ты открываешь файл на каждом шаге цикла. этого делать не надо. В цикле собери строку для записи в файл, а после цикла пиши всю эту строку в файл.

2) Мануаль fopen(), в частности второй параметр.
 

Fynjy

Guest
$id=04;
$com_file="test.txt";
$file = file("$com_file");
$fp=fopen("$com_file","w");
$fr=fopen("$com_file","a");
$date=date("h|i|s|");
foreach($file as $mas)
{
$lin=explode("|",$mas);
if($lin[0] == $id){}
else
{
fwrite($fp,"$mas");
}
print"$mas<br>";
}
fwrite($fp,"$date\n");
fclose($fr);
fclose($fp);

посмотрите правельно или нет, но вроде работает.
 

Фанат

oncle terrible
Команда форума
$fr=fopen("$com_file","a");
совершенно лишнее.
то есть, совершенно непонятно, зачем ты открыл файл на запись и на добавление одновременно.

плюс - не надо писать имена переменных в кавычках.В кавычках в пхп пишутся строки.
 

Fynjy

Guest
$id=04;
$com_file="test.txt";
$file = file($com_file);
$fp=fopen($com_file,"w");
$date=date("h|i|s|");
foreach($file as $mas)
{
$lin=explode("|",$mas);
if($lin[0] == $id){}
else
{
fwrite($fp,$mas);
}
print"$mas<br>";
}
fwrite($fp,"$date\n");
fclose($fp);
так.
 

Фанат

oncle terrible
Команда форума
довольно странный алгоритм.
если он должен делать именно то, что написано в самом верху, то, кажется, он дляэтого не годится?
 

Fynjy

Guest
Точно, не годится.

-~{}~ 31.08.04 14:31:

$com_file="test.txt";
$file = file($com_file);
$fp=fopen($com_file,"w");
$id=date("d");
foreach($file as $mas)
{
$lin=explode("|",$mas);
if($lin[0] == $id)
{
if($r=="id1"){$v1=$lin[5]+1;}else{$v1=$lin[5];}
if($r=="id2"){$v2=$lin[6]+1;}else{$v2=$lin[6];}
if($r=="id3"){$v3=$lin[7]+1;}else{$v3=$lin[7];}
$vv="$lin[0]|$lin[1]|$lin[2]|$lin[3]|$lin[4]|".$v1."|".$v2."|".$v3."|\n";
}
else{fwrite($fp,$mas); }

}
fwrite($fp,$vv);
fclose($fp);
$file = file($com_file);
foreach($file as $mas)
print"$mas<br>";

вот так работает...
 
Сверху