За последние 24 часа нас посетили 24698 программистов и 1684 робота. Сейчас ищут 757 программистов ...

Моя попытка упростить пагинцию

Тема в разделе "Прочие вопросы по PHP", создана пользователем dcc0, 15 апр 2015.

  1. dcc0

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

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Пытаюсь упросить пагинацию, не знаю, удобен ли будет такой вариант, когда при переход, сразу на третью все номера страниц увеличиваются на 1 вперед.
    Весь код.
    Код (PHP):
    1. <?php
    2.  
    3.   define('HOST', 'localhost');
    4.      define('USER', 'root');
    5.      define('PASSWORD', '123');
    6.      define('NAME_BD', 'new');
    7.      $perpage = 5;
    8.      
    9. mysql_connect(HOST, USER, PASSWORD) or die('error! No Connection!');
    10. mysql_query("SET NAMES utf8");
    11. mysql_select_db(NAME_BD) or die('error! Check BD connection');
    12.  
    13.   if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
    14. $page = 1;
    15. } else {
    16. $page = (int) $_GET['page']; 
    17. }
    18.  $count = mysql_numrows(mysql_query('select * from  news')) or die(' Nothing happened');
    19.   $pages_count = ceil($count / $perpage); 
    20.  
    21.  if ($page > $pages_count) 
    22.  $page = $pages_count;
    23. $start_pos = ($page - 1) * $perpage; 
    24. $result = mysql_query('select * from  news order by id desc limit '.$start_pos.',  '.$perpage ) or die('error!');
    25.  
    26. while ($row = mysql_fetch_array($result)) {
    27. ?>
    28. [url="new.php?myhead=<?=$row['id']?>"]<?=$row['head']?>[/url]
    29. <?
    30. }
    31. ?>
    32. [url="pag.php?page=1"]<< [/url]
    33. [url="pag.php?page=<?=$page-4?>"] <[/url]
    34. <?
    35. $page_plus=$page-1;
    36. for ($i = 1; $i < $perpage; ++$i) { ?>
    37. [url="pag.php?page=<?=++$page_plus?>"]<?=$page_plus?>[/url]
    38. <?
    39. }
    40. ?>
    41. [url="pag.php?page=<?=$page+4?>"]> [/url]
    42. [url="pag.php?page=<?=$pages_count?>"] >>[/url]
    Строчки с подключением к БД не стал вырезать, если кто-то захочет проверить и что-нибудь дополнить.
    Это не какой-то конкретный вопрос, так, мысли :) к размышлению, так сказать.
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    а смысл?
     
  3. dcc0

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

    С нами с:
    27 июн 2014
    Сообщения:
    217
    Симпатии:
    4
    Вроде бы код наглядней и будто побыстрее, но получается, что оптимальное число для вывода 5, т.е. скрипт несколько теряет в универсальности. Добавил, чтобы при щелчке на крайнюю левую был переход на шаг назад.
    Код (Text):
    1. <?require_once 'header.html';?>
    2. <?php
    3.     if (empty($_GET['page']) || ($_GET['page'] <= 0)) {
    4.   $page = 1;
    5. } else {
    6. $page = (int) $_GET['page'];
    7. }
    8.  $count = mysql_numrows(mysql_query('select * from  news')) or die(' Nothing happened');
    9.   $pages_count = ceil($count / $perpage);
    10.  
    11.    if ($page > $pages_count)
    12.   $page = $pages_count;
    13. $start_pos = ($page - 1) * $perpage;
    14. $result = mysql_query('select * from  news order by id desc limit '.$start_pos.',  '.$perpage ) or die('error!');
    15.  
    16. while ($row = mysql_fetch_array($result)) {
    17. ?>
    18. <a href="new.php?myhead=<?=$row['id']?>"><?=$row['head']?></a>
    19. <?
    20. }
    21. mysql_free_result($result);
    22. ?>
    23. <div class="footer">
    24.  
    25. <a href="pag.php?page=1"> first  </a>
    26. <a href="pag.php?page=<?=$page-$perpage?>"> &lt;</a>
    27.  
    28. <?
    29.  $page_plus=$page-1;
    30.   for ($i = 1; $i < $perpage; ++$i) {
    31. if ($i==1 && $page > 1) {
    32. echo "<a href=\"pag.php?page=$page_plus\">$page_plus </a>";
    33. }
    34. if ($page_plus==$pages_count) {
    35. break;
    36. }
    37. ?>
    38. <a href="pag.php?page=<?=$page_plus=$page_plus+1?>"><?=$page_plus?></a>
    39. <?
    40. }
    41. ?>
    42. <a href="pag.php?page=<?=$page+$perpage?>">&gt; </a>
    43. <a href="pag.php?page=<?=$pages_count?>"> last  </a>
    44. </div>