Четверг, 2025-01-23, 3:13 AM
Статьи - PHP
Приветствую Вас Гость | RSS
Главная страница Каталог статей Регистрация Вход
Меню сайта

Категории каталога
PHP [158]
Статьи по PHP

Наш опрос
Какой раздел нужно пополнить (создать) ?
Всего ответов: 100

Начало » Статьи » PHP » PHP

Как разбивать запрос на страницы (постраничный вывод данных)?
Что такое разбивка на страницы? Самый простой пример - поисковые машины.
Вы даете команду на поиск в ответ на что сервер выдает
тысячи ссылок (и прочая информация типа названия страницы, даты, и пр.).
Но находится данная информация не на одной странице.
Она разбита на части. В этом примере вы научитеть разбивать
результат поиска по базе данных на куски, чтобы организировать
постарничный вывод.
cоздадим файл 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("</table></table></table></table><hr><h3>************ $info ***********<br><br>
sql error..... n".mysql_errno().": ".mysql_error()."</h3><pre>$zapros</pre><hr>");
}

?>

=== 2 ===

данный файл (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,"Таблица не заполнена");

?>

done.

=== 3===

Собственно, сам файл (search.phtml), который выводит на экран форму для поиска и
выводит найденные результаты по ?? штук на страницу.
<body bgcolor=black text=white link=#9999cc vlink=#cc9999><font face=arial>
<?

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 "<form action="http://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><b><big>_</big></b></font> - заменяет 1 любую букву,
<font color=#ff6666><b><big>%</big></b></font> - заменяет любую последовательность букв.
Поиск '<b>%</b>' - найдет все строки, поиск '<b>_</b>' - только строки,
состоящие из 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</font><br><br>";

for ($j=1; $j<=$len && $tmp=sqlget($res); $j++) {
echo ($start+$j).". $tmp[s]<br>";
$stop--;
}

echo "<br>";
for ($i=1; $i<=floor($all/$len); $i++)
echo "<a href="../../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</a> ";

break;
}

?>

Категория: PHP | Добавил: webmaster (2006-12-06)
Просмотров: 284 | Рейтинг: 0.0 |

Всего комментариев: 0
Имя *:
Email *:
Код *:
Форма входа

Сервисы

Поиск по каталогу

Друзья сайта

| Ссылки 1 | Ссылки 2 | Ссылки 3 |
www.webmaster.clan.su Каталог+поисковая система be number one Bakililar.az Top Sites Сервис авто регистрации в
каталогах, статьи про раскрутку сайтов, web дизайн, flash, 
photoshop, хостинг, рассылки; форум, баннерная сеть, каталог 
сайтов, услуги продвижения и рекламы сайтов Скрипт для определения тиц (Яндекс CY: индекс цитирования). Определение pr (Google Pagerank). Проверить тиц pr сайта.
Copyright WebMaster.Clan © 2006 Бесплатный хостинг uCoz