Зачем в функцию пейджера передавать столько параметров? У меня к примеру передается всего один и этого вполне достаточно для его работы. Остальные внутри функции и так доступны. Вероятность сделать ошибки уменьшается в разы. Опять же поэтому и получается все сложно так как эти все параметры нужно подготовить. Да и гонять их туда если они там не нужны. Смысл? Или никто никогда не задумывался над тем чтобы все это безумие упростить? Использовать 4 параметра. Хотя нужен всего один.
mpak А какой - один? Мне кажется, два нужно... Ну у меня так - общее количество страниц и текущая страничка.
Один это количество страниц. Текущую страницу можно с $_GET достать. Смысл передавать функции значение если оно и без того в ней доступено. Хотя и это еще херня. У меня есть приятель который мало того что передает параметр гет в функцию так он его еще переситывает.. Получается что перед передачей он его преобразует не помню точно как вроде увиличивает на один. И после этого еще в самой функции пересчитывает обратно к исходному числу чтобы вставить значение в ссылку. Во где физифов труд. Гоняет данные туда сюда Да и запарено становится на порядки. Не разгребещь потом такой код.
mpak Ясно. В принципе, да. Просто я обычно делаю сперва PHP: <?php $page = (isset($_GET['page']) and is_numeric($_GET['page'])) ? (int) $_GET['page'] : 1; if($page < 1) $page = 1; if($page > $pages) $page = $pages; А далее уже вызываю функцию, которая возвращает список страниц, ссылки на которые нужно отобразить. И в неё передаю $pages и $page. А далее на основе $page делаю SQL-запрос на выборку нужных записей.
чтобы не нараушать архитектуру. Функция должна оставаться по возможности черным ящиком, и не зависеть от глобальных и суперглобальных переменных напрямую. лучше ей их передать явно в виде параметра. и тогда тому, кто будет пользоваться после автора этой функцией не надо будет лезть в ее код, чтобы узнать от чего зависит ее результат.
Постраничный вывод для этого кода... Доброго ... всем! Нашел здесь на форуме скрипт вывода фоток в две или N-количества колонок, который мне в принципе подходит, но вот все ни как не могу или точнее сказать не "умею" как мне прицепить сюда постраничный вывод типа (<-предыдущая ...1,2,3... следующая->)? Если не затруднит черканите несколько строк кода чтоб было над чем подумать... Сам код такой: PHP: <?php $connect = mysql_connect($host, $user, $passwd); $con_bd = mysql_select_db($db_name, $connect); $result_foto = mysql_query("SELECT id,pageNum_foto,urlthumb FROM fototable"); $row_foto = mysql_fetch_array($result_foto); $i = 0; do { echo ' <a href="foto_viwe.php?id='. $row_foto['id'] .'"><img src="'. $row_foto['urlthumb'] .'" border="1" width="150" height="150"/></a>'; $i++; if ($i == 2) { echo "<br/>"; $i = 0; } } while ($row_foto = mysql_fetch_assoc($result_foto)); ?> Я ток начал разбираться в этом...
Про Попова чот слыхал, но этот код я взял с этого форума... Манул обязательно посмотрю, я частенько туда заглядываю... Так суть не в этом, я же помочь прошу, еслиб я не смотрел в учебник PHP, я б вообще не задавал вопросов на этом форуме... И не пытался освоить PHP програмирования... Значит я просто посмотрев в Руководство по PHP чего то не догоняю, и прошу мне помочь в этом разобраться...
Вывод: Код (PHP): $lang=array('page_back' => 'Назад','page_next' => 'Далее'); $config=5; # количество на 1 страницу $page=isset($_GET['page'])?intval($_GET['page']):1; if($page) { $limits=($page-1)*$config; $news=mysql_query("SELECT * FROM news ORDER BY date DESC LIMIT ".$limits.",".$config.""); list($count)=mysql_fetch_row("SELECT count(0) FROM news"); if($count>$config) { $pages=ceil($count/$config); $pagination.=pagination('?page=','',$pages,$page); #если используется только на этой странице оставляев 2-й пареметр функции пустой если нет дописать '&название=что передается' } echo $pagination; } Функция: Код (PHP): function pagination($links,$linked,$sumpages,$pages) {global $lang; $link.='<div align="center">'; $link.=($pages>1)?'[url="'.$links.($pages-1).$linked.'"]'.$lang['page_back'].'[/url] ':' '.$lang['page_back'].' '; for($i=1;$i<=$sumpages;$i++) { $link.=($i==$pages)?$i:' [url="'.$links.$i.$linked.'"]'.$i.'[/url] '; } $link.=($pages<$sumpages)?'[url="'.$links.($pages+1).$linked.'"]'.$lang['page_next'].'[/url] ':' '.$lang['page_next'].''; $link.='</div>'; return $link; } Давно писал, есть конечно и другие, но мне они не нужны были и сейчас тоже в принципе! Можно еще и связывать страницы с javascript-jquery и без перезагрузки перелистывать, тоже прикольно, но оно мне тоже не надо) Еще делают через javascript .history заполнение элемента и переключение адреса без перезагрузки. И это мне не понадобится) Если потребуется вся инфа есть уже на просторах интернета), главное правильно искать. Можно и с другой вебки взять если прям будет срочно нужно найдется
а вот мой )) но он не работает <?php # ПОЕХАЛИ =) # пропмсываем в каком файле будем считать строки $file=file("1EE.txt"); # считаем количество строк в файле 1EE.txt $count=count($file); # количество строк на страничке равно 10 $z=10; /*определяю колличество страниц с выводом на одной по 10 строк и огругляю данное значение в большую сторону функцией (ceil)*/ $num_pages=ceil($count/$z); # вывод ссылок на вашу станичку for($i=1;$i<=$num_pages;$i++) { echo '<a href="'.@$_SERVER['1EE.txt'].'?num='.$i*$z.'">'.$i."</a>\n"; } ?>
Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in Z:\home\wap4\www\st\index.php on line 17
не надо сюда писать свои ошибки не понятно к чему относящиеся. к тому же будет полезно вам прочесть, что именно написано в ошибке сначала.
Писать самому пагинатор - дело не очень благодарное. Если интересно - есть простой ясный пример пагинатора на php - вот он: techsmash.ru/php/2012/09/10/primer-paginatora-na-php.html.
Swapf, ну зачем такой пример? абсурд какой-то. А если у нас там миллион записей в базе, например - это что, весь миллион вытягивать? )) Код (PHP): $sql = "SELECT COUNT(*) FROM `tbl_post`"; $res = mysql_query($sql); $cnt = mysql_result($res, 0, 0); Можно и одной строкой, если хочется Код (PHP): $cnt = mysql_result(mysql_query("SELECT COUNT(*) FROM `tbl_post`"), 0, 0); Может, лучше Код (PHP): $pages = ceil($cnt / $range); ?
Делал на скорую руку. Да и там в топике ниже написано, что это просто пример и никакой оптимизации по нему не делал. Модифицируйте его как хотите) По хорошему, нужно парсить $_GET[], данные брать не напрямую из БД, а из кеша и прочее-прочее.