Форум → Программирование → PHP для идиотов → Постраничный вывод из базы( Pagination)
Постраничный вывод из базы( Pagination)
-
-
20 августа 2010 г. 13:39, спустя 33 секунды
на аватарке)https://smappi.org/ - платформа по созданию API на все случаи жизни -
20 августа 2010 г. 13:44, спустя 5 минут 19 секунд
а де слоника купить мона?С возвращением, Пiха! hyperoff.ru - качественный хостинг php -
20 августа 2010 г. 13:49, спустя 4 минуты 21 секунду
<?php include_once ('mysql.class.php'); class MyclassPage extends MyBD { public $tabl_pages, //Таблица с которой работает класс $count_block, //По Сколько выводить елементов с базы на страницы $query_sel_page, //query запрос с базы даных $both_number = 2, // Количество страниц справа и слева $link_left = "", //Что выводить с лева от параметоров вывода класса в URI $link_right = "", //Что выводить с права от параметоров вывода класса в URI $conect_page = "", //Паременная соединения с базой $set_podlist, //Переменая которая получает даную страницу $link = "", //"Это ссылка впреди ссылки на страницы" $id_get = 'get', //"Это параметр указывает в каком формате выводить ссылки настраницы если get(по умолчанию то вид силки ?name=value…… если не get то вид name/value)) // "" $view_get = ""; //возвращает вид формата вывода //Запрос к базе данных вида WHERE id = 1; и сортировка protected $where, $order, $one = 1; //—————————————————————————— // Это метод определения вида URI function viwsget() { if ($this->id_get != 'get') { $this->set_podlist = ""; $this->view_get = "/$this->set_podlist"; } else { $this->view_get = "$this->set_podlist="; $this->set_podlist = $_GET[$this->set_podlist]; } } //—————————————————————————— function all_page() { $this->viwsget(); //Запрос который определяет количество записей в базе; $sql = "SELECT count(*)FROM $this->tabl_pages{$this->where}{$this->order}"; $query_pages = $this->query($sql, $this->conect_page); $all_pages = $this->get($query_pages); $all_pages = $all_pages[0]; // //Вычесляет полное количество на которых будут розмещаться блоки с БД $blockpage = ceil($all_pages / $this->count_block); // //Проверяет был ли передан параметр set_podlist(страница) if (($this->set_podlist != 0) and ($this->set_podlist <= $blockpage)) { $podlist = intval($this->set_podlist); } elseif (empty($set_podlist)) { $podlist = 1; } else $podlist = 1; // //Вычисляем с какой записе выводить страинцу $first = ($podlist - 1) * ($this->count_block); // //Даёт query запрос в БД по заданым параметрам //Обработчик пишется отдельно уже в контролере $sql1 = "SELECT * FROM $this->tabl_pages{$this->where}{$this->order} LIMIT $first,{$this->count_block}"; $this->query_sel_page = $this->query($sql1, $this->conect_page); // // Готовит к выводу $pages $pages = ""; // //$both_number равна количеству элементов с права и лева $both_number = $this->both_number; // //Выводим первую страинцу если это не первая if ($podlist != 1) { $pages .= "<a href='$this->link$this->view_get$this->one$this->link_right'>1</a> "; } // //Выводим … если страинца больше на 1 от количества элементов по бокам if ($podlist > $this->both_number + 2) { $pages .= "…"; } // //Выводим боковые элементы с лева от выводимлй записи if ($podlist > $this->both_number + 1) { for ($i = $podlist - $both_number; $i < $podlist; $i++) { $pages .= "<a href='$this->link$this->link_left$this->view_get$i$this->link_right'>$i</a> "; } } else { for ($i = 2; $i < $podlist; $i++) { $pages .= "<a href='$this->link$this->link_left$this->view_get$i$this->link_right'>$i</a> "; } } // //Выводим текущую страницу if ($podlist >= 1) { $pages .= "<a href='$this->link$this->link_left$this->view_get$podlist$this->link_right ' class = 'link_page_activ'>$podlist</a> "; } // //Выводим боковые элементы с права от выводимой записи if ($podlist + $this->both_number < $blockpage) { for ($i = $podlist + 1; $i <= $podlist + $this->both_number; $i++) { $pages .= "<a href='$this->link$this->link_left$this->view_get$i$this->link_right'>$i</a> "; } } else { for ($i = $podlist + 1; $i < $blockpage; $i++) { $pages .= "<a href='$this->link$this->link_left$this->view_get$i$this->link_right'>$i</a> "; } } //Выводим … если общее количество страниц больше текущей страницы + элементы с права +1 if ($blockpage > $podlist + $both_number + 1) { $pages .= "…"; } // //Выводим последнюю страницу if ($podlist != $blockpage) { $pages .= "<a href='$this->link$this->link_left$this->view_get$blockpage$this->link_right'>$blockpage</a> "; } return $pages; // } } ?>
Спустя 120 сек.А Вот упрощённый вариант класса работы с БД(От моего товарища Ильи )<p> <?php class MyBD { public $host=""; public $login = ""; public $password = ""; public $db=""; function connect() { mysql_connect($this->host, $this->login, $this->password); mysql_select_db($this->db); mysql_query("set names utf8") or die("set names utf8 failed"); //mysql_query("SET NAMES CP1251"); } function query($sql) { $this->connect(); if (!$result = mysql_query($sql)) { echo mysql_error() . "<br>"; echo ("ERROR BASE"); } return $result; } function get($sql) { return mysql_fetch_array($sql); } function checkpass() { $this->connect(); } function query_num_rows($sql) { return mysql_num_rows($this->query($sql)); } function is_num_rows($sql) { return mysql_num_rows($sql); } function close() { @mysql_close(); } } ?></p>
-
-
20 августа 2010 г. 14:05, спустя 15 минут 3 секунды
ukroficer, не буду много объяснять, но по сути, уже глядя на стиль написания понятно что класс говененький. И если он таки будет работать, то я рад. Но в целом он ппц как мне не нравится.
Ну и это: нужно чтоб методы отдавали на вьюшку либо массив с параметрами для построения списка страниц либо же уже готовый, но СПИСОК, а не простое перечисление ссылок. Со списком легче визуальные фишки CSS'кой намутить. Но это ИМХО. -
20 августа 2010 г. 14:09, спустя 3 минуты 49 секунд
ukroficer, не буду много объяснять, но по сути, уже глядя на стиль написания понятно что класс говененький. И если он таки будет работать, то я рад. Но в целом он ппц как мне не нравится.
Ну и это: нужно чтоб методы отдавали на вьюшку либо массив с параметрами для построения списка страниц либо же уже готовый, но СПИСОК, а не простое перечисление ссылок. Со списком легче визуальные фишки CSS'кой намутить. Но это ИМХО.
Пока жи что бы ты поменял..?Пример?Спустя 20 сек.А работает он нормально… -
20 августа 2010 г. 14:15, спустя 5 минут 49 секунд
ukroficer, http://zendframework.com/manual/ru/zend.paginator.html сравни со своим и поймешь, что Givi имел ввиду -
20 августа 2010 г. 14:18, спустя 3 минуты 31 секунду
помню таких рахдавали на phpconf 2008
а де слоника купить мона?Спустя 64 сек.http://blgo.ru/blog/2009/07/14/gopaginator/ этим мы всегда пользуемся….
а для джанги свой юзается - http://code.google.com/p/django-pagination/https://smappi.org/ - платформа по созданию API на все случаи жизни -
-
20 августа 2010 г. 14:41, спустя 12 минут 49 секунд
ды мне что в прошлое идти что ли?С возвращением, Пiха! hyperoff.ru - качественный хостинг php -
20 августа 2010 г. 15:06, спустя 24 минуты 15 секунд
а накой хрен? Может еще учимся делать ленту новостей?
Пожалуйста, авторизуйтесь, чтобы написать комментарий!