Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Как разбивать запрос на страницы (постраничный вывод данных)?

Источник: realcoding.net

Что такое разбивка на страницы? Самый простой пример - поисковые машины. Вы даете команду на поиск в ответ на что сервер выдает тысячи ссылок (и прочая информация типа названия страницы, даты, и пр.). Но находится данная информация не на одной странице. Она разбита на части. В этом примере вы научитеть разбивать результат поиска по базе данных на куски, чтобы организировать постарничный вывод.

Создадим файл 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>);
}


?>

данный файл (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><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>
&
nbsp; <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 include уязвимость: от теории к практике
- Легкая навигация
- Upload File (Загрузка файла на сервер средствами Perl)
- Использование шаблонов при программировании WEB-приложений
- ПОИСКОВИКИ и КАТАЛОГИ
- Основы технологии AJaX
- Манифест Хакера
- Для тех, кто хочет больше,чем HTML
- Заголовок If-Modified-Since, если PHP не установлен как моду
- Что такое PageRank Googleа и как получить его по максимуму
- Аутентификация пользователей через Веб-интерфейс
- PHP поддерживает реализацию механизма отправки заголовков HTTP.
- Работаем с файлами на PHP


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.001]