|
| Вторник, 23.06.2026, 09:59 |
| Приветствую Вас Гость | RSS |
|
Информационные технологии |
|
| Меню сайта |
|
|
 |
| Категории каталога |
|
 |
| Друзья сайта |
|
 |
| Наш опрос |
|
 |
|
Как разбивать запрос на страницы (постраничный вывод данных)?
| Что такое разбивка на страницы? Самый простой пример - поисковые машины. Вы даете команду на поиск в ответ на что сервер выдает тысячи ссылок (и прочая информация типа названия страницы, даты, и пр.). Но находится данная информация не на одной странице. Она разбита на части. В этом примере вы научитеть разбивать результат поиска по базе данных на куски, чтобы организировать постарничный вывод. Создадим файл default.phtml, который содержит базовые фукнции. Вам надо подправить параметры (host/user/pass/base) // Глобальная переменная. Например, нужна в функции коннекта. $sock=false; // новые функции function sql($a) { return mysql_query($a); } function sqlrows($a) { return @mysql_num_rows($a); } function sqlval($a,$b,$c) { return @mysql_result(mysql_query($a),$b,$c); } function sqlget($a) { return @mysql_fetch_array($a); } function sqlline($a) { return sqlget(sql($a)); } function sqllast() { return mysql_insert_id(); } // коннект к серверу function connect() { global $sock; $host="*****"; $user="*****"; $base="*****"; $pass="*****"; $sock=@mysql_connect($host,$user,$pass); if ( ! $sock || ! @mysql_select_db($base,$sock)) die("Сервер временно не работает"); unset( $host); unset($user); unset($base); unset($pass); } // замена die() function xdie($zapros="", $info="") { die(" | |
| |
************ $info ***********
sql error..... n".mysql_errno().": ".mysql_error()."$zapros "); } ?> данный файл (create.phtml) создаст таблицу limit_test и забьет в нее 500 строк вида из разных строк. include( "./default.phtml"); connect(); // удаляем таблицу (на всякий случай) sql("drop table limit_test"); // создаем if (!sql("create table limit_test (id int, s char(100))")) xdie("","Таблица не создана"); srand(time()); // создаем запрос вида << ... values (x,"xx"), (y,"yy"), ... (z,"zz") >> $s="insert into limit_test values "; for ( $i=0; $i<500; $i++) { $s.="($i,""; $x=rand(1,100); for ($j=0; $j<$x; $j++) $s.=chr(rand(ord('a'),ord('z'))); $s.="")"; if ($i+1<500) $s.=","; } // выполняем запрос, чтобы наполнить таблицу данными if (!sql($s)) xdie($s,"Таблица не заполнена"); ?> Собственно, сам файл (search.phtml), который выводит на экран форму для поиска и выводит найденные результаты по ?? штук на страницу. <body bgcolor=black text=white link=#9999cc vlink=#cc9999> include( "./default.phtml"); if (!isset( $z)) $z=""; if (isset($all)) $all=intval($all); if (isset($start)) $start=intval($start); if (isset($len)) $len=intval($len); else $len=10; echo "://phpclub.chat.ru/mysql/%24php_self" method=get> <input type=hidden name=z value=search> Что ищем: <input type=text name=s value='$s'> Строк: <input type=text name=len value='$len' size=5> <input type=submit value=' search '><br><br> Спец. символы: <font color=#ff6666>_ - заменяет 1 любую букву, <font color=#ff6666>% - заменяет любую последовательность букв. Поиск '%' - найдет все строки, поиск '_' - только строки, состоящие из 1 символа. Если поискать 'a', то, скорее всего, ничего не будет найдено, однако строки '%a%' точно найдутся.<br> form>"; switch ($z) { case " search": connect(); $query=" select s from limit_test where s like '$s'"; if (!isset($start)) { if (!( $res=sql($query) )) xdie($query," ошибка"); $start=0; $all=sqlrows($res); } else { $query.=" limit $start,$len"; if (!( $res=sql($query) )) xdie($query,"ошибка"); } echo " Запрос: <font color=#00ff00>$query
"; for ($j=1; $j<=$len && $tmp=sqlget($res); $j++) { echo ($start+$j).". $tmp[s] "; $stop--; } echo " "; for ($i=1; $i<=floor($all/$len); $i++) echo "../../tppmsgs/msgs0.htm#123" tppabs="http://phpclub.chat.ru/mysql/%24php_self?z=search&all=$all&len=$len&"." "start=".(($i-1)*$len)."&s=".urlencode($s).">$i "; break; } ?>
Источник: http://articles.org.ru/ |