Странициране на резултати
Автор: 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;
?>Това е 🙂
Не съм махал имената на таблиците и колоните, за да се ориентирате по лесно.


