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


Партнерская программа HomeWork

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

#1 Arukard1

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

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

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

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

 

 

  • 0

robot

robot
  • Пользователь PRO
  • 2 652 сообщений
  • Репутация: 85
Советую обратить внимание на следующее:
  1. Сортировка нескольких масивов
  2. Сделал перелинковку, запросы улетели
  3. Создание сайта бесплатно или как создать сайт своими руками
  4. Создание обзоров ваших сайтов
  5. Тег alt для множества картинок на странице

#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