Перейти к содержимому

Реферальная программа Мегаплана


Сортировка страниц по 10 обзоров на каждой? как сделатЬ?

#1 Arukard1

Arukard1
  • Пользователь
  • 193 сообщений
  • Репутация: 0
0

Отправлено 22 Декабрь 2008 - 23:43

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

как реализовать такой вывод из бд?

 

 

  • 0

#2 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 23 Декабрь 2008 - 01:15

Из БД очень просто! Есть такой параметр как LIMIT - ограничивает отбор записей с какой-то, определённым количеством.
SELECT * FROM news ORDER BY date LIMIT {$start},{$count}

Переменная $count хранится в конфиге и обозначает количество выводимых записей на страницу(из запроса)
Переменная $start постоянно меняется в зависимости от выбранной страницы
$start = $count * intval($_GET['page']);
Страницы для обработки формируются с 0. Не стоит так же забывать, что сначала нам нужно определить количество страниц, чтобы MySQL случайно не выдал ошибку при обращении к несуществующей странице. (Например пользователь может в строке браузера ввести номер страницы которой нет, тогда должно быть условие на проверку отрицательности передаваемого числа, и максимума страниц)

Если вы так захотите, могу выложить класс для работы с постраничной навигацией ;)
  • 0

#3 Arukard1

Arukard1
    Topic Starter
  • Пользователь
  • 193 сообщений
  • Репутация: 0

Отправлено 23 Декабрь 2008 - 09:06

я просто сделаю проверку через условие и если такой страници не будет ошибки тоже не будет
оооооо. выложи пожалуйста )
  • 0

#4 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 23 Декабрь 2008 - 10:50

Если вы так захотите, могу выложить класс для работы с постраничной навигацией ;)

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

Как настроить выдержку и диафрагму зеркального фотоаппарата



#5 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 24 Декабрь 2008 - 00:19

pages.class.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;
}
}
?>


Работа с классом
................................

$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(); // Вывод навигатора страниц

}

..................................

  • 0

#6 Arukard1

Arukard1
    Topic Starter
  • Пользователь
  • 193 сообщений
  • Репутация: 0

Отправлено 24 Декабрь 2008 - 09:50

Нефига себе
Сенк
  • 0

#7 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 24 Декабрь 2008 - 16:29

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

#8 FordogeN

FordogeN
  • Пользователь
  • 1 414 сообщений
  • Репутация: 0

Отправлено 25 Декабрь 2008 - 10:36

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


  • 0

Как настроить выдержку и диафрагму зеркального фотоаппарата



#9 ZiTosS

ZiTosS
  • Пользователь
  • 5 148 сообщений
  • Репутация: 8

Отправлено 25 Декабрь 2008 - 18:02

Вида
[в начало] [предыдущая] 1 2 3 4 5 ... [следующая] [в конец]
[предыдущая] и [следующая] убрал для своих нужд, не нужны они мне были, можно вернуть ;)
  • 0

#10 gaaarfild

gaaarfild
  • Пользователь
  • 596 сообщений
  • Репутация: 0

Отправлено 05 Ноябрь 2009 - 13:50

Я так думаю, вопрос был про формат книги! =)
  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85


Оформление форума – IPBSkins.ru