Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Закрытая темаСоздание новой темы Создание опроса
> Разделитель страниц 
:(
    Опции темы
CTAzz
Дата 4.9.2007, 13:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 16.9.2006
Где: Россия, index.php

Репутация: нет
Всего: нет



Подскажите пожалуйста, как можно осуществить разделитель страниц! Воту  меня в базе 574562765 записей smile ну так к слову, на страницу нужно вывести 20, как это можно осуществить?
PM MAIL   Вверх
Leoo
Дата 4.9.2007, 13:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 270
Регистрация: 3.10.2005
Где: г. Обнинск

Репутация: 1
Всего: 3



SQL запросом
Код

SELECT pole1, pole2 FROM table LIMIT 0, 20

SELECT pole1, pole2 FROM table LIMIT 20, 40

и так далее



--------------------
Если вы не страдаете паранойей, это не значит, что они за вами не летят!
PM MAIL WWW ICQ   Вверх
Хрипа
Дата 4.9.2007, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 227
Регистрация: 11.12.2006

Репутация: -6
Всего: нет



Код

$documents, = "Общие количество записей в базе";
$page, = Текущая страница
$mode, Модуль сайта (Исключительно писал функцию под свой сайт)
$urls = Добовления урла. (Иногда надо что бы некоторые переменные не терялись которые идут методом гет)
function page_display($documents,$page,$mode,$urls)
{
    if ($urls == NULL) $urls = "";
    if ($page == NULL) $page = 1;
    if ($mode == NULL) $mode = "news";
    $to_page = $cfg["pages"];
    $pages = ceil($documents / $to_page) +1;
    $min_rows = floor($to_page * $page) - $to_page;
    for($i=0;$i<$pages;$i++)
    {
            if ($i==0) continue;
            if ($i == $page){
            $url .= " <b>[<a class=\"myaccount1\"
            href=\"?mode=$mode&id=$_GET[id]&page=$i$urls\">$i</a>]</b> ";
            }else{
            $url .= " [<a class=\"myaccount2\"
            href=\"?mode=$mode&id=$_GET[id]&page=$i$urls\">$i</a>] ";
            }
    }
    if ($min_rows == -25) $min_rows = 0;
    return array($min_rows,$url,$mode);
}

КАК ИСПОЛЬЗЫВАТЬ:
Код

$sql = "SELECT * FROM news WHERE arr = 'yes' AND public = 'yes' $and_cat ORDER by data DESC";
        $bind = db_query($sql);
        $news_all = mysql_num_rows($bind);
        $page_ss = page_display($news_all,$_GET["page"],$_GET["mode"],$dsssa = NULL);
        $sql .= " LIMIT $page_ss[0],$cfg[pages]";
        $bind = db_query($sql);

Пояснения:
Нулевой индекс это для SQL Оператора LIMIT С какой записи выбераем
Первый эелемент будет содержать список страниц! его просто можно вывести через print
и второй эелемент тебе вообще не надо так как он работает тока на моём сайте )
как работает можешь посматреть тут http://www.game.sinb.ru
--------------------
<Вырезана, как не соответствующая правилам форума >
PM MAIL   Вверх
Diesel Draft
Дата 5.9.2007, 10:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 876
Регистрация: 18.1.2005
Где: Lviv, Ukraine

Репутация: 1
Всего: 5



CTAzz, Ето все в одной таблице? Маняк

Leoo правильно сказал, это самый простой вариант.

Добавлю:
Код

SELECT pole1, pole2 FROM table LIMIT от_строки, количество


Это сообщение отредактировал(а) Diesel Draft - 5.9.2007, 10:25


--------------------
НЕДОМА в маси 
PM MAIL WWW ICQ GTalk   Вверх
BuShaRt
Дата 5.9.2007, 14:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: 4
Всего: 6



Код

//кол-во страниц на вывод.
$sp = 10;
$p = isset($_GET['p'])? $_GET['p'] : 1;
$action = isset($_REQUEST['a'])? $_REQUEST['a'] : 'main';

$query_filtr = 'select * from news'; //сам запрос на выделение

$query_filtr2 = $query_filtr.' LIMIT '.(0 + ($p*$sp-$sp)).', '.$sp; //этот запрос используем далее для вывода содержимого страницы, согласно номеру.

$val = $db->query($query_filtr);
for ($i=1; mysql_num_rows($val)-$i*$sp > 0-$sp; $i++) {
    if ($i==$p) {
        print $i;
        continue;
    }
    print '<a href=?a=main&p='.$i.$url_filtr.'>'.$i.'</a> ';
}


Мог упустить кусочки кода... вырывал грубо из больго кода

Это сообщение отредактировал(а) BuShaRt - 5.9.2007, 16:26
PM MAIL   Вверх
CTAzz
  Дата 17.8.2008, 19:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 16.9.2006
Где: Россия, index.php

Репутация: нет
Всего: нет



$vivod = 1;
Код

$kolpage=ceil($tap / $vivod);
$p = isset($_GET['p'])? $_GET['p'] : 1;    
$n = ( $p * $vivod ) - $vivod;
print "Страницы: ";
for($i=0;$i<=$kolpage;$i++)
{
$first="";
$nextp = "";
$lastp = "";
$prop = "";
if($p<$kolpage)
{
$i1=$p + 1;
$nextp= "<a href=?p=$i1>></a>";
$lastp= "<a href=?p=$kolpage>>></a>";
}
if($p!=1)
{
$i2=$p - 1;
$prop= "<a href=?p=$i2><</a>";
$first= "<a href=?p=1><<</a>";
}
$pagenum[]=$url;
}
$pripage1 = $p - 1;
$pripage3 = $p + 1; 
print "$first $prop";
foreach( range($pripage1, $pripage3)as $val ) { 
    if($val==$p) { $val="<b>$p</b>";}
    if( $val<$p) {$val="<a href=\"?p=$pripage1\">$pripage1</a>"; }
    if( $val==$pripage3) {$val="<a href=\"?p=$pripage3\">$pripage3</a>"; }
    print " $val "; }
print " $nextp $lastp";

    }

Сильно намудил)))) Тока вот массив не получается сделать норм, может уходить за пределы, и выдавать несуществующие страницы, как можно отрегулировать?  smile  smile  smile  smile 
PM MAIL   Вверх
Anarki
Дата 17.8.2008, 20:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



Цитата(CTAzz @  4.9.2007,  16:15 Найти цитируемый пост)
Подскажите пожалуйста, как можно осуществить разделитель страниц! Воту  меня в базе 574562765 записей  ну так к слову, на страницу нужно вывести 20, как это можно осуществить?

phpfaq.ru/paginator


--------------------
PM WWW   Вверх
Feldmarschall
Дата 18.8.2008, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Anarki, этому вопросу уже год. Думаю, автор уж как-нибудь решил за это время =)

CTAzz, если может уходить за пределы, то надо поставить проверки этих пределов.
PM   Вверх
MoLeX
  Дата 18.8.2008, 05:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: 46
Всего: 140




M
MoLeX
Модератор: Пожалуйста прежде чем отвечать смотрите на год создания темы!!!



--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
  
Закрытая темаСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0871 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.