За последние 24 часа нас посетил 18091 программист и 1589 роботов. Сейчас ищет 1071 программист ...

постраницный вывод...

Тема в разделе "PHP для новичков", создана пользователем EvelRus, 10 дек 2007.

  1. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Есть код
    PHP:
    1.  
    2. /* Управление страницами */
    3. $res_sql = mysql_num_rows(mysql_query("SELECT * FROM mail"));
    4. $page = $_GET['page']; 
    5. if ($page == '')
    6.  { $page = '0'; }
    7. else
    8.  { $page = $page; }
    9.  
    10. $i1 = 25;
    11. $i2 = $page+$i1;
    12. $i3 = $page-$i1;
    13.  
    14. if ($page <= 0)
    15.  { $pages = "Предыдущая | <a href=index.php?page=$i2&sort=$sort>Следующая</a>"; }
    16. elseif ($page >= $res_sql-25)
    17.  { $pages = "<a href=index.php?page=$i3&sort_po=$sort>Предыдущая</a> | Следующая"; }
    18. else
    19.  { $pages = "<a href=index.php?page=$i3&sort_po=$sort>Предыдущая</a> | <a href=index.php?page=$i2&sort_po=$sort>Следующая</a>";
    20. }
    Он выводит записи на страницу по 25 штук... но.. но выводит их предыдущая/следующая... вопрос: как сделать из этого вывод 1/2/3/4/.... вернее оба варианта :)))
     
  2. Elkaz

    Elkaz Старожил
    Команда форума Модератор

    С нами с:
    26 июн 2006
    Сообщения:
    3.373
    Симпатии:
    0
    Адрес:
    Баку, Азербайджан
  3. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    омг... когда я не знал про LIMIT, то использовал COUNT, чтобы делать бешенные вычисления для постраничного пейджера.
    А Nemo делает полную выборку %)

    1. query -> COUNT(`id`)
    2. Делим всё на страницы по 25 строк на каждой, получаем кол-во страниц.
    3. В зависимости от текущей страницы прибавляем/убавляем 1 (учитывая максимум, минимум).
    4. Если нужно, еще эти 1.2.3.4 можно делить на 10ки, но хотя бы с этим разберись для начала
    5. Далее, в зависимости от страницы делаешь выборку 'SELECT *..... LIMIT текущая_страница,25', где 25 - кол-во элементов на выборку, текущая_страница - порядковый номер списки элементов. Т.е вся таблица делится на списки по 25 элементов.
     
  4. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    щас покажу вывод .. :)

    PHP:
    1.  
    2. $sql = mysql_query("SELECT * FROM mail ORDER BY login LIMIT $page,25");
    3. while($nextrow = mysql_fetch_array($sql))
    4. {
    5. //
    6. }
    7.  
     
  5. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Исправл :))
     
  6. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    мне надо делить на 25ятки :)))))))))))
     
  7. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Вот один из первых моих баров.

    PHP:
    1.  
    2. <?
    3. ## $maxnews[0] - колическвто новостей, $ot - номер, от которого выводятся числа (1-10), $do - до которого выводятся числа
    4.     ##$stranic - всего страниц с 5ю новостями, $str - текущая страница
    5.     if ($kolnews[0] > 5) {
    6.     echo "<tr><td class=\"novost\">";
    7.        $k = (ceil(($str/10)))*10;
    8.        $ot = $k - 9;
    9.          if ($str > 10) {
    10.            $go = $ot - 10;
    11.            echo "<a href=\"index.php?go=index&str=".$go."\"><<</a> ";
    12.          }
    13.         $do = ($k <= $stranic) ? $k : $stranic;
    14.         for ($i=$ot;$i<=$do;$i++) {
    15.           echo "<a href=\"index.php?go=index&str=".$i."\">".$i."</a> ";
    16.         }
    17.        if (($stranic > 10) and (($k + 1) <= $stranic)) {
    18.            $go = $k + 1;
    19.            echo "<a href=\"index.php?go=index&str=".$go."\">>></a> ";}
    20.        echo "</td></tr>";
    21.     }
    22. ?>
    23.  
     
  8. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    а как тогда совместить эти два кода???:)))
     
  9. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Ну блин. Ты программистом хочешь стать или простым кодером, который сдирает откуда-то код?
     
  10. EvelRus

    EvelRus Активный пользователь

    С нами с:
    16 ноя 2006
    Сообщения:
    2.168
    Симпатии:
    0
    Адрес:
    Москва
    Kreker, и то и то ;)))))