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]   

> Описание: помогите новичку...
MBmusic
Отправлено: 03 Января, 2012 - 15:40:37
Post Id


Посетитель


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


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




в общем я тут уже когдато спрашивал на эту тему, мне кидали ссылки на примеры, делал по примерам но возникла проблемка с выводом инфы......в общем у меня из базы выводит посты на стену, количество выводимых постов 5......если больше 5 то появляется следующая страница...например всего в базе 11 постов, должно выводить постранично вот так: 5, 5, 1......проблема в том что оно выводит как попало, на первой странице выводит норм, тоесть 5 постов, а на следующих как попало, тоесть есть 11 постов на первой выводит 5, а на следующей может вывести например 10 последних постов из базы

вот мой код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. $server = 'localhost'; // ИМЯ СЕРВЕРА
  2.     $user = 'root'; // ПОЛЬЗОВАТЕЛЬ - НЕ ИСПОЛЬЗУЙТЕ ROOT ДЛЯ ВАШЕЙ ЖЕ БЕЗОПАСНОСТИ
  3.     $pass = 'root'; // ПАРОЛЬ ПОЛЬЗОВАТЕЛЯ
  4.  
  5.     $db = 'primer'; // БАЗА ДАННЫХ
  6.     $table = 'primer'; // НАЗВАНИЕ ТАБЛИЦЫ
  7.  
  8.     $chislo = 5; // ЧИСЛО СООБЩЕНИЙ НА СТРАНИЦЕ
  9.  
  10.     // ДЛЯ УДОБСТВА ОБОЗНАЧИМ ПЕРЕМЕННУЮ С ТЕКСТОМ ОШИБКИ
  11.     $text_error = '<br />Ошибочка вышла!';
  12.  
  13.     // СОЕДЕНИМСЯ С MySQL
  14.     $connect = mysql_connect ($server, $user, $pass);
  15.     if (!$connect) {
  16.     echo $text_error;
  17.     exit;
  18.     }
  19.  
  20.     // СОЕДЕНИЯЕМСЯ С БАЗОЙ ДАННЫХ
  21.     $select = mysql_select_db($db);
  22.     if (!$select) {
  23.     echo $text_error;
  24.     exit;
  25.     }
  26.  
  27.  
  28.     // СОЗДАЁМ ЗАПРОС
  29.     $result = mysql_query("SELECT * from $table ORDER by id desc");
  30.     // СЧИТАЕМ КОЛЛИЧЕСТВО ЗАПИСЕЙ В ТАБЛИЦЕ - У МЕНЯ ИХ 20
  31.     $num_rows = mysql_num_rows($result);
  32.  
  33.     // А ТЕПЕРЬ СЧИТАЕМ НА СКОЛЬКО СТРАНИЦ НАМ РАЗБИТЬ ЗАПИСИ И ВЫДЕЛЯЕМ ЦЕЛОЕ ЧИСЛО
  34.  
  35.  
  36.     // ЗДЕСЬ МЫ ПРОВЕРЯЕМ НА КАКОЙ СТРАНИЦЕ СЕЙЧАС ПОЛЬЗОВАТЕЛЬ
  37.     if (isset($_GET['str'])) {
  38.     $nav = $_GET['str'];
  39.     }
  40.     else {
  41.     $nav = 0;
  42.     }
  43.     $nav = intval($nav); // ДЛЯ ЗАЩИТЫ ОТ НЕХОРОШИХ ДЯДЕНЕК МЫ ВЫДЕЛИМ ЦЕЛУЮ ЧАСТЬ $GET['str']
  44.     echo 'Навигация: ';
  45.    
  46.         if($num_rows>$chislo){
  47.         $num_rows_ress = $num_rows/$chislo;
  48.     // А ТЕПЕРЬ ВЫВОДИМ НОМЕРА СТРАНЦ
  49.     for ($i=1; $i<$num_rows_ress; $i++) {
  50.    
  51.  
  52.  
  53.    if ($i != $nav) {
  54.    echo '<a href="'.$PHP_SELF.'?str='.$i.'">'.$i.'</a> ';
  55.     }
  56.     else {
  57.     // АКТИВНУЮ СТРАНИЦУ ДЕЛАЕМ НЕ ГИПЕРССЫЛКОЙ
  58.     echo '<span>'.$i.'</span> ';
  59.     }
  60.     }
  61.     }
  62.     echo '<hr />'; // ОТДЕЛИМ НАВИГАЦЮ ОТ КОНТЕНТА ДЛЯ НАГЛЯДНОСТИ
  63.  
  64.     // НАЧИНАЕМ ВЫВОДИТЬ САМУ ИНФОРМАЦИЮ ПОСТРАНИЧНО :)
  65.     if (!isset($_GET['str'])) {
  66.     $str = 0;
  67.     }
  68.     else {
  69.     $str = $_GET['str']*$chislo - $chislo;
  70.     }
  71.     $nomer = $str + 5;
  72.     // ФОРМИРУЕМ ЗАПРОС НУЖНОЙ НАМ ЧАСТИ ИНФОРМАЦИИ
  73.     $result = mysql_query("SELECT * from $table ORDER by id asc limit $str, $nomer");
  74.     // ИНАЧЕ ВЫВОДИМ ОШИБКУ
  75.     if (!$result) {
  76.     echo $text_error;
  77.     exit;
  78.     }
  79.  
  80.     echo '<div style="width: 40%;">';
  81.     while ($row = mysql_fetch_array($result)) {
  82.     echo '<p>'.$row['id'].' - <strong>'.$row['name'].'</strong>
  83.         '.substr($row['text'],0,100).'.. <a href="text.php?nomer='.$row['id'].'">>></a></p>';
  84.     }
  85.     echo '</div>';
  86.  
  87.     mysql_close($connect);
 
 Top
lamozavrik
Отправлено: 03 Января, 2012 - 15:49:13
Post Id



Частый гость


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


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




MBmusic пишет:
$num_rows_ress = $num_rows/$chislo;

Во первых здесь нужно округлить к большему
PHP:
скопировать код в буфер обмена
  1. $num_rows_ress = ceil($num_rows/$chislo);


Во вторых здесь
MBmusic пишет:
$result = mysql_query("SELECT * from $table ORDER by id asc limit $str, $nomer");

по моему должно быть так
PHP:
скопировать код в буфер обмена
  1. $result = mysql_query("SELECT * from $table ORDER by id asc limit $str, $chislo")


-----
Ударим крепким сном по мукам совести!
 
 Top
MBmusic
Отправлено: 03 Января, 2012 - 16:27:37
Post Id


Посетитель


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


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




lamozavrik все что ты написал помогло, НО записи из базы не все выводит, то есть с выводом на страниу по 5 постов уже нет проблем, но если допустим в базе 24 записи, то выводит токо 20, если 30, то выводит 25.......

(Отредактировано автором: 03 Января, 2012 - 16:27:54)

 
 Top
lamozavrik
Отправлено: 03 Января, 2012 - 16:32:30
Post Id



Частый гость


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


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




Вот здесь
MBmusic пишет:
for ($i=1; $i<$num_rows_ress; $i++)


сделай так:
PHP:
скопировать код в буфер обмена
  1.  
  2. for ($i=1; $i<=$num_rows_ress; $i++){
  3.  


-----
Ударим крепким сном по мукам совести!
 
 Top
MBmusic
Отправлено: 03 Января, 2012 - 16:50:26
Post Id


Посетитель


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


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




lamozavrik спасибо большое!!) получилось!)
а еще такой вопросик, если допустим в базе будет 50 постов, тоесть это будет 10 страниц, и все это дело будет не красиво смотреться, вот так: 1 2 3 4 5 6 7 8 9 10, хочу сделать что бы было красивее и удобнее, вот так например 1 2 3 ... 10, типо что бы не тянулось и не занимало много места) как такую штуку замутить?)
 
 Top
lamozavrik
Отправлено: 03 Января, 2012 - 17:16:43
Post Id



Частый гость


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


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




Ссылки на страницы нужно немного по другому формировать...Допустим тебе нужна текущая страница, три следующих страницы и три предыдущих. Вот и делаешь один цикл, который выводит три предыдущих страницы, (розумеется проверив сначала или они вообще существуют, т.к. если мы находимся на первой транице, то предыдущих нету), потом потом прилепляешь к ним текущую страницу, а потом цикл, который выводит три следующих.

Выглядит это приблизительно так:

PHP:
скопировать код в буфер обмена
  1.  
  2. $count = 3;//Количество страниц с права и с лева от текущей
  3.        
  4.         if($текущаяСтраница - 1 > 0)
  5.             $pages = '<a href="index.php?page=1"><<</a> <a href="index.php?page='.($текущаяСтраница - 1).'"><</a> ';
  6.  
  7.         for($i=$count; $i>0; $i--){
  8.             if($текущаяСтраница - 1 >= $i)
  9.                 $pages .= '<a href="index.php?page='.($текущаяСтраница - $i).'">'.($текущаяСтраница - $i).'</a> ';
  10.         }
  11.            
  12.         $pages .= '<b>['.$текущаяСтраница.']</b>';
  13.        
  14.         for($i=1; $i<=$count; $i++){
  15.             if($текущаяСтраница + $i <= $общееКолСтр)
  16.                 $pages .= ' <a href="index.php?page='.($текущаяСтраница + $i).'">'.($текущаяСтраница + $i).'</a>';
  17.         }
  18.            
  19.        
  20.         if($$текущаяСтраница < $общееКолСтр)
  21.             $pages .= ' <a href="index.php?page='.($текущаяСтраница + 1).'">></a> <a href="index.php?page='.$общееКолСтр.'">>></a> ';
  22.  
  23. echo $pages;
  24.  


Вот как то так ))


-----
Ударим крепким сном по мукам совести!
 
 Top
MBmusic
Отправлено: 03 Января, 2012 - 19:42:28
Post Id


Посетитель


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


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




lamozavrik спасибо те!) уже сделал!
 
 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