Обновление строк в файле

Обсуждение серверного программирования.

Модераторы: Duncon, Yurich

Ответить
vitpanov
Сообщения: 100
Зарегистрирован: 18 сен 2005, 18:51
Откуда: Россия

Народ! Доброго все времени суток! Есть такая задача: существует файл db.dat

Код: Выделить всё

1::111::13.10.2005 - 20:02:40
2::222::13.10.2005 - 20:02:40
3::333::13.10.2005 - 20:02:40
Надо сделать так чтобы при запросе по первой цифре (1,2,3) юзер мог изменить 2::Вот это содержимое::13.10.2005 - 20:02:40 .
Cтраница которая у меня это делает reload.php

Код: Выделить всё

Error_Reporting(E_ALL & ~E_NOTICE);
global $us,$form,$gotovo,$rub,$db,$cont,$date;
if (empty($_POST)){
$form = "
<title>обновление текстового файла</title>
<form action=reload.php?us=yes method=post>
<table align=center border=1 bordercolor=black>
<tr><td>Что:<input type=text name=cont>Куда:<select name=rub>
<option selected=selected value=1>В первую.</option>
<option value=2>Во вторую.</option>
<option value=3>В третью.</option>
</select><input type=submit name=submit class=send value=::Обновить::></td></tr>
</table>
</form>
";
}
echo $form;
if ($us!="yes") {$us = "";} else {$us = "В колонку №$rub добавлена запись $cont!";}
echo $us; 
$db="db.dat";
$rub=$_POST['rub'];
$dbArr=file("$db");
$date=date("d.m.Y - H:i:s");
for($i=0;$i<count($dbArr);$i++){
$Line=split("::",$dbArr[$i]);
if ( $rub==$Line[0] ) { 
$fp=fopen($db,'w+');
$gotovo="$rub::$cont::$date";
fputs($fp,$gotovo); fclose($fp); 
}
}
Но этот код берет и пишет в db.dat ,допустим, только строчку 1::111::Дата добавления а все что было стирает :(
Как сделать так чтобы он только обновлял и не стирал что было:?:
Сомневаешься - не делай,
не сомневаешся - подумай!
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

'w+' Открывает файл для чтения и записи; помещает указатель в начало файла и обрезает файл до нулевой длинны. Если файл не существует - пробует его создать.
(c) fopen
vitpanov
Сообщения: 100
Зарегистрирован: 18 сен 2005, 18:51
Откуда: Россия

Oscar, значит 'w' служит для открытия файла, удаления нужной строки, и записи в файл с новой строки других данных:?:
Сомневаешься - не делай,
не сомневаешся - подумай!
Аватара пользователя
Oscar
Сообщения: 963
Зарегистрирован: 29 май 2004, 13:44
Откуда: Мюнхен (рожден в Киеве)
Контактная информация:

vitpanov, угу, а ещё 'w' умеет мыть полы и стричь газоны...
Аватара пользователя
Duncon
Сообщения: 2085
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

vitpanov, Типа вот тебе самая доступная для понимания книжка по php - почитай сразу процентов 80 детских вопросов отпадет...
http://www.poleznosti.nm.ru/php_book.rar
[syntax=Delphi] [/syntax]
UUU
Сообщения: 310
Зарегистрирован: 17 фев 2004, 09:27
Откуда: Иваново
Контактная информация:

Если есть более 1 пользователя - то после открытия файл надо лочить.
Ответить