|
|
|
| У меня есть файл diskusii.txt ! В нем допустим есть 60 строчек и они постоянно увеличиваются (данные добавляются)! Мне надо сделать так чтоб на странице вывелись последние 30! Как это сделать? | |
|
|
|
|
|
|
|
для: midav
(24.01.2006 в 00:37)
| | :((( что никто не сталкивался с такой проблемой | |
|
|
|
|
|
|
|
для: midav
(24.01.2006 в 01:17)
| | Вы правы, вряд ли кто то последнее время с этим кроме Вас сталкивался :)
Ну на ум приходит только два варианта:
1) Считывать весь файл в массив при помощи file и дальше выводим последние $num строк:
<?
$f = file("diskusii.txt");
$num = 10;
$from = ((count($f)-$num) < 0) ? 0 : (count($f)-$num);
for($i=$from;$i<count($f);$i++)
echo $f[$i]."<br>";
?>
|
Однако опять же учитывая проблему больших файлов использовать этот меод не рекомендую
2) Зная количество строк в файле можно вывести последние $num. Ничего лучше чем пройти файл 2 раза я не придумал:
<?
$f = fopen("diskusii.txt","r");
$count = 0;
while(!feof($f))
{
$count++;
fgets($f);
}
fseek($f,0);
$num = 10;
for($i=0;$i<$count-$num;$i++)
fgets($f);
while(!feof($f))
echo fgets($f)."<br>";
?>
|
Хотя можно придумать ещё что нибудь, сделать что нибудь типа очереди с ограничением на $num элементов. Считывая новую строку в файл заталкиваем её в очередь, если очередб переполняется выталкиваем старые элементы. В конечном итоге в очереди останутся последние $num строк....
А вообще ПОЛЬЗУЙТЕСЬ MYSQL!!! :) | |
|
|
|
|
|
|
|
для: Евгений Петров
(24.01.2006 в 01:43)
| | Чтото оба варианта не работают! просто я хотел вывести последние 30 дискусий которые у меня в отдельный файл сохраняются! Фишка в том что при добавлении дискусии дополнительно добавляется информация в этот файл и потом я вывожу как последние 30! По идеи я хотел сделать чтоб если количество в файле 30, то стереть 1 строчку и добавить в конец новую информацию! Но у меня как то не получилось функцию написать, у меня при 30 ничего не стералось а продолжает дальше записываться :( | |
|
|
|