Как сделать переход по страницам

Статус
В этой теме нельзя размещать новые ответы.

ChemicalForce

Постоялец
Регистрация
14 Июн 2008
Сообщения
72
Реакции
45
Как сделать переход по страницам когда их несколько (тока не тупо в хтмл на всех страницах прописывать ссылки) ?:nezn:

Например

<< < 1 2 3 4 5 > >> ну и понятно чтоб цифры в зависимости от того на какой странице находишься менялись.
<< < 4 5 6 7 8 9 > >>

Чтобы из-за одной страницы не приходилось все остальные перебивать :smmne:
 
Да по разному можно... Зависит от того как у тебя сайт устроен.
Предположим у тебя есть база данных твоего сайта в которой 1 запись - 1 страница. И у каждой записи есть свой id.
Тогда делаешь sql запрос к базе берёшь первую запись, после этого запрашиваешь id следующих 10 записей после уже полученной. (ORDER BY "поле определяющее порядок страниц" [ASC, DESC] LIMIT 10). И ставишь циклом ссылки вида href="./index.php?page=$id".

Написал криво, прото ты вопрос не конкретный задал, если не поймёшь - отпишись, попробую подробней объяснить.

PS а можешь скачать какойнить движок который это умеет и посмотреть код;)
 
Есть полно готовых решений - поиск по "pagination php".
 
Вот исходник одного кода. Сразу говрю, я его не юзал, я его переделал под себя, как мне было надо.

Если то что написано ниже, ты не понимаешь, лучше не читай. Т.к то что написано ниже надо еще под свой сат переделать. Эт так сказать шаблон.

Код1
Код:
<?
$result77 = mysql_query("SELECT str FROM options", $db);
$myrow77 = mysql_fetch_array($result77);
$num = $myrow77["str"];
// Извлекаем из URL текущую страницу
@$page = $_GET['page'];
// Определяем общее число сообщений в базе данных
$result00 = mysql_query("SELECT COUNT(*) FROM data WHERE cat='$cat'");
$temp = mysql_fetch_array($result00);
$posts = $temp[0];
// Находим общее число страниц
$total = (($posts - 1) / $num) + 1;
$total =  intval($total);
// Определяем начало сообщений для текущей страницы
$page = intval($page);
// Если значение $page меньше единицы или отрицательно
// переходим на первую страницу
// А если слишком большое, то переходим на последнюю
if(empty($page) or $page < 0) $page = 1;
  if($page > $total) $page = $total;
// Вычисляем начиная с какого номера
// следует выводить сообщения
$start = $page * $num - $num;
// Выбираем $num сообщений начиная с номера $start		
		
$result = mysql_query("SELECT id,title,description,date,author,mini_img,view FROM data WHERE cat='$cat' ORDER BY id LIMIT $start, $num",$db);
?>

Код2
Код:
<?
// Проверяем нужны ли стрелки назад
if ($page != 1) $pervpage = '<a href=view_cat.php?cat='.$cat.'&page=1>Первая</a> | <a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>Предыдущая</a> | ';
// Проверяем нужны ли стрелки вперед
if ($page != $total) $nextpage = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>Следующая</a> | <a href=view_cat.php?cat='.$cat.'&page=' .$total. '>Последняя</a>';

// Находим две ближайшие станицы с обоих краев, если они есть
if($page - 5 > 0) $page5left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 5) .'>'. ($page - 5) .'</a> | ';
if($page - 4 > 0) $page4left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 4) .'>'. ($page - 4) .'</a> | ';
if($page - 3 > 0) $page3left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 3) .'>'. ($page - 3) .'</a> | ';
if($page - 2 > 0) $page2left = ' <a href=view_cat.php?cat='.$cat.'&page='. ($page - 2) .'>'. ($page - 2) .'</a> | ';
if($page - 1 > 0) $page1left = '<a href=view_cat.php?cat='.$cat.'&page='. ($page - 1) .'>'. ($page - 1) .'</a> | ';

if($page + 5 <= $total) $page5right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 5) .'>'. ($page + 5) .'</a>';
if($page + 4 <= $total) $page4right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 4) .'>'. ($page + 4) .'</a>';
if($page + 3 <= $total) $page3right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 3) .'>'. ($page + 3) .'</a>';
if($page + 2 <= $total) $page2right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 2) .'>'. ($page + 2) .'</a>';
if($page + 1 <= $total) $page1right = ' | <a href=view_cat.php?cat='.$cat.'&page='. ($page + 1) .'>'. ($page + 1) .'</a>';

// Вывод меню если страниц больше одной

if ($total > 1)
{
Error_Reporting(E_ALL & ~E_NOTICE);
echo "<div class=\"pstrnav\">";
echo $pervpage.$page5left.$page4left.$page3left.$page2left.$page1left.'<b>'.$page.'</b>'.$page1right.$page2right.$page3right.$page4right.$page5right.$nextpage;
echo "</div>";
}
?>
 
Как сделать переход по страницам когда их несколько (тока не тупо в хтмл на всех страницах прописывать ссылки) ?:nezn:


Чтобы из-за одной страницы не приходилось все остальные перебивать :smmne:

На полностью статических страничках - никак не сделаешь на автомате - придецца ручками все прописать.

На динамических или статических но с инклюдами выше советовали пагинатор. все-же желательно более конкретизировать где ты хочешь это применить, и поверь помощь тогда будет более качественной, ато сейчас тут все ответы "сферические кони в вакууме" :)
 
у меня рализация происходит таким образом:

PHP:
    echo "<table cellpadding=0 cellspacing=0 border=0 width=90%><tr><td>Страницы: ";
    $frompage=ceil($pagenum-$numpages/2);
    if ($frompage<1) $frompage=1;
    $topage=$frompage+$numpages-1;
    if ($topage>$pages)
        {
        $topage=$pages;
        $frompage=$topage-$numpages+1;
        if ($frompage<1) $frompage=1;
        }
    if ($pagenum>1) echo "<a href='$siteroot/?pagenum=".($pagenum-1)."$additionhref'><< пред</a> | ";
    for ($i=$frompage;$i<=$topage;$i++)
        {
        if ($i==$pagenum) echo "<b>$i</b>";
        else echo "<a href='$siteroot/?pagenum=$i$additionhref'>$i</a>";
        if ($i<$topage) echo " | ";
        }      
    if ($pagenum<$pages) echo " | <a href='$siteroot/?pagenum=".($pagenum+1)."$additionhref'>след >></a>";
    echo "</td><td align=right><a href='$siteroot/?action=add'>Добавить</a></td>
        </tr></table><br>";
 
Посмотри, по ссылкам примеры проектирования с пояснениями от Для просмотра ссылки Войди или Зарегистрируйся:
Постраничная навигация, основанная на файлах:
Постраничная навигация с использованием субд Mysql:
 
Ребята я делаю сейчас свой первый сайт. На нем будет видео контент с разбиением по жанрам и соответственно на каждый жанр не по одной странице. Как удобней и проще сделать переходы по большому количеству страниц? (в планах они будут расти в связи с пополнением контента)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху