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

Тема в разделе "PHP", создана пользователем ChemicalForce, 7 авг 2008.

Статус темы:
Закрыта.
Модераторы: latteo
  1. ChemicalForce

    ChemicalForce Постоялец

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

    Например

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

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

    akgrad

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

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

    PS а можешь скачать какойнить движок который это умеет и посмотреть код;)
     
  3. ModeX

    ModeX Прохожие

    Есть полно готовых решений - поиск по "pagination php".
     
  4. Braniack

    Braniack

    Регистр.:
    25 май 2008
    Сообщения:
    160
    Симпатии:
    45
    Вот исходник одного кода. Сразу говрю, я его не юзал, я его переделал под себя, как мне было надо.

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

    Код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>";
    }
    ?>
     
  5. anarki

    anarki Прохожие

  6. megadude

    megadude

    Регистр.:
    6 сен 2006
    Сообщения:
    184
    Симпатии:
    66
    На полностью статических страничках - никак не сделаешь на автомате - придецца ручками все прописать.

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

    G0Sware Писатель

    Регистр.:
    14 авг 2008
    Сообщения:
    3
    Симпатии:
    0
    у меня рализация происходит таким образом:

    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>"
    ;

     
  8. megadude

    megadude

    Регистр.:
    6 сен 2006
    Сообщения:
    184
    Симпатии:
    66
    бесполезный кусок кода абсолютно! Откуда у тебя берутся значения $pagenum и $numpages? откуда ты его выдрал?
     
  9. Black#FFFFFF

    Black#FFFFFF

    Регистр.:
    19 июл 2007
    Сообщения:
    175
    Симпатии:
    107
    ChemicalForce нравится это.
  10. belyi_82

    belyi_82 Писатель

    Регистр.:
    18 окт 2008
    Сообщения:
    3
    Симпатии:
    0
    Ребята я делаю сейчас свой первый сайт. На нем будет видео контент с разбиением по жанрам и соответственно на каждый жанр не по одной странице. Как удобней и проще сделать переходы по большому количеству страниц? (в планах они будут расти в связи с пополнением контента)
     
Статус темы:
Закрыта.