Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: вывести последние строки из файла

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


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

> Без описания
nomak_suntown
Отправлено: 11 Сентября, 2013 - 15:00:10
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)

[+]


Вот пример
PHP:
скопировать код в буфер обмена
  1. $arr = file( "muslist/music.txt" ); // Читаем файл построчно
  2. print $arr[ rand( 0 , count( $arr ) - 1 ) ];


Скриптик выводит случайную строку из файла.
1. А как вывести вот именно последние, скажем, строк 10 из этого файла?
2. И, если можно, добавить кнопку с подгружением вывода еще 10ти, и еще 10ти.. (и все снизу-вверх, ну тоесть последние строки)
(Добавление)
Короче, привел к такому виду:
PHP:
скопировать код в буфер обмена
  1.  
  2. $count=count ($arr);
  3. for ($i=$count-1; $i>=$count-10; $i--)
  4. {
  5. $result = array_reverse($arr);
  6. echo $result[$i].'<br>';
  7. }
  8.  

Что что-то мне одно заднее мое место подсказывает, что можно сделать грамотней.. Вопрос только как))

И 2й вопрос, как сделать кнопочку типа "Загрузить еще 10 сток".. следующих, снизу вверх в файле..

(Отредактировано автором: 11 Сентября, 2013 - 15:55:24)

 
 Top
Мелкий Супермодератор
Отправлено: 11 Сентября, 2013 - 16:02:59
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




array_slice

Второй вопрос - гуглите "постраничная навигация". От того, что у вас файл, а не нормальная БД - алгоритм не меняется.


-----
PostgreSQL DBA
 
 Top
nomak_suntown
Отправлено: 11 Сентября, 2013 - 16:21:44
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)

[+]


Мелкий пишет:
array_slice

Второй вопрос - гуглите "постраничная навигация". От того, что у вас файл, а не нормальная БД - алгоритм не меняется.

Да не построчная навигация нужна.
Скажем проще: В Текстареа выводится 10 последних строк. Выше этого поля текстареа есть кнопочка "Подгрузить еще 10 строк", нажимая на которую в эту же текстареа подгружается еще +10 строк снизу вверх, точно так же. Как будто просматриваем историю.

А поводу array_slice ничего не понял. Зачем он тут, и с чем его едят. И чем он лучше)
 
 Top
Мелкий Супермодератор
Отправлено: 11 Сентября, 2013 - 16:25:25
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




nomak_suntown пишет:
Да не построчная навигация нужна.

Покажите хотя бы одно различие.
В обоих случаях деление поблочно, соответственно параметру ножно выдавать разные части целого.
Менять номер страницы или количество строк в зависимости от номера строки - какая разница?

nomak_suntown пишет:
А поводу array_slice ничего не понял.

С указанием отрицательного offset'а даёт срез N элементов с конца массива.


-----
PostgreSQL DBA
 
 Top
nomak_suntown
Отправлено: 12 Сентября, 2013 - 08:07:15
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)

[+]


Чет я наогородил.. при помощи fseek не могу считать файл с конца и установить к примеру считать только последние 10 строк ???

(Отредактировано автором: 12 Сентября, 2013 - 08:28:42)

 
 Top
nomak_suntown
Отправлено: 12 Сентября, 2013 - 12:05:54
Post Id


Гость


Покинул форум
Сообщений всего: 65
Дата рег-ции: Июль 2013  


Помог: 0 раз(а)

[+]


Помогите ((
 
 Top
alexforce2
Отправлено: 16 Сентября, 2013 - 15:23:34
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Сент. 2013  


Помог: 1 раз(а)




Я начал изучать ПХП совсем недавно, предлагаю следующий вариант решения задачи
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. header("Content-type: text/html; charset=utf-8");
  3. ?>
  4. <html>
  5. <head>
  6.   <title>PAGER</title>
  7. </head>
  8. <body>
  9. <a href="<?PHP echo $_SERVER['PHP_SELF'].'?msg=10' ?>">Вывести</a> ещё 10 строк<br>
  10. <?PHP
  11. $arr=array_reverse(file("msg.txt"));
  12. $cnt=10;
  13. $cntMsg=0;
  14. if(isset($_GET['msg'])){
  15.         if(!isset($_SESSION['cnt'])){
  16.                 $cnt+=$_GET['msg'];
  17.                 $_SESSION['cnt']=$cnt;
  18.         }else{
  19.                 $_SESSION['cnt']+=$_GET['msg'];
  20.                 $cnt=$_SESSION['cnt'];
  21.         }
  22.         if($cnt>=(count($arr)-1)){
  23.                 $cnt=(count($arr)-1);
  24.                 $_SESSION['cnt']=$cnt;
  25.         }
  26. }
  27.  
  28. while($cntMsg<=$cnt){
  29.         echo $arr[$cntMsg];
  30.         $cntMsg++;
  31. }
  32. ?>
  33. </body>
  34. </html>

(Отредактировано автором: 16 Сентября, 2013 - 15:24:16)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


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



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB