1. PHP / Говнокод #8810

    +164

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    class PAGING
    {
      var $sql,$records,$pages;
      var $page_no,$total,$limit,$first,$previous,$next,$last,$start,$end;
      function PAGING($sql,$records=9,$pages=5)
      {   global $mysqli;
        if($pages%2==0) $pages++;
        $res = $mysqli->query($sql);
        $sqlquery++;
        $total=mysqli_num_rows($res);
        $page_no=isset($_GET["p"])?$_GET["p"]:1;
        $limit=($page_no-1)*$records;
        $sql.=" limit $limit,$records";
        $first=1;
        $previous=$page_no>1?$page_no-1:1;
        $next=$page_no+1;
        $last=ceil($total/$records);
        if($next>$last)
          $next=$last;
        $start=$page_no;
        $end=$start+$pages-1;
        if($end>$last)
          $end=$last;
        if(($end-$start+1)<$pages)
        {
          $start-=$pages-($end-$start+1);
          if($start<1)
            $start=1;
        }
        if(($end-$start+1)==$pages)
        {
          $start=$page_no-floor($pages/2);
          $end=$page_no+floor($pages/2);
          while($start<$first)
          {
            $start++;
            $end++;
          }
          while($end>$last)
          {
            $start--;
            $end--;
          }
        }
        $this->sql=$sql;
        $this->records=$records;
        $this->pages=$pages;
        $this->page_no=$page_no;
        $this->total=$total;
        $this->limit=$limit;
        $this->first=$first;
        $this->previous=$previous;
        $this->next=$next;
        $this->last=$last;
        $this->start=$start;
        $this->end=$end;
      }
      function show_paging($url,$params=""){...}
    }

    Вот так вот товарищ пейджинг организует ООО)

    Запостил: aleXoid, 13 Декабря 2011

    Комментарии (12) RSS

    • такого $total = mysqli_num_rows($res); и в страшном сне не приснится
      Ответить
    • Э, ну это еще нормально так, ничего... я похуже видел)
      здесь хотя бы ЛИМИТ выставляется. ковырял код... поиск. делается выборка всей базы в массив... потом делается for ($i=$start; $i<$end; $i++) {
      и выводится только 10 элементов из массива. вот так вот. ООП опять же.
      Ответить
      • Если что, так тут сразу выбираются все записи и смотрится сколько их, а уже потом добавляется limit и новым запросом выбираются только нужные. Это ж одна из фишек =)
        Ответить
        • Да, недоглядел про выборку всех.
          А про ООП это был сарказм вообще-то)
          Ответить
    • Херня какая то. Что толку что он использует классы ООП тут и не пахнет.
      Как по моему нужно делать паджинг. Класс должен знать 1. количество страниц, количество видимых, текущую. И url куда предавать номер текущей страницы. на пример так ?page=$currPage; Идеально было бы если бы класс имер интерфейсы для указания классов css, шаблон разметки. И никакого SQL.
      Ответить
      • Да не с ООП здесь проблемы, а с головой =)
        Ответить
    • За что ж он так отступы ненавидит...
      Ответить
    • Ого, var. Ещё есть слоупоуки, которые делают ООП под 4-й похепе?
      Ответить
    • ООО?
      Ответить
      • ООО - это не про общество с ответственностью, это неудачное междометие... Типа ай, ау, ойё и пр. =)
        Ответить

    Добавить комментарий