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]   

> Описание: как правильно вывести ссылки?
ninjajnin
Отправлено: 07 Сентября, 2015 - 23:41:56
Post Id


Новичок


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


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




Здравствуйте, друзья!
Помощи прошу вашей вот по какому вопросу(весь код описывать не буду, только основное):
Есть записи в базе, и я вывожу эти записи на страницу по n штук, все с этим ок, но есть задача сделать постраничную навигацию по этим записям, например, на странице 1 записи 1-10, а на странице 2 соответственно 11-20...
Так вот, я нашел код, и более-менее разобрался в нем, но не совсем.
Ссылки эти выводятся на 6 штук (например если я на странице 10, то я вижу рядом смежные ссылки, т.е. 9 и 11), а мне надо, что бы выводились все возможное количество страниц, т.е. если у меня 5 страниц, то я должен видеть 1 2 3 4 5, а не 1 2 3 ... как я получаю в ходе этого кода:

PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $database = "database" ;
  4. $table = "users" ;
  5. $users_on_page = "1";
  6.  
  7. mysql_select_db($DB_NAME);
  8.  
  9. $count = mysql_fetch_array(mysql_query("select count(id) from `$table`")) ;
  10. $total = ceil($count[0]/$users_on_page);
  11.  
  12. if(empty($_GET["p"])){$_GET["p"] = "1" ;}
  13. $p = $_GET["p"] ;
  14.  
  15. if(!ctype_digit($p) or $p > $total) : $p = "1" ;
  16. endif;
  17.  
  18. $first = $p*$users_on_page-$users_on_page ;
  19. $result=mysql_query("select * from `$table` ORDER BY id DESC limit $first, $users_on_page") ;
  20.  
  21. while($data=mysql_fetch_array($result)) {
  22.         print $data[0].' ' ;
  23.         print $data[1].' ' ;
  24.         print $data[2].'<br>' ;
  25.         print $data[3].'<br><br>' ;
  26. }
  27.  
  28. if($total>1):
  29.         #две назад
  30.         print "<br><div>";
  31.         if(($p-2)>0):
  32.           $ptwoleft="<a href='index.php?p=".($p-2)."'>".($p-2)."</a>  ";
  33.         else:
  34.           $ptwoleft=null;
  35.         endif;
  36.                        
  37.         #одна назад
  38.         if(($p-1)>0):
  39.           $poneleft="<a href='index.php?p=".($p-1)."'>".($p-1)."</a>  ";
  40.           $ptemp=($p-1);
  41.         else:
  42.           $poneleft=null;
  43.           $ptemp=null;
  44.         endif;
  45.                        
  46.         #две вперед
  47.         if(($p+2)<=$total):
  48.           $ptworight="  <a href='index.php?p=".($p+2)."'>".($p+2)."</a>";
  49.         else:
  50.           $ptworight=null;
  51.         endif;
  52.                        
  53.         #одна вперед
  54.         if(($p+1)<=$total):
  55.           $poneright="  <a href='index.php?p=".($p+1)."'>".($p+1)."</a>";
  56.           $ptemp2=($p+1);
  57.         else:
  58.           $poneright=null;
  59.           $ptemp2=null;
  60.         endif;         
  61.                        
  62.         # в начало
  63.         if($p!=1 && $ptemp!=1 && $ptemp!=2):
  64.           $prevp="<a href='index.php'><<</a> ";
  65.         else:
  66.           $prevp=null;
  67.         endif;  
  68.                        
  69.         #в конец (последняя)
  70.         if($p!=$total && $ptemp2!=($total-1) && $ptemp2!=$total):
  71.           $nextp=" ...  <a href='index.php?p=".$total."'".$total."' >$total</a>";
  72.         else:
  73.           $nextp=null;
  74.         endif;
  75. // здесь текущая страница выделяется жирным    
  76.         print "<br>".$prevp.$ptwoleft.$poneleft.'<span><b>'.$p.'</b></span>'.$poneright.$ptworight.$nextp;
  77.         print "</div>";
  78. endif;
  79.  


Как выводить $p? Подскажите пожалуйста!

(Отредактировано автором: 07 Сентября, 2015 - 23:59:15)

 
 Top
andrewkard
Отправлено: 08 Сентября, 2015 - 10:24:17
Post Id


Участник


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


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




ninjajnin
Примерно так:
PHP:
скопировать код в буфер обмена
  1.  
  2. $total = 20;
  3. $html = '';
  4.  
  5. for($i=1; $i< $total;$i++){
  6.     $html .= "<a href='index.php?p=".$i."'>".$i."</a> ";
  7. }
  8. echo $html;
  9.  

Желательно учитывать к-во страниц, и если их очень много, разрывать "...", иначе они заполонят всю страницу Улыбка
 
 Top
ninjajnin
Отправлено: 08 Сентября, 2015 - 20:06:35
Post Id


Новичок


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


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




все работает, спасибо!
все просто, оказывается...
только как быть с выделением жирным текущей страницы?
 
 Top
DlTA
Отправлено: 08 Сентября, 2015 - 21:08:17
Post Id



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


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


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




))
если текущая страница то выделить жирным конец условия
(Добавление)
http://php.net/manual/ru/control...uctures.else.php
 
 Top
ninjajnin
Отправлено: 09 Сентября, 2015 - 09:13:46
Post Id


Новичок


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


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




что-то я не уловил...
вроде что-то получилось в начале, но что-то тут не так

PHP:
скопировать код в буфер обмена
  1.  
  2. if ($_GET["p"]) {
  3.         echo  "очередность страниц с выделенной текущей";
  4. }
  5.  

здесь у меня затык в общем, подскажите чайнику, как все же выделить текущую в очередность всех??

(Отредактировано автором: 09 Сентября, 2015 - 20:43:41)

 
 Top
ninjajnin
Отправлено: 25 Сентября, 2015 - 09:28:01
Post Id


Новичок


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


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




да все проще простого, разобрался...


PHP:
скопировать код в буфер обмена
  1.  
  2.  
  3. $p // текущая страница
  4. $page_total // массив страниц
  5.  
  6. echo str_replace ($p, '<b>'.$p.'</b>', $page_total) ;
  7.  
 
 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