Важная информация
Показано с 1 по 5 из 5

Тема: Сортировка строк таблицы на страницы

  1. #1 Сортировка строк таблицы на страницы 
    Разбирающийся
    Регистрация
    06.07.2011
    Сообщений
    74
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Опять у меня вопрос. Вопросов правдо много всегда задаю. Так вот. Есть таблица (в базе данных) Допустим там очень много строк. Мне нужно это по страницам. Что-бы на каждой странице было по 30 строк. Но я не пойму как определить сколько всего страниц должно быть. Допустим всего 66 строк. Посмотрев можно понять что должно быть 3 страницы. А как это может понять файл? Какая функция для этого есть?
    Я не пойму как сделать пагинацию
    Последний раз редактировалось Ultra_Dragonoid; 31.03.2012 в 13:03.
    Ответить с цитированием  
     

  2. #2  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    Код :
    SELECT * FROM tables WHERE pole1=’gthtvtyyfz’ ORDER BY pole2 LIMIT 30;
    Из таблицы tables, выбираются все записи по условию WHERE..., сортируютя в соответствии с полем pole2, их количество =30. Если написать LIMIT 30,30 будет выведено 30 записей начиная с тридцатой.
    Можно заранее посчитать количество записей (оператор COUNT)...
    Последний раз редактировалось Dimon012; 31.03.2012 в 19:41.
    Ответить с цитированием  
     

  3. #3  
    Разбирающийся
    Регистрация
    06.07.2011
    Сообщений
    74
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Спасибо, но проблема была не в этом. Хотя про LIMIT 30,30 я не знал, только про то как использовать LIMIT 30. Проблема была в том, что я не мог написать код который бы определял нужное кол-во страниц. Но я поискал функции и всё-таки нашёл нужную. Помогла функция intval(). Вот код пагинации (именно самих кнопок):
    PHP Code:
    1. <? if([Ссылки могут видеть только зарегистрированные пользователи. ]($_GET['numpage'])){$d = $_GET['numpage']; if($d == '') {$d = 1;}} else {$d = 1;}
    2. $a = [Ссылки могут видеть только зарегистрированные пользователи. ]($result); // Количество записей
    3. $aa = 30;//Количество записей на одной странице
    4. $b = $a % $aa;
    5. if ($b > 0) {
    6. $c = $a / $aa + 1;
    7. $c = [Ссылки могут видеть только зарегистрированные пользователи. ]($c);
    8. }
    9. else
    10. {
    11. $c = $a / $aa;
    12. }
    13.  
    14. if($d < 6 && $d > $c - 6) {
    15. $e = 0;
    16. do {
    17. $e++;
    18. if($e < $d){
    19. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> ";
    20. }
    21. }
    22. while($e < $d);
    23.  
    24. echo "<span class='pageButton'>$d</span> ";
    25. $e = $d + 1;
    26. if($e > $c){} else {
    27. do {
    28. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> ";
    29. $e++;
    30. }
    31. while($e < $c + 1);
    32. }
    33.  
    34. }
    35. else
    36. {
    37. if($d > 5 && $d < $c - 5) {
    38. echo "
    39. <span class='pageButton'><a href='index.php?numpage=1'>1</a></span> ... ";
    40. $e = $d - 3;
    41. do {
    42. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> ";
    43. $e++;
    44. }
    45. while($e < $d);
    46. echo "<span class='pageButton'>$d</span> ";
    47. $e = $d + 1;
    48. do {
    49. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> ";
    50. $e++;
    51. }
    52. while($e < $d + 4);
    53. echo "
    54. ...
    55. <span class='pageButton'><a href='index.php?numpage=$c'>$c</a></span>
    56. ";
    57. }
    58. else
    59. {
    60.  
    61.  
    62.  
    63.  
    64. if($d < 6 && $d < $c - 5){
    65. $e = 0;
    66. do {
    67. $e++;
    68. if($e < $d){
    69. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> ";
    70. }
    71. }
    72. while($e < $d);
    73. echo "<span class='pageButton'>$d</span> ";
    74. $e = $d;
    75. do {
    76. $e++;
    77. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> ";
    78. }
    79. while($e < $d + 4);
    80. echo "... <span class='pageButton'><a href='index.php?numpage=$c'>$c</a></span> ";
    81. }
    82.  
    83.  
    84.  
    85. if($d > 5 && $d > $c - 6) {
    86. echo "<span class='pageButton'><a href='index.php?numpage=1'>1</a></span> ... ";
    87. $e = $d - 3;
    88. do {
    89. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> "; $e++;
    90. }
    91. while($e < $d);
    92. echo "<span class='pageButton'>$d</span> ";
    93. $e = $d + 1;
    94. do {
    95. if ($e > $c) {} else {
    96. echo "<span class='pageButton'><a href='index.php?numpage=$e'>$e</a></span> "; $e++;
    97. }
    98. }
    99. while($e < $c + 1);
    100. }
    101. }
    102. }
    103. ?>

    Этот код выводит нужное количество кнопок. Но когда количество страниц очень много, все кнопки подряд выводить не удобно, поэтому я сделал что кнопки выводятся так:
    1 2 3 4 5 6 7
    1 2 3 4 5 ... 10
    1 ... 4 5 6 7 8 9 10
    1 ... 7 8 9 10 11 12 13 .. 20
    Сначала в переменную $a вношу общее кол-во записей. В переменную $aa вношу нужное количество записей на одной странице. Сначала проверяю, есть ли остаток от деления переменной $a на переменную $aa. Если есть то делю переменную $a на $aa и прибавляю единицу, потом убираю дробную часть числа с помощью функции intval(). Если остатка нет, то просто делю. Это и есть определение нужного количества страниц. Далее уже идёт вид кнопок, все эти троеточия. Там ничего менять ни надо (только ссылки нужные). Но это только кнопки. Ещё сверху есть код который определяет на какой странице мы находимся (1 строчка). То на какой странице пользователь находится помещается в переменную $d. А сам список записей писать не стал, так как его думаю будет написать легко.
    Ответить с цитированием  
     

  4. #4  
    Профи Аватар для Dimon012
    Регистрация
    09.02.2011
    Адрес
    Владивосток
    Сообщений
    850
    Сказал(а) спасибо
    29
    Поблагодарили 130 раз(а) в 108 сообщениях
    Записей в блоге
    3
    как вариант нормально, жаль не ясно какой у Вас SQL запрос.
    А вот еще вариант:
    Код :
    SELECT COUNT(*) FROM table_name
    Этот запрос выдает количество записей в таблице, или количество записей удовлетворяющих запросу, если поставить условие вместо звездочки.
    Я предпочитаю использовать этот вариант, т.к. не надо задумываться запрос одинаков за исключением оператора COUNT.
    Да в некоторых диалектах оператор COUNT можно применять без Select, если мне память не изменяет...
    Последний раз редактировалось Dimon012; 01.04.2012 в 08:59.
    Ответить с цитированием  
     

  5. #5  
    Разбирающийся
    Регистрация
    06.07.2011
    Сообщений
    74
    Сказал(а) спасибо
    2
    Поблагодарили 0 раз(а) в 0 сообщениях
    Буду знать. А запрос может быть любой. Думаю всё-таки лучше сделать запрос как вы написали
    Ответить с цитированием  
     

Информация о теме
Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Шифрование страницы
    от Ultra_Dragonoid в разделе HTML, CSS
    Ответов: 3
    Последнее сообщение: 31.12.2011, 14:24
  2. Ответов: 5
    Последнее сообщение: 15.12.2011, 22:25
  3. Ответов: 7
    Последнее сообщение: 09.12.2011, 16:06
  4. Ответов: 0
    Последнее сообщение: 07.12.2011, 22:10
  5. Ответов: 2
    Последнее сообщение: 24.05.2011, 04:37
Ваши права
  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •