Полная Версия: Лимитирование данных
Шаман
как делается эта штука с количеством страниц(на форумах к примеру) в зависимости от количества данных?
Шаман
я просто не знал как это назвать чтоб гуглить, спасибо
Shock
Pagination. Обращайся.
Шаман
вопросик впридачу:
как загнать в переменную адрес текущей страницы?
Shock
$page=$_GET['page']; // где page параметр страницы в адресе
// Например, http://site.ru/news.php?page=2
if(!$page || !is_numeric($page)) {
$page=0;
}
Шаман
угу пасиба =)
Шаман
насчет pagination: скока не искал, все на AJAX'e или CSS. А мне нужно для строк из БД, а точнее для каталога новостей, чтобы один скрипт работал идля вывода всех новостей и для вывода отдельных новостей по категориям(при использовании $_GET['cat'])
Shock
С mysql насколько знаком?
Шаман
да, нормально вполне, хотя на работе сегодня сидел и вголове обрабатывал все это, примерно начинаю понимать. но если подскажешь, заранее спс.

З.Ы. я так втыкаю, что там нужна несложная формула для LIMIT'ов, в которой ключевой переменной будет кол-во строк на одной странице
Shock
это все очень просто делается.
Select * from table limit $per_page, $start
вот тебе готовый запрос. А теперь алгоритм генерации:
1.получаем текущую страницу
2.проверяем ее и если она не равна числу, тогда помещаем 0.
3.умножаем текущую страницу на количество записей для вывода.(количество записей на станицу)
4.узнаем количество всех записей в таблице. Если количество записей в базе данных меньше чем нужно вывести на страницу, тогда отменяем генерацию перелистывания.
5.используем запрос, указанный в начале моего пояснения.
6.выводим данные
7.делим количество всех записей в таблице на количество записей на странице. Округляем. Тем самым узнаем количество страниц.
8.выводим циклом количество страниц(ссылки на остальные страницы).


код написал бы, но пишу с телефона.
Шаман
вот вот)) я как раз все так и представлял, НО пример цикла не покажешь? потому как я рассматривал вариант выборки айдишников новостей для цыферок(но этот вариант разваливается при удалении новостей т.к. будут пробелы меж айдишниками)
Shock
циклом for. От 0 до количества страниц. И выводишь. все также очень просто)
Шаман
я просто ваще с циклами дела не имел *cry* а лучше примера нет науки) только пример для этого цикла)

З.Ы. что нашел по циклам, как то туго. на примере понять проще)
Shock
не ну ты даешь. Без циклов в php никак. Обязательно изучи.
пример
CODE

<?php
for($i=0;$i<=$pages_num;$i++) {
?><a href="?page=<?=$i?>"><?=$i?></a><?php
}
?>

как-то так)
Шаман
ок, спс. все в принципе просто) я так пониаю можно ведь обойтись без такого частого использования <? ?> используя echo""; ведь в таком echo переменные будут разпознаваться?
Shock
можно и echo использовать. Просто Расмус Лердорф говорит:"используйте php там, где это необходимо".
Шаман
мммм..... спасибо, а как сделать чтобы цикл шел с единицы а не снуля?
делал так:
CODE
for($i=1;$i<=$pages_num;$i++)

но в этом слусае просто убиралась первая линка в pagination а в "1" была вторая страница

З.Ы. правла ссылку на первую цыферку можно сделать отдельным эхо а $i присвоить 1. но а все же по другому никак?
Шаман
хотя нет, даже так не выходит( так вторая страница обозначается как "1"

[отредактировано] в 22:12

всё разобрался) вот:
CODE
for($i=0;$i<=$pages_num;$i++)
  {
  $p=$i+1;
  echo"<a href='?date=$date&page=$i'>$p</a> ";
  }
Шаман
всё, скрипт готов biggrin.gif

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:

 Enable Smilies |  Enable Signature
Здесь расположена полная версия этой страницы.
aceweb.ru