Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: вывод данных из файла
 
 автор: midav   (24.01.2006 в 00:37)   письмо автору
 
 

У меня есть файл diskusii.txt ! В нем допустим есть 60 строчек и они постоянно увеличиваются (данные добавляются)! Мне надо сделать так чтоб на странице вывелись последние 30! Как это сделать?

   
 
 автор: midav   (24.01.2006 в 01:17)   письмо автору
 
   для: midav   (24.01.2006 в 00:37)
 

:((( что никто не сталкивался с такой проблемой

   
 
 автор: Евгений Петров   (24.01.2006 в 01:43)   письмо автору
 
   для: midav   (24.01.2006 в 01:17)
 

Вы правы, вряд ли кто то последнее время с этим кроме Вас сталкивался :)
Ну на ум приходит только два варианта:
1) Считывать весь файл в массив при помощи file и дальше выводим последние $num строк:
<?
  $f 
file("diskusii.txt");
  
$num 10;
  
$from = ((count($f)-$num) < 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!!! :)

   
 
 автор: midav   (24.01.2006 в 02:06)   письмо автору
 
   для: Евгений Петров   (24.01.2006 в 01:43)
 

Чтото оба варианта не работают! просто я хотел вывести последние 30 дискусий которые у меня в отдельный файл сохраняются! Фишка в том что при добавлении дискусии дополнительно добавляется информация в этот файл и потом я вывожу как последние 30! По идеи я хотел сделать чтоб если количество в файле 30, то стереть 1 строчку и добавить в конец новую информацию! Но у меня как то не получилось функцию написать, у меня при 30 ничего не стералось а продолжает дальше записываться :(

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования