Определение номера строки в файле
1.
Дмитрий (26.07.2010 / 01:48)
Посоветуйте, плиз.
Я делаю запись строки в файл с такими данными:
$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 и т.д.).
Но перед тем как удалить найденную строку, мне надо узнать ее порядковый номер в файле.
Посоветуйте, как? Может, есть другие варианты?
2.
Studentsov (26.07.2010 / 02:48)
<?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);
//далее удаление и запись
}}
?>
3.
smartvbxos7 (26.07.2010 / 04:38)
foreach($array as $key => $val)
$key ключ
$val содержание
4.
Дмитрий (26.07.2010 / 05:37)
2.
Студент_trollface, спасиб, помогло.
Там даже проще немного
5.
Мансур (26.07.2010 / 05:40)
Да лучше бы массивом
6.
Дмитрий (26.07.2010 / 07:53)
Ярмен Келл (26 Июля 2010 / 04:40)
Да лучше бы массивом
да я совместил свой код с кодом студента. Получилось нормалек. Негромоздко и работает быстро
7.
Дмитрий (26.07.2010 / 08:06)
Для новичков, кому интересно, вот что вышло:
МОИ ГОСТИ
(этот код пишем в анкету)
<?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/
*/
Думаю, вывод из файла сделать легко ))
.
8.
Мансур (27.07.2010 / 09:19)
Да я вапше с файлом, ячейком всегда так работаю:
<?php
$file = file(BASEDIR ."local/fail.dat");
foreach($file as $key => $value) {
$figna = explode("|", $value);
?>
$figna[0]
$figna[1]
$figna[2]
так помоймо лучще. А может ктото другой лучший вариант знает
9.
Мансур (27.07.2010 / 09:27)
7.
LondoN_tm, тогда только 1 просмотр отается там?
Тогда почему туда $kol если сохраняется 1 просмотр?
10.
Дмитрий (30.07.2010 / 02:54)
9.
Ярмен Келл, присмотрись, если просмотр первый, в ячейку 1 пишется единица (первый просмотр), а если просмотры уже были - строка удаляется, перезыписывается заново и к кол-ву просмотров добавляем +1 ($kol = $d[1]+1;)
URL:
https://visavi.net/topics/11902