Webmaster общности: Predpriemach.com | SearchEngines.bg

    Странициране на резултати

    Автор: Soul_Stealler

    В този урок ще ви покажа че страницирането на резултати след заявка към базата данни, не е толкова трудно.

    Първо си нагласяте хост, потребител, парола, ДБ.

    $conn = mysql_connect('localhost', 'root', '1234567890') or die("Грешка! Моля съобщете на администраторите!");
    $rez = mysql_select_db('test', $conn) or die("Грешка! Моля съобщете на администраторите!");

    След това нагласяте

    $the_limit = "30"; /// По колко резултата на страница
    $the_query = "SELECT * FROM gradove order by id"; /// Заявката
    $listed = ""; /// Това може да го комбинирате с листването на резултати - примерно да е начало на таблица.
    $listed_end = ""; /// Виж горното описание. Единствената разлика е че това ще е края на таблицата

    Следва кода:

    $page = trim($_GET['page']); /// Взимаме номера на страницата и махаме разстоянията
    if(is_numeric($page)){ /// Проверка дали номера на страницата е число
    $page = $page * $the_limit;
    if( (!$page) or ($page == "0") ){ /// Дали е избрана страница
    $a = "0";
    $b = $the_limit;
    } else {
    $a = $page;
    $b = $a + $the_limit;
    }
    } else {
    $a = "0";
    $b = $the_limit;
    }
    
    
    $query = $the_query." limit $a, $the_limit";
    $result = mysql_query($query, $conn) or die (mysql_error());
    $result_all = mysql_query($the_query, $conn) or die (mysql_error());
    $num_all = mysql_num_rows($result_all);
    while($red = mysql_fetch_array($result)){
    $listed.= $red['grad'].", "; /// Виж по горе описанието за $listed и $listed_end. В случая тук се наглася средата на таблицата. Т.е. м/у <table> и </table>
    }
    $num_pages = ceil($num_all / $the_limit); /// Намира се броя на страниците
    for($i=0;$i<$num_pages;$i++){
    $name = $i;
    $name++;
    if($name != $num_pages){ /// Проверяваме колко са страниците и махаме последното |
    $last = " | ";
    } else $last = "";
    
    
    $pages.= "<a href=\"?page=".$i."\">".$name."</a>".$last; /// Как да се показват страниците
    }

    Това е кода до тук … лесно, нали.
    Сега остава само да се покажат резултатите.

    echo "Показване на резултати от ".$a." до ".$b."<br /><br />";
    echo $listed.$listed_end;
    echo "<br /><br />";
    echo $pages;

    Ето го и примерния готов код :

    <?php
    $conn = mysql_connect('localhost', 'root', '1234567890') or die("Грешка! Моля съобщете на администраторите!");
    $rez = mysql_select_db('test', $conn) or die("Грешка! Моля съобщете на администраторите!");
    
    $the_limit = "30";
    $the_query = "SELECT * FROM gradove order by id";
    $listed = "";
    $listed_end = "";
    
    $page = trim($_GET['page']);
    if(is_numeric($page)){
    $page = $page * $the_limit;
    if( (!$page) or ($page == "0") ){
    $a = "0";
    $b = $the_limit;
    } else {
    $a = $page;
    $b = $a + $the_limit;
    }
    } else {
    $a = "0";
    $b = $the_limit;
    }
    
    
    $query = $the_query." limit $a, $the_limit";
    $result = mysql_query($query, $conn) or die (mysql_error());
    $result_all = mysql_query($the_query, $conn) or die (mysql_error());
    $num_all = mysql_num_rows($result_all);
    while($red = mysql_fetch_array($result)){
    $listed.= $red['grad'].", ";
    }
    $num_pages = ceil($num_all / $the_limit);
    for($i=0;$i<$num_pages;$i++){
    $name = $i;
    $name++;
    if($name != $num_pages){
    $last = " | ";
    } else $last = "";
    
    
    $pages.= "<a href=\"?page=".$i."\">".$name."</a>".$last;
    }
    
    
    echo "Показване на резултати от ".$a." до ".$b."<br /><br />";
    echo $listed.$listed_end;
    echo "<br /><br />";
    echo $pages;
    ?>

    Това е 🙂
    Не съм махал имената на таблиците и колоните, за да се ориентирате по лесно.

    Оставете коментар