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]   

> Описание: Разбить список на несколько страниц
BoJI4er
Отправлено: 04 Января, 2011 - 09:31:22
Post Id



Новичок


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


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




Всем привет! У меня появилась проблема в написании сайта, она не существенна но для визуального отображения сильно "не удобна"! При выводе из БД MYSQL элементов таблицы (их 43) у меня на странице отображается большой список, я бы хотел его разбить на несколько частей (допустим на 3-и, по 15 элементов на страницу) с учетом того что количество элементов таблицы может увеличиваться, и тогда будет увеличиваться количество страниц, на которые будет разбиваться вывод. То есть... это должно выглядеть приблизительно так:
Страница 1


1 элемент
2 элемент
3 элемент
4 элемент
...
13 элемент
14 элемент
15 элемент

[1 страница][2 страница][3 страница]
-------------------------------- -------------------------------- ------------------
Страница 2


16 элемент
17 элемент
18 элемент
19 элемент
...
28 элемент
29 элемент
30 элемент

[1 страница][2 страница][3 страница]

3 страница аналогична...

Я просидел над этим уже 2-е недели, ну просто мне в голову даже логическая схема "не приходит" Огорчение Помогите пожалуйста, хотя бы саму логику напишите... если будет код, то желательно с комментариями, что бы я хоть понял в чем была загвоздка Улыбка

(Отредактировано автором: 04 Января, 2011 - 10:01:58)

 
 Top
vlom
Отправлено: 04 Января, 2011 - 10:35:19
Post Id



Частый посетитель


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


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




Если понял правильно тебе необходима постраничная навигация на PHP
вот тебе две статьи которые помогут начать
http://php.su/articles/?cat=exam...les&page=062
http://php.su/articles/?cat=exam...les&page=057
 
 Top
koka
Отправлено: 04 Января, 2011 - 14:14:47
Post Id



Гость


Покинул форум
Сообщений всего: 115
Дата рег-ции: Июнь 2010  
Откуда: Россия, Ижевск


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




BoJI4er, я вот сам такой скрипт написал

PHP:
скопировать код в буфер обмена
  1.  if(!$_GET['page_id'])
  2.  
  3. {$page_over=30;
  4.  
  5. $page_start=0;}
  6.  
  7. else
  8.  
  9. {
  10.  
  11. $page_over=30*$_GET['page_id'];
  12.  
  13. $page_start=30*$_GET['page_id']-30;}
  14.  
  15. $query = "SELECT *
  16.  
  17.            FROM `table` ORDER BY `date` DESC LIMIT $page_start,$page_over ";
  18.  
  19.     $sql = mysql_query($query) or die(mysql_error());
  20.  
  21.     $num = mysql_num_rows($sql);
  22.  
  23.     $pages = $num/30;
  24.  
  25.     if (is_double($pages)){ // Если получаем не целое число
  26.  
  27.                                 $pages = (int) $pages; // Делаем его таковым
  28.  
  29.                                 $pages = $pages + 1; // И прибавляем единицу.
  30.  
  31.                 }
  32.  
  33.                 if ($pages == 0){ // Если записей нету вообще
  34.  
  35.                $pages = 1;
  36.  
  37.              }
  38.  
  39.              echo "Страница       ";
  40.  
  41.              $i = 1;
  42.  
  43.      while ($pages >= $i)
  44.  
  45.      {echo "<a href='http://rulevoi.net/file.php?page_id=$i'> <b>$i</b> </a>";
  46.  
  47.      $i++;
  48.  
  49.      }  


Но, если честно, пока особо не заморачивался этой темой, так как пока не хватает данных на две и более страниц Улыбка


-----
http://rulevoi[dot]net - запчасти для иномарок в Ижевске
 
 Top
BoJI4er
Отправлено: 06 Января, 2011 - 09:05:58
Post Id



Новичок


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


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




Спасибо за помощь, я разобрался! Правда пришлось не мало изменить Улыбка

Вот что у меня получилось в результате:

PHP:
скопировать код в буфер обмена
  1.  
  2. //соединяемся с базой данных после чего встиавляем данный код
  3.  
  4. if(!$_GET['p']) // если номер страницы не был выбран ниразу
  5.  
  6. {
  7.         $first=0;
  8. }
  9.  
  10. else
  11.  
  12. {
  13.         $first=15*$_GET['p']-15;
  14. }
  15.         $sql = mysql_query("SELECT * FROM soup");
  16.         $num = mysql_num_rows($sql); //находим количество строк в таблице
  17.         $pages = $num/15; //нахожу количество
  18.         if (is_double($pages))
  19.         { // Если получаем не целое число
  20.         $pages = (int) $pages; // Делаем его
  21.         $pages = $pages + 1; // И прибавляем единицу.
  22. }
  23. if ($pages == 0)
  24. { // Если записей нету вообще
  25.         $pages = 1;
  26. }
  27.  
  28.         $i = 1;
  29.  
  30.     $result=mysql_query("select * from soup order by id limit $first,15 ",$db); //выбираю по 15 элементов на страницу
  31.     $myrow=mysql_fetch_array($result);
  32.  
  33.         do
  34.         {
  35.         echo $myrow['title']."<br>"; //вывод элементов таблицы
  36.         }
  37.         while ($myrow=mysql_fetch_array($result));
  38.        
  39.         if (isset($_GET['p']))
  40.                 for ($j=1;$j<$pages+1;$j++)
  41.         {
  42.         echo "<a href='bd.php?p=$j'>  $j  </a>";//ссылка на переход по странице если страница уже была выбрана хотя бы 1 раз
  43.         echo "<br>";
  44.         }
  45.        
  46.        
  47.         if (!isset($_GET['p']))
  48.                 for ($j=1;$j<$pages+1;$j++)
  49.         {
  50.         echo "<a href='bd.php?p=$j'>  $j  </a>"; //ссылка на переход по странице если страница не была выбранна ниразу!
  51.         echo "<br>";
  52.         }
  53.  
  54.  
 
 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