Шаман
Jun 8 2009, 11:01 AM
как делается эта штука с количеством страниц(на форумах к примеру) в зависимости от количества данных?
Shock
Jun 8 2009, 01:10 PM
Шаман
Jun 8 2009, 01:17 PM
я просто не знал как это назвать чтоб гуглить, спасибо
Shock
Jun 8 2009, 01:31 PM
Pagination. Обращайся.
Шаман
Jun 8 2009, 04:21 PM
вопросик впридачу:
как загнать в переменную адрес текущей страницы?
Shock
Jun 9 2009, 09:20 AM
$page=$_GET['page']; // где page параметр страницы в адресе
// Например,
http://site.ru/news.php?page=2if(!$page || !is_numeric($page)) {
$page=0;
}
Шаман
Jun 9 2009, 09:25 AM
угу пасиба =)
Шаман
Jul 5 2009, 12:12 AM
насчет pagination: скока не искал, все на AJAX'e или CSS. А мне нужно для строк из БД, а точнее для каталога новостей, чтобы один скрипт работал идля вывода всех новостей и для вывода отдельных новостей по категориям(при использовании $_GET['cat'])
Shock
Jul 5 2009, 04:20 PM
С mysql насколько знаком?
Шаман
Jul 5 2009, 07:33 PM
да, нормально вполне, хотя на работе сегодня сидел и вголове обрабатывал все это, примерно начинаю понимать. но если подскажешь, заранее спс.
З.Ы. я так втыкаю, что там нужна несложная формула для LIMIT'ов, в которой ключевой переменной будет кол-во строк на одной странице
Shock
Jul 5 2009, 11:09 PM
это все очень просто делается.
Select * from table limit $per_page, $start
вот тебе готовый запрос. А теперь алгоритм генерации:
1.получаем текущую страницу
2.проверяем ее и если она не равна числу, тогда помещаем 0.
3.умножаем текущую страницу на количество записей для вывода.(количество записей на станицу)
4.узнаем количество всех записей в таблице. Если количество записей в базе данных меньше чем нужно вывести на страницу, тогда отменяем генерацию перелистывания.
5.используем запрос, указанный в начале моего пояснения.
6.выводим данные
7.делим количество всех записей в таблице на количество записей на странице. Округляем. Тем самым узнаем количество страниц.
8.выводим циклом количество страниц(ссылки на остальные страницы).
код написал бы, но пишу с телефона.
Шаман
Jul 5 2009, 11:19 PM
вот вот)) я как раз все так и представлял, НО пример цикла не покажешь? потому как я рассматривал вариант выборки айдишников новостей для цыферок(но этот вариант разваливается при удалении новостей т.к. будут пробелы меж айдишниками)
Shock
Jul 6 2009, 10:55 AM
циклом for. От 0 до количества страниц. И выводишь. все также очень просто)
Шаман
Jul 6 2009, 07:57 PM
я просто ваще с циклами дела не имел *cry* а лучше примера нет науки) только пример для этого цикла)
З.Ы. что нашел по циклам, как то туго. на примере понять проще)
Shock
Jul 6 2009, 09:51 PM
не ну ты даешь. Без циклов в php никак. Обязательно изучи.
пример
CODE |
<?php for($i=0;$i<=$pages_num;$i++) { ?><a href="?page=<?=$i?>"><?=$i?></a><?php } ?>
|
как-то так)
Шаман
Jul 7 2009, 10:05 AM
ок, спс. все в принципе просто) я так пониаю можно ведь обойтись без такого частого использования <? ?> используя echo""; ведь в таком echo переменные будут разпознаваться?
Shock
Jul 7 2009, 02:09 PM
можно и echo использовать. Просто Расмус Лердорф говорит:"используйте php там, где это необходимо".
Шаман
Jul 7 2009, 03:44 PM
мммм..... спасибо, а как сделать чтобы цикл шел с единицы а не снуля?
делал так:
CODE |
for($i=1;$i<=$pages_num;$i++) |
но в этом слусае просто убиралась первая линка в pagination а в "1" была вторая страница
З.Ы. правла ссылку на первую цыферку можно сделать отдельным эхо а $i присвоить 1. но а все же по другому никак?
Шаман
Jul 7 2009, 07:27 PM
хотя нет, даже так не выходит( так вторая страница обозначается как "1"
[отредактировано] в 22:12
всё разобрался) вот:
CODE |
for($i=0;$i<=$pages_num;$i++) { $p=$i+1; echo"<a href='?date=$date&page=$i'>$p</a> "; } |
Шаман
Jul 8 2009, 04:03 PM
всё, скрипт готов
CODE |
echo"<div id='pag'>"; $rpp=10; строк на страницу $prev=$page-1; $next=$page+1; $num=mysql_num_rows($num); if($page>0){echo"<a href='?cat=$cat&date=$date&page=$prev'><img src='../img/left.gif'></a> ";} // стрелка-ссылка else{echo"<img src='../img/left2.gif'> ";} // стрелка-нессылка if($page>4){echo"<a href='?cat=$cat&date=$date&page=0'>1</a> .. ";} for($i=$page-3;$i<$page;$i++) { $p=$i+1; $p=eregi_replace("0"," ",$p); $p=eregi_replace("-1"," ",$p); $p=eregi_replace("-2"," ",$p); echo"<a href='?cat=$cat&date=$date&page=$i'>$p</a> "; } echo"<b>$next</b> "; // текущая страница $right=$num/$rpp; $right=round($right,0); $right=$right-$page-1; if($right>3){$right=3;} for($i=$page+1;$i<=$page+$right;$i++) { $p=$i+1; echo"<a href='?cat=$cat&date=$date&page=$i'>$p</a> "; } $lastpag=$num/$rpp; $lastpage=$lastpag-1; if($page<$num/$rpp-5){echo" .. <a href='?cat=$cat&date=$date&page=$lastpage'>$lastpag</a> ";} if($page<$num/$rpp-1){echo"<a href='?cat=$cat&date=$date&page=$next'><img src='../img/right.gif'></a>";} // стрелка-ссылка else{echo"<img src='../img/right2.gif'>";} // стрелка-нессылка echo"</div>";
|
Fast Reply:
Powered by dgreen
Здесь расположена полная версия этой страницы.