Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#23 used as offset, casting to integer (23) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#25 used as offset, casting to integer (25) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: ограничение количества строк в файле при записи в него
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


 Страниц (1): [1]   

> Описание: ограничение с последующей перезаписью
23Rus
Отправлено: 04 Июля, 2006 - 05:24:22
Post Id



Смотрящий


Покинул форум
Сообщений всего: 582
Дата рег-ции: Апр. 2005  
Откуда: Дивный

Карма 1




Имеется файл в который происходит запись с формы построчно.

Но необходимо органичить кол-во строк, чтоб при превышении этого кол-ва происходила запись поверх первой, чтобы была как бы текучка (ПЕРЕЗАПИСЬ).

А то получается файл растет как на дрожжах.

Запись производится с помощью $outputstring.
 
 Top
Ray Wen Администратор
Отправлено: 04 Июля, 2006 - 06:14:37
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




23Rus
У меня практики по PHP уже больше полугода небыло... но на соклько я помню есть хорошая функция file(), которая открывает файл как массив, где каждая строка элемент... Подсчитываем колличество элементов, если больше лимита, удаляем первый и записываем в конец следующий, можно писать в файл обратно...
 
 Top
23Rus
Отправлено: 05 Июля, 2006 - 07:37:49
Post Id



Смотрящий


Покинул форум
Сообщений всего: 582
Дата рег-ции: Апр. 2005  
Откуда: Дивный

Карма 1




Короче моими усилиями было написано следующее, как мне кажется логично, но в самом конце не происходит запись нового массива в файл - пишет следующее: Array to string conversion in (строчка тут такая: fwrite($fp, $new_array)Подмигивание

Ну а вот сам
CODE:
<?php
//короткие имена переменных
$DOCUMENT_ROOT=$HTTP_SERVER_VARS['DOCUMENT_ROOT'];
$text = trim($HTTP_POST_VARS['text']);

if (empty ($text))
{
echo '<p style="color:#f00">Новость не может быть добавлена, так как Вы ничего не написали.<BR>Пожалуйста, введите текст новости.</p><p><a href="javascript:history.back(1)" title="вернуться к форме добавления новости">вернуться</a></p>';
exit;
}

$text = htmlspecialchars(stripslashes($text)); // запрет использования html

echo '<p><b>Новость:</b><p>';
echo nl2br($text);
echo '<p><b>Размещена на сайте в</b> ';
echo date('d.m.Y');

$text = str_replace("\n","\\n", $text);

$line = file("$DOCUMENT_ROOT/new/news.txt");

$number_news = count($line);

if ( $number_news < 4)
{
$fp = @fopen("$DOCUMENT_ROOT/new/news.txt", 'a');
$new_text = "<img src='img/news.gif' class='img_news'> <strong>".date('d.m.Y').
"</strong> ".$text."</br>\n";
flock ($fp, LOCK_EX); // блокирование файла для записи
fwrite($fp, $new_text);
flock ($fp, LOCK_UN); //снятие блокировки на запись
fclose($fp);
}

if ( $number_news == 4)
{
$new_text = "<img src='img/news.gif' class='img_news'> <strong>".date('d.m.Y')."</strong> ".$text."</br>\n";

array_splice($line, 0, 1, $new_text);
print ($line);

$fp = fopen("$DOCUMENT_ROOT/new/news.txt", 'w');
flock ($fp, LOCK_EX); // блокирование файла для записи
fwrite($fp, $line);
flock ($fp, LOCK_UN); //снятие блокировки на запись
fclose($fp);
}
?>


Как решить проблемку не знаю - с массивами работаю первый раз. Уже пол дня бьюсь.

Вместо записи всего нового массива в файл записывает (Array).
 
 Top
23Rus
Отправлено: 06 Июля, 2006 - 01:08:11
Post Id



Смотрящий


Покинул форум
Сообщений всего: 582
Дата рег-ции: Апр. 2005  
Откуда: Дивный

Карма 1




Может перед записью нового массива в файл его надо как-нить обрабатывать, а то вместо массива он пишет в файл просто слово (array) и все?

Прошу помощи, а то уже голова кипит и в php.net ничего на эту тему не могу найти.
 
 Top
Ray Wen Администратор
Отправлено: 06 Июля, 2006 - 04:24:25
Post Id



Собиратель шишек...


Покинул форум
Сообщений всего: 2602
Дата рег-ции: Янв. 2005  
Откуда: Волгоград

Карма 21




23Rus
Нужно снова распечатать весь массив построчно циклом FOR, ну или каким удобнее, в переменную и записывать уже ее...
 
 Top
23Rus
Отправлено: 06 Июля, 2006 - 04:34:05
Post Id



Смотрящий


Покинул форум
Сообщений всего: 582
Дата рег-ции: Апр. 2005  
Откуда: Дивный

Карма 1




Справился вот таким способом, потратив еще пол дня
CODE:
if ( $number_news == 4)
{
$new_text = "<img src='img/news.gif' class='img_news'> <strong>".date('d.m.Y')."</strong> ".$text."</br>\n";

array_shift($line);
array_push($line, $new_text);

$fp = fopen("$DOCUMENT_ROOT/new/news.txt", 'w');
flock ($fp, LOCK_EX); // блокирование файла для записи
for($i=0; $i<count($line); $i++)
{
fputs($fp, $line[$i]);
}
flock ($fp, LOCK_UN); //снятие блокировки на запись
fclose($fp);
}

Зато разобрался как работать с массивами немного.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 2 (гостей: 2, зарегистрированных: 0, скрытых: 0)
« PHP/Perl »


Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 



Форум на AlfaSpace.NET


Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.044]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33