[PHP]Листание страниц по результатам поиска по MySQL
Подскажите, как написать механизм листания страниц для вывода результата поиска в базе данных
MySQL.
Заранее всем благодарен.
Здравствуйте, уважаемые...
Подскажите, как написать механизм листания страниц для вывода результата поиска в базе данных
MySQL.
Заранее всем благодарен.
Используй LIMIT
Используй LIMIT
Точнее LIMIT n,m
возращает n-строк начинаю с m
Точнее LIMIT n,m
возращает n-строк начинаю с m
С функцией то все понятно, но разве после прекращения действия скрипта результирующий набор данных не теряется? Меня интересует, надо ли выполнять запрос на выборку каждый раз при листании или как-то его можно сохранить после первого раза?
С функцией то все понятно, но разве после прекращения действия скрипта результирующий набор данных не теряется? Меня интересует, надо ли выполнять запрос на выборку каждый раз при листании или как-то его можно сохранить после первого раза?
Надо.
Если ищет медленно, то надо сохранять во временную таблицу или файл.
Надо.
Если ищет медленно, то надо сохранять во временную таблицу или файл.
Когда я писал постраничный вывод для MSSQL на PHP, а там такой полезной функции LIMIT нету, то делал выборку всех нужных айдишников при первом обращении и складывал их в виде массива в сессию, а на следующих страницах уже разбирал этот массив.
вот урл http://www.i2r.ru/static/256/out_16434.shtml
Так вот, там я что-то не нашел повторного выполнения запроса.
Но по-моему после выполнения скрипта все переменные и объекты должны удаляться.
Может я не прав?
______________________
Благодарен всем за ответы, которые вы прислали.
Когда я писал постраничный вывод для MSSQL на PHP, а там такой полезной функции LIMIT нету, то делал выборку всех нужных айдишников при первом обращении и складывал их в виде массива в сессию, а на следующих страницах уже разбирал этот массив.
Глупость там все есть.
> Но по-моему после выполнения скрипта все
> переменные и объекты должны удаляться.
> Может я не прав?
А в чем проблема пчему бы не выполнить повторный запро, это куда выгодней загрузить маленький кусочек в память чем хранить весь архирв в памяти..
представляете чел захотел посмотреть только одну-две страници :)
вот ссылка http://www.gc.pp.ru/documentation/php/mysql_limit.php там вроде все написано
Thanks......
...
Так вот, там я что-то не нашел повторного выполнения запроса.
Но по-моему после выполнения скрипта все переменные и объекты должны удаляться.
Может я не прав?
Да ты не прав, этот скрипт каждый раз загружает все данные по запросу, а потом mysql_data_seek он всего лишь позиционируется на нужном сегменту.
а при испоьзовании LIMIT N,M загужаются только M строк.
Впринципе он в своём скрипте сделал то что уже давно сделано в MySQL.
Представь что запрос select * from table1 where field='1'; содержи несколько тысяч строк, зачем их спрашивается гдето хранить? зачем их выбирать все а потом от туда вырезать нужный кусок? :)
Вот небольшая функция
GetMyPageSql(Соединение_с_MySQL,"запрос",страница,кол-во_строк_на_странице) возвращает массив со значениями запроса.
<?php
function GetMyPageSql($sql_connection,$sql_query,$page=0,$StrOnPage=0)
{
if ($StrOnPage!=0&&$page!=0)
{
$limiter=" LIMIT ".($StrOnPage*$page).",".$StrOnPage;
}
else
{
$limiter="";
}
$result = mysql_query($sql_connection,$sql_query.$limiter) or DIE("F***ing Query");
$result_arr = mysql_fetch_array($result, MYSQL_ASSOC) or array();
mysql_free_result($result);
Return($result_arr);
}
?>
Если есть ошибки, думаю сами исправите :)
Я вот еще что хотел узнать:
нужно ли при каждом новом запросе писать
mysql_connect(...) и mysql_selectdb.
Я не знаю, сохранится ли соединение после выполнения скрипта и сохранится ли сеанс именно с конкретной БД. А если нет, то как-то тупо каждый раз - коннект, селект; коннект, селект....
Вот...:-?
Спасибо за функцию.....
Я вот еще что хотел узнать:
нужно ли при каждом новом запросе писать
mysql_connect(...) и mysql_selectdb.
Я не знаю, сохранится ли соединение после выполнения скрипта и сохранится ли сеанс именно с конкретной БД. А если нет, то как-то тупо каждый раз - коннект, селект; коннект, селект....
Вот...:-?
нужно коннектиться к базе при каждом выполнении скрипта.
В начале выполнения скрипта делай коннект и при выполнении запросов ссылайся на него , тоесть при каждом запросе не обяазтельно делать коннект
<?php
-коннект
...
куча запросов
...
-дисконнект
?>
mysql_connect() это каждый раз новый коннект.
mysql_pconnect() постоянный коннект(не скрипта а самой среды под которой крутится твой скрипт)
и вообще качни док по PHP с примерами http://weblabor.hu/php-doc-chm/
вещь хорошая :)
вопросы, Ваши ответы мне очень помогли...
С уважением Sasik.