Помощник
|
Сортировка страниц по 10 обзоров на каждой? как сделатЬ?, Как сортировать страници? |
ThanDdoR
|
Сообщение
#1
|
||
|
|
||
|
|||
ZiTosS |
23.12.2008, 2:15;
Ответить: ZiTosS
Сообщение
#2
|
|
Из БД очень просто! Есть такой параметр как LIMIT - ограничивает отбор записей с какой-то, определённым количеством.
SELECT * FROM news ORDER BY date LIMIT {$start},{$count} Переменная $count хранится в конфиге и обозначает количество выводимых записей на страницу(из запроса) Переменная $start постоянно меняется в зависимости от выбранной страницы $start = $count * intval($_GET['page']); Страницы для обработки формируются с 0. Не стоит так же забывать, что сначала нам нужно определить количество страниц, чтобы MySQL случайно не выдал ошибку при обращении к несуществующей странице. (Например пользователь может в строке браузера ввести номер страницы которой нет, тогда должно быть условие на проверку отрицательности передаваемого числа, и максимума страниц) Если вы так захотите, могу выложить класс для работы с постраничной навигацией |
|
|
ThanDdoR
|
Сообщение
#3
|
|
я просто сделаю проверку через условие и если такой страници не будет ошибки тоже не будет
оооооо. выложи пожалуйста ) |
|
|
FordogeN |
23.12.2008, 11:50;
Ответить: FordogeN
Сообщение
#4
|
|
Если вы так захотите, могу выложить класс для работы с постраничной навигацией Выкладуй, не помешает -------------------- |
|
|
ZiTosS |
24.12.2008, 1:19;
Ответить: ZiTosS
Сообщение
#5
|
|
pages.class.php
[php]<?php class pages{ /* параметры класса */ var $pagename; var $totalpages; var $recordsperpage; var $maxpagesshown; var $currentstartpage; var $currentendpage; var $currentpage; //first and last inactive var $firstinactivespan; var $lastinactivespan; //must match $_GET['offset'] in calling page var $firstparamname="p"; //use as "&name=value" pair for getting var $params; //text for navigation var $strfirst = "[В начало]"; var $strlast = "[В конец]"; //for error reporting var $errorstring; /*конструктор - вызывается при создании объекта класса*/ function pages($pagename, $totalrecords, $recordsperpage, $recordoffset, $maxpagesshown=4){ $this->pagename=$pagename; $this->recordsperpage=$recordsperpage; $this->maxpagesshown=$maxpagesshown; //already urlencoded if(!$this->checkRecordoffset($recordoffset, $recordsperpage)){ echo $this->errorstring; exit; } $this->setTotalPages($totalrecords, $recordsperpage); $this->calculateCurrentPage($recordoffset, $recordsperpage); $this->createInactiveSpans(); $this->calculateCurrentStartPage(); $this->calculateCurrentEndPage(); } function setInactiveSpanName($name){ $this->inactivespanname=$name; //call function to rename span $this->createInactiveSpans(); } /* Занести параметр */ function setFirstParamName($name){ $this->firstparamname=$name; } /* Вернуть параметр */ function getFirstParamName(){ return $this->firstparamname; } /* Формирование и вывод всего - Шаблон вывода */ function getNavigator(){ //wrap in div tag $strnavigator= "<div>"; //loop through displayed pages from $currentstart $strnavigator.=$this->getPageNumberDisplay(); for($x=$this->currentstartpage;$x<$this->currentendpage;$x++){ //make current page inactive if($x==$this->currentpage){ $strnavigator.= " <span><b>"; $strnavigator.= $x+1; $strnavigator.= "</b></span> "; }else{ $strnavigator.= $this->createLink($x, $x+1); } } $strnavigator.="<br>"; //output movefirst button if($this->currentpage == 0){ $strnavigator.=$this->firstinactivespan; }else{ $strnavigator.= $this->createLink(0, $this->strfirst); } $strnavigator.=" <b>: :</b> "; //move last button if($this->currentpage==$this->totalpages-1){ $strnavigator.= $this->lastinactivespan; }else{ $strnavigator.=$this->createLink($this->totalpages -1, $this->strlast); } $strnavigator.= "</div>"; return $strnavigator; } /* Создание ссылок-страниц */ function createLink($offset, $strdisplay ){ $strtemp= "<a href=\"?$this->pagename&$this->firstparamname="; $strtemp.= $offset; $strtemp.= "$this->params\">$strdisplay</a>\n"; return $strtemp; } /* формирование HTML общего числа страниц */ function getPageNumberDisplay(){ $str= "<span>Страницы ($this->totalpages) → </span>"; return $str; } /* Высчитать общее число страницы */ function setTotalPages($totalrecords, $recordsperpage){ $this->totalpages=ceil($totalrecords/$recordsperpage); } /* Правильность введённой страницы */ function checkRecordoffset($recordoffset, $recordsperpage){ $bln=true; //if recordoffset=0 won't show error if($recordoffset%$recordsperpage!=0){ $this->errorstring="Error - Offset not a multiple of records per page."; $bln=false; } return $bln; } /* Текущая страница */ function calculateCurrentPage($recordoffset, $recordsperpage){ $this->currentpage=$recordoffset/$recordsperpage; } /* Формирование [первая] и [последняя] неактивных */ function createInactiveSpans(){ $this->lastinactivespan="<span>$this->strlast</span>\n"; $this->firstinactivespan="<span>$this->strfirst</span>\n"; } /* Вывод предыдущих n страниц перед текущей страницей, если лимит превышает первую страницу, то вывод будет идти с первой страницы */ function calculateCurrentStartPage(){ $this->currentstartpage = $this->currentpage - $this->maxpagesshown; if($this->currentstartpage < 0) $this->currentstartpage = 0; } /* Вывод последующих n страниц после текущей страницы, если лимит превышает общее число страниц, то вывод будет идти до последней */ function calculateCurrentEndPage(){ $this->currentendpage = $this->currentpage + $this->maxpagesshown; if($this->currentendpage > $this->totalpages) $this->currentendpage = $this->totalpages; } } ?>[/php] Работа с классом [php]................................ $page = @intval($_GET['page']); if (empty($page)){ $page = 1; $record = 0; } else { //calc record offset $record = $page * $perpages; } ........................................ // Работа с базой, вывод данных постраничных и другой информации какой нужно ............................................. $totalrecords = mysql_query($query); //Запрос для определения общего числа записей. $numpages = ceil($totalrecords/$perpages); /* Если страниц больше 1 */ if($numpages > 1){ /*Постраничный навигатор*/ $nav = new pages("index.php",$totalrecords, $perpages, $record, 3); /*левый параметр, общее количество записей, сколько записей на страницу, с какой записи считать, сколько страниц выводить до и после текущей*/ echo $nav->getNavigator(); // Вывод навигатора страниц } ..................................[/php] |
|
|
ThanDdoR
|
Сообщение
#6
|
|
Нефига себе
Сенк |
|
|
ZiTosS |
24.12.2008, 17:29;
Ответить: ZiTosS
Сообщение
#7
|
|
Всегда пожалуйста. Я просто купил себе книгу PHP 5 ООП и прочитал её от корки до корки. Разобрал примеры. Это один из примеров подогнанный под мои нужды
Поблагодарили: (0) |
|
|
FordogeN |
25.12.2008, 11:36;
Ответить: FordogeN
Сообщение
#8
|
|
хм... а она в цифровом виде?
-------------------- |
|
|
ZiTosS |
25.12.2008, 19:02;
Ответить: ZiTosS
Сообщение
#9
|
|
Вида
[в начало] [предыдущая] 1 2 3 4 5 ... [следующая] [в конец] [предыдущая] и [следующая] убрал для своих нужд, не нужны они мне были, можно вернуть |
|
|
gaaarfild |
5.11.2009, 14:50;
Ответить: gaaarfild
Сообщение
#10
|
|
Я так думаю, вопрос был про формат книги! =)
|
|
|
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Большие ставки для кликов в Я.Директ. Как удешевить? | 2 | rownong27 | 1120 | 26.3.2024, 14:13 автор: knezevolk |
|
Как вы бросили работу и перешли на заработок с сайтов? | 12 | uahomka | 2291 | 25.3.2024, 6:52 автор: Skyworker |
|
Как отозвать банковский платеж фрилансеру? | 28 | metvekot | 3917 | 25.3.2024, 6:34 автор: Skyworker |
|
Как вывести деньги в Украине с заблокированного Юмани ? | 23 | freeax | 3644 | 24.3.2024, 20:55 автор: Liudmila |
|
Через какой браузер и как можно найти в кэшэ браузера видео | 10 | Room | 1935 | 23.3.2024, 7:41 автор: Room |
Текстовая версия | Сейчас: 29.3.2024, 3:18 |