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
Форумы портала PHP.SU :: Версия для печати :: Постраничное отображение списка из текстового файла
Форумы портала PHP.SU » PHP » Напишите за меня, пожалуйста » Постраничное отображение списка из текстового файла

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

1. Taedh - 09 Октября, 2008 - 14:21:23 - перейти к сообщению
Есть текстовый файлик примерно в 60000 строк Улыбка
Строки поделены на столбцы табуляцией.
В итоге надо выводить на страницу по 100 строк, с возможностью выбора страницы.

Помогите люди добрые Улыбка
2. Champion - 09 Октября, 2008 - 14:33:58 - перейти к сообщению
функция fgets() - не очень хорошо, т.к. будет медленно. file() - не очень хорошо, т.к. файл большой. постраничный вывод - обсуждался недавно; поищите
(Добавление)
http://forum.php.su/topic.php?fo...60&topic=387 - вот оно. в коды в начале темы вчитываться наверное не надо
3. Taedh - 09 Октября, 2008 - 23:08:14 - перейти к сообщению
В общем в итоге есть такой вот код:
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 > >>

Заранее спасибо за помощь
4. Champion - 10 Октября, 2008 - 09:26:36 - перейти к сообщению
file(), на сколько я знаю, требует строку - имя файла
(Добавление)
а так вроде ничего в глаза не бросается
(Добавление)
а чтоб ссылки на страницы выводились по 10 - просто еще одну переменную, в которую определяем текущий десяток...
5. valenok - 10 Октября, 2008 - 10:20:54 - перейти к сообщению
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.  
6. Taedh - 10 Октября, 2008 - 11:19:07 - перейти к сообщению
valenok, какой-то косяк в выводе ссылок страниц твоём, ибо он вообще аж подвешивает ИЕ Огорчение
(Добавление)
Косяк с подвисанием я исправил добавлением в цикл $page++;
А вот вывод по 10 ссылок на страницы, как в примере, всё ещё стоит под вопросом..
7. valenok - 10 Октября, 2008 - 12:44:38 - перейти к сообщению
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. }
8. Taedh - 10 Октября, 2008 - 13:04:42 - перейти к сообщению
ммм, тут глюк какой-то, ибо когда переходишь на любую страницу с 6 по 9, то ссылки вот так получаются : " -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7 8 9 "
(Добавление)
Всё исправил Улыбка

Спасибо большое за помощь Улыбка

 

Powered by ExBB FM 1.0 RC1