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]   

> Без описания
bems
Отправлено: 03 Апреля, 2010 - 19:22:04
Post Id


Новичок


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


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




Я что-то уж совсем облинился, думать не хочу, ибо сразу както и ничего придумать по этому поводу не могу, а голову ломать на вечер не хочется) Поэтому решил посмотреть, если ли здесь люди которые уже сталкивались с этим вопросом и могли бы подкинуть идею по воплощению. Суть вот в чём:

Сделал обычный вывод постранично:
PHP:
скопировать код в буфер обмена
  1.  
  2.     $page = $_GET['page'];
  3.     if(empty($_GET['page'])){
  4.       $page=0;
  5.     }
  6.     $t = mysql_query("SELECT count(*) FROM comments");
  7.     $result = mysql_fetch_array($t);
  8.     $total = $result[0];
  9.     $pages = ceil($total/5);
  10.     if($page == 0){
  11.       $start = 0;
  12.     }
  13.     else{
  14.       $start = $page*5;
  15.     }
  16.     for ($i=0; $i<$pages; $i++){
  17.       $str = $i+1;
  18.       if($page!=$i){
  19.       echo 'номер страницы и ссылка';
  20.       }
  21.       else{
  22.         echo 'просто номер страницы';
  23.       }
  24.     }
  25.  



Таким образом высчитывается кол-во страниц, учитывая что на одной должно быть 5 комментариев. Так вот, страницы выводятся просто по порядку:

1,2,3,4,5,6,7,8,9,(10),11,12,13,14,15 итд, ну смотря сколько их вообще. В скобках я указал страницу на которой вы находитесь сейчас.


Так вот, может ли мне кто-нибудь подкинуть алгоритм, чтобы для того чтоб не выводить огромный массив страниц, выводить их так:

1...8,9,(10),11,12...15

Тоесть всегда выводить только первую, последнюю и две соседние от той на которой вы сейчас находитесь страницы. Если же их всего например 5 и вы находитесь на 5, то так.

1..3,4,(5)

Ну я думаю вы поняли, попытался подробнее объяснить) Подскажите плиз, а то на ночь не думается как-то Закатив глазки
 
 Top
Ch_chov
Отправлено: 03 Апреля, 2010 - 19:28:02
Post Id



Постоянный участник


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


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




 
 Top
bems
Отправлено: 03 Апреля, 2010 - 20:13:13
Post Id


Новичок


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


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




Мммм, спасибо, хоть буду значть что это называется пагинатор XD
 
 Top
AxqpxA
Отправлено: 04 Апреля, 2010 - 17:18:14
Post Id



Новичок


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


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




PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3.  
  4. function pages_navig($start,$conf_navig,$total_comm,$link_page){
  5.  
  6. $ba = ceil($total_comm/$conf_navig);
  7. $ba2 = $ba*$conf_navig-$conf_navig;
  8. $asd = $start-($conf_navig*3);
  9. $asd2 = $start+($conf_navig*4);
  10.  
  11. if ($asd < $total_comm && $asd > 0)
  12. {
  13. echo ' <a href="'.$link.'/0"><span>1</span></a> <span>...</span>';
  14. }
  15.  
  16. for ($i = $asd; $i < $asd2;)
  17. {
  18. if ($i < $total_comm && $i >= 0)
  19. {
  20. $ii = floor(1+$i / $conf_navig);
  21. if ($start == $i)
  22. {
  23. echo ' <span><b>'.$ii.'</b></span>';
  24. }
  25. else
  26. {
  27. echo ' <a href="'.$link.'/'.$i.'"><span>'.$ii.'</span></a>';
  28. }
  29. }
  30. $i = $i+$conf_navig;
  31. }
  32. if($asd2 < $total_comm)
  33. {
  34. echo ' <span>...</span> <a href="'.$link.'/'.$ba2.'"><span>'.$ba.'</span></a>';
  35. }
  36. }
  37.  
  38. ?>
  39.  


$start - Текущая страница
$conf_navig - Колличество выводимых коментов на страницу
$total_comm - Всего коментов
$link_page - Страница

(Отредактировано автором: 04 Апреля, 2010 - 17:29:45)

 
 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