Помощник
|
Постраничный вывод данных, помогите разобрать функцию |
Banderas
|
Сообщение
#1
|
||
|
|
||
|
|||
WorkOnFood |
22.5.2011, 18:28;
Ответить: WorkOnFood
Сообщение
#2
|
|
Не понятно зачем строчка if(!isset($_GET['page']) or !(int)$_GET['page']){$_GET['page']=1;}, исползуется в примере использования если уже есть строчка if(!isset($page) or empty($page) or $page>$num_page){$page=1;} в самой функции. if($get=='yes') - действительно не понятно зачем. FOUND_ROWS() применяется в связке с использованным до него SQL_CALC_FOUND_ROWS для подсчета общего количества записей в таблице, при использовании limit в запросе.
|
|
|
ZiTosS |
31.5.2011, 23:25;
Ответить: ZiTosS
Сообщение
#3
|
|
|
Banderas, функция приведенная тобой тупо формирует ссылки на страницы (не забывает и текущие get-параметры заново в ссылку запихнуть):
[php]function num_page($page,$num='',$get='yes') { global $rows_page; // количество данных на страницу $num=(empty($num)) ? $rows_page : $num; // можно переопределить количество данных на страницу, если второй параметр передан $num_rows=mysql_result(mysql_query("SELECT FOUND_ROWS()"), 0); // общее количество данных в таблице БД (без лимита) $num_page=ceil($num_rows/$num); //Определяем сколько у нас получается страниц, округляем до большего (если до меньшего -> не учтем последние записи неполной страницы) if(!isset($page) or empty($page) or $page>$num_page){$page=1;} // если $page == 0 или не существует (тут этого не случится, параметр обязательный) или привысили общее количество страниц - скидываем на первую $str=array(); // здесь будут храниться сформированные ссылки на страницы + текущая $get_q=''; // здесь будет сформированная строка со всеми GET-параметрами текущей страницы (для сохранения передаваемых GET-параметров, допустим у нас на них заданы подключения модулей) // если параметр -> формировать строку с GET-параметрами if($get=='yes') { // перебираем весь массив GET-параметров с текущей страницы (ключ => значение) foreach($_GET as $k => $v) { // page нам напфиг не нужно, его формирует данная функция, а все остальные обрабатываем и формируем строку запроса if($k!='page') { // если параметр - массив (да... в get можно передавать массивы - ?param[]=...¶m[]=...) if(is_array($v)) { // обходим все элементы массива параметра (например param) foreach($v as $val) { $get_q.=$k.'[]='.urlencode($val).'&'; // добавляем на каждой итерации - key[]=value& } }else{ // если не массив $get_q.=$k.'='.urlencode($v).'&'; // добавляем key=value& } } } } // формируем ссылки на страницы с 1-ой по последнюю for($i=1;$i<=$num_page;$i++) { $str[]=($i!=$page) ? "<a href=\"?".$get_q."page=".$i."\">".$i."</a>" : "<b>".$i."</b>"; // если не текущая - ссылка, если текущая - выделяем жирным } return $str; // возвращаем массив с ссылками + текущая страница }[/php] Всё тривиально SELECT FOUND_ROWS() Возвращает количество записей из предыдущего запроса SELECT без учета LIMIT (счетаем все записи). Но для использования данной функции в предыдущем запросе после слова SELECT должно идти - SQL_CALC_FOUND_ROWS
Поблагодарили: (0) |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
Интеграция спортивных данных API. Коэффициенты БК, Live результаты | 15 | yaroslav89 | 6865 | 8.4.2024, 17:17 автор: spoyer_ru |
|
Ручной обмен, ввод/вывод электронных валют | ЮMoney, WMZ, Крипта, Приват, Монобанк | Низкие комиссии, минимальные суммы сделок быстро, удобно, по доступному курсу |
200 | Sostavitel | 98242 | 11.2.2024, 21:07 автор: Wolfhound |
|
ГОРЯЧИЕ FOREX|CRYPTO ЛИДЫ. БАЗЫ ДАННЫХ [Чарджбек|Рекавери|Возврат] |
9 | Leado | 3911 | 9.2.2024, 16:04 автор: baza0013 |
|
Sbitcoin.ru – Ввод, Вывод, Обмен: Qiwi, YD, Btc, Btc-e, PM, Cash IN, PR24, MG, WU, Нал (RU, UA). | 9 | sbitcoinru | 6784 | 10.10.2023, 19:25 автор: Sbitcoin |
|
Обмен WebMoney - Яндекс - QIWI. Вывод/ввод Приват24 UAH | 225 | himin | 132906 | 7.5.2023, 13:26 автор: Вера_Симонова |
Текстовая версия | Сейчас: 24.4.2024, 16:04 |