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]   

> Описание: Помогите, люди добрые :)
Taedh
Отправлено: 09 Октября, 2008 - 14:21:23
Post Id


Новичок


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


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




Есть текстовый файлик примерно в 60000 строк Улыбка
Строки поделены на столбцы табуляцией.
В итоге надо выводить на страницу по 100 строк, с возможностью выбора страницы.

Помогите люди добрые Улыбка
 
 Top
Champion Супермодератор
Отправлено: 09 Октября, 2008 - 14:33:58
Post Id



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


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


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




функция fgets() - не очень хорошо, т.к. будет медленно. file() - не очень хорошо, т.к. файл большой. постраничный вывод - обсуждался недавно; поищите
(Добавление)
http://forum.php.su/topic.php?fo...60&topic=387 - вот оно. в коды в начале темы вчитываться наверное не надо
 
 Top
Taedh
Отправлено: 09 Октября, 2008 - 23:08:14
Post Id


Новичок


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


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




В общем в итоге есть такой вот код:
CODE (text):
скопировать код в буфер обмена
  1. <html>
  2. <head>
  3. </head>
  4.  
  5. <body>
  6.  
  7. <table cellspacing="0" cellpadding="0" border="1">
  8.  
  9. <?php
  10.  
  11. $dat = 'data.txt';
  12.  
  13. $file = file ( $dat );  
  14. $total = count ( $file );  
  15.  
  16. $perPage = 200;
  17.  
  18. $number = empty ( $_GET['number'] ) ? $perPage : $_GET['number'];
  19.  
  20.  
  21.  
  22. for ( $i = 0; $i < $total; $i++ ) {  
  23.    if ($i >= ( $number - $perPage ) AND $i < $number ){
  24.  
  25.       print '<tr><td width="190">';
  26.       print implode( '</td><td width="210">', explode ( "       ", $file[$i] ) ) . '
  27. ';  
  28.         print '</td></tr>';
  29.        
  30.    }  
  31. }  
  32.  
  33.       print "</table>";
  34.  
  35. //Вывод ссылок страниц
  36. ######
  37. if ( $perPage < $total ) {  
  38.    $y = 1;
  39.    $c = 1;  
  40.    $num = $perPage;  
  41.    while ( $total > ( $num - ( $perPage ) ) ) {  
  42.       if ( ( $number - ( $perPage - 1 ) ) == $y AND $number == $num){  
  43.          print "$c .. ";  
  44.       } else {
  45.          print "<a href=\"222.php?number=$num\">$c</a> .. \n";  
  46.       }  
  47.       $num += $perPage;  
  48.       $y += $perPage;  
  49.       $c++;  
  50.    }
  51. }
  52. ######  
  53. ?>
  54.  
  55.  
  56. </body>
  57. </html>


Вопрос встаёт в том, чтобы сделать вывод ссылок примерно в таком виде:
<< < 1/55 2 3 4 5 6 7 8 9 10 > >>

Заранее спасибо за помощь

(Отредактировано автором: 09 Октября, 2008 - 23:12:34)

 
 Top
Champion Супермодератор
Отправлено: 10 Октября, 2008 - 09:26:36
Post Id



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


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


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




file(), на сколько я знаю, требует строку - имя файла
(Добавление)
а так вроде ничего в глаза не бросается
(Добавление)
а чтоб ссылки на страницы выводились по 10 - просто еще одну переменную, в которую определяем текущий десяток...
 
 Top
valenok
Отправлено: 10 Октября, 2008 - 10:20:54
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




PHP:
скопировать код в буфер обмена
  1. <?
  2. for ( $i = 0; $i < $total; $i++ ) {
  3. if ($i >= ( $number - $perPage ) AND $i < $number ){
  4.  
  5. print '<tr><td width="190">';
  6. print implode( '</td><td width="210">', explode ( " ", $file[$i] ) ) . '
  7. ';
  8. print '</td></tr>';
  9.  
  10. }
  11. }


на


PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3.  
  4. $number = min($number,$total);
  5.  
  6. for ( $i =   ( $number - $perPage ); $i < $number; $i++ )
  7. echo '<tr><td width="190">', str_replace(' ', '</td><td width="210">', $file[$i]  ) . ' , '
  8. </td></tr>';
  9.  
  10.  




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. //Вывод ссылок страниц
  5. ######
  6. $page = 1;
  7.  
  8. while ( $total > $perPage * $page )
  9. {
  10.    if($number == $perPage * $page) echo '<b>',$page,'</b>';
  11.    else echo '<a href="?number=',($perPage * $page),'">',$page,'</a> ';
  12. }
  13.  


-----
Truly yours, Sasha.
 
My status
 Top
Taedh
Отправлено: 10 Октября, 2008 - 11:19:07
Post Id


Новичок


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


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




valenok, какой-то косяк в выводе ссылок страниц твоём, ибо он вообще аж подвешивает ИЕ Огорчение
(Добавление)
Косяк с подвисанием я исправил добавлением в цикл $page++;
А вот вывод по 10 ссылок на страницы, как в примере, всё ещё стоит под вопросом..

(Отредактировано автором: 10 Октября, 2008 - 11:24:45)

 
 Top
valenok
Отправлено: 10 Октября, 2008 - 12:44:38
Post Id



Здесь могла бы быть ваша реклама


Покинул форум
Сообщений всего: 4574
Дата рег-ции: Июль 2006  
Откуда: Israel


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




PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3. //Вывод ссылок страниц
  4. ######
  5.  
  6. $lim = min(10, ceil($total / $perPage));
  7. if(ceil($number / $perPage) > 5) $page -= 5;
  8. else $page = 1;
  9.  
  10.  
  11.  
  12. for ($page; $page<$lim; $page++  )
  13. {
  14.    if($number == $perPage * $page) echo '<b>',$page,'</b>';
  15.    else echo '<a href="?number=',($perPage * $page),'">',$page,'</a> ';
  16. }


-----
Truly yours, Sasha.
 
My status
 Top
Taedh
Отправлено: 10 Октября, 2008 - 13:04:42
Post Id


Новичок


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


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




ммм, тут глюк какой-то, ибо когда переходишь на любую страницу с 6 по 9, то ссылки вот так получаются : " -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 "
(Добавление)
Всё исправил Улыбка

Спасибо большое за помощь Улыбка
 
 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