Определение номера строки в файле

Печать RSS
55

Автор
Голубые штаны
0
Посоветуйте, плиз.

Я делаю запись строки в файл с такими данными:
$text=$log.'|'.SITETIME.'|'.$brow.'|'.$ip.'|';
// далее идет запись в файл

Перед записью в файл я делаю проверку на наличие строки в файле с ячейкой "0" (т.е. переменная $log):

$theme = "";
$li=file(../file.dat");
foreach($li as $k){
$d=explode("|",$k);
if ($d[0]==$log) {$theme='ok';}
}

Далее если в файле уже есть строка с искомым содержимым ячейки "0", мне нужно удалить эту строку и перезаписать ее в начало файла с новыми данными (время, IP и т.д.).

Но перед тем как удалить найденную строку, мне надо узнать ее порядковый номер в файле.

Посоветуйте, как? Может, есть другие варианты?

Оранжевые штаны
0
<?php
$theme = ""; 
$li=file(../file.dat"); 
$c = count ($li);
for ($i = 0; $i < $c; ++$i){
$d=explode("|",$li[$i]); 
if ($d[0]==$log) {
$theme='ok';
echo 'строка ' . ($i + 1);
//далее удаление и запись
}}
?>
Изменил: Studentsov (26.07.2010 / 02:54)
S

Чатланин
0
foreach($array as $key => $val)
$key ключ
$val содержание
Автор
Голубые штаны
0
2. Студент_trollface, спасиб, помогло.
Там даже проще немного smile

Чатланин
0
Да лучше бы массивом
Автор
Голубые штаны
0
Ярмен Келл (26 Июля 2010 / 04:40)
Да лучше бы массивом
да я совместил свой код с кодом студента. Получилось нормалек. Негромоздко и работает быстро smile
Автор
Голубые штаны
0
Для новичков, кому интересно, вот что вышло:

МОИ ГОСТИ
(этот код пишем в анкету)


<?php
if (is_user()){  // проверка авторизации
if ($uz!=$log){ // пишем, если анкета не моя

// ищем в файле, посещал ли гость эту анкету
$theme = "";  
$li=file(DATADIR."my_sobytia/my_guest/$uz.dat");
$c = count ($li); 
for ($i = 0; $i < $c; ++$i){ 
$d = explode("|",$li[$i]); 
if ($d[0]==$log) { $theme = 'ok'; $kol = $d[1]+1;

// если находим, то сначала удаляем старую запись посещения
delete_lines(DATADIR."my_sobytia/my_guest/$uz.dat", $i);

// затем обновляем запись в файле гостей,
// $kol - количество просмотра анкеты конкретно этим гостем

$texte=$log.'|'.$kol.'|'.SITETIME.'|'.$brow.'|'.$ip.'|';
write_files(DATADIR."my_sobytia/my_guest/$id.dat", "$texte\r\n", 0, 0644);

// если гость раньше не посещал анкету - просто делаем запись :
if ($theme != 'ok'){
$texte=$log.'|1|'.SITETIME.'|'.$brow.'|'.$ip.'|';
write_files(DATADIR."my_sobytia/my_guest/$uz.dat", "$texte\r\n", 0, 0644);
}
}}

/*
Если делать таким образом, 
то не загружается гостевой файл одинаковыми записями.

Ячейка 0 - Пользователь
Ячейка 1 - Количество просмотров гостем этой анкеты
Ячейка 2 - Дата последнего просмотра
Ячейка 3 - IP последнего посещения
Ячейка 4 - Браузер последнего посещения

В папке /local нужно создать директории 
../my_sobytia/my_guest/
*/
Думаю, вывод из файла сделать легко ))

.
Изменил: Дмитрий (26.07.2010 / 08:08)

Чатланин
0
Да я вапше с файлом, ячейком всегда так работаю:
<?php
$file = file(BASEDIR ."local/fail.dat");
foreach($file as $key => $value) {
$figna = explode("|", $value);
?>

$figna[0]
$figna[1]
$figna[2]
так помоймо лучще. А может ктото другой лучший вариант знает

Чатланин
0
7. LondoN_tm, тогда только 1 просмотр отается там?
Тогда почему туда $kol если сохраняется 1 просмотр?
Автор
Голубые штаны
0
9. Ярмен Келл, присмотрись, если просмотр первый, в ячейку 1 пишется единица (первый просмотр), а если просмотры уже были - строка удаляется, перезыписывается заново и к кол-ву просмотров добавляем +1 ($kol = $d[1]+1;)
Стикеры / Теги / Правила / Топ тем / Топ постов / Поиск