X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
> Сортировка страниц по 10 обзоров на каждой? как сделатЬ?, Как сортировать страници?
ThanDdoR
ThanDdoR
Topic Starter сообщение 23.12.2008, 0:43; Ответить: ThanDdoR
Сообщение #1


Доброе время суток.
У меня возник такой вопрос вот содержит Бд у меня 100 статей
Я на 1-вую страницу вывожу 10
А как сделать чтоб дальше можно было листать стринци и на каждой из них было по 10 статей
тоесть 100 статей, розместить на 10 страницах

как реализовать такой вывод из бд?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
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
ThanDdoR
Topic Starter сообщение 23.12.2008, 10:06; Ответить: ThanDdoR
Сообщение #3


я просто сделаю проверку через условие и если такой страници не будет ошибки тоже не будет
оооооо. выложи пожалуйста )
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
сообщение 23.12.2008, 11:50; Ответить: FordogeN
Сообщение #4


(ZiTosS @ 23.12.2008, 3:15) *
Если вы так захотите, могу выложить класс для работы с постраничной навигацией ;)

Выкладуй, не помешает


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
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) &rarr; </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
ThanDdoR
Topic Starter сообщение 24.12.2008, 10:50; Ответить: ThanDdoR
Сообщение #6


Нефига себе
Сенк
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 24.12.2008, 17:29; Ответить: ZiTosS
Сообщение #7


Всегда пожалуйста. Я просто купил себе книгу PHP 5 ООП и прочитал её от корки до корки. Разобрал примеры. Это один из примеров подогнанный под мои нужды ;)


Поблагодарили: (0)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
FordogeN
FordogeN
сообщение 25.12.2008, 11:36; Ответить: FordogeN
Сообщение #8


хм... а она в цифровом виде?


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
ZiTosS
ZiTosS
сообщение 25.12.2008, 19:02; Ответить: ZiTosS
Сообщение #9


Вида
[в начало] [предыдущая] 1 2 3 4 5 ... [следующая] [в конец]

[предыдущая] и [следующая] убрал для своих нужд, не нужны они мне были, можно вернуть ;)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
gaaarfild
gaaarfild
сообщение 5.11.2009, 14:50; Ответить: gaaarfild
Сообщение #10


Я так думаю, вопрос был про формат книги! =)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
3 страниц V   1 2 3 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Большие ставки для кликов в Я.Директ. Как удешевить?
2 rownong27 1119 26.3.2024, 14:13
автор: knezevolk
Открытая тема (нет новых ответов) Как вы бросили работу и перешли на заработок с сайтов?
12 uahomka 2289 25.3.2024, 6:52
автор: Skyworker
Открытая тема (нет новых ответов) Как отозвать банковский платеж фрилансеру?
28 metvekot 3913 25.3.2024, 6:34
автор: Skyworker
Открытая тема (нет новых ответов) Как вывести деньги в Украине с заблокированного Юмани ?
23 freeax 3639 24.3.2024, 20:55
автор: Liudmila
Открытая тема (нет новых ответов) Через какой браузер и как можно найти в кэшэ браузера видео
10 Room 1933 23.3.2024, 7:41
автор: Room


 



RSS Текстовая версия Сейчас: 28.3.2024, 23:44
Дизайн