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

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

$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;
?>


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

ОЩЕ УРОЦИ ЗА СТРАНИЦИРАНЕ:

http://web-tourist.net/login/login/view.php?st=955
http://web-tourist.net/login/login/view.php?st=2970
http://web-tourist.net/login/login/view.php?st=2995

/ Трябва да сте регистриран за да напишете коментар /
От: psihotto
21:07 09-09-2010
Всичо е добре кода работи!
Само има една малка подробност-не мога да изкарам данните от БД на кирилица,но на латиницата излизат!?
Пояснение: показва само бяла страница.
Какво да променя за да ми показва и данните на кирилица?
От: psihotto
1:07 10-09-2010
Всичо е добре кода работи!
Само има една малка подробност-не мога да изкарам данните от БД на кирилица,но на латиницата излизат!?
Пояснение: показва само бяла страница.
Какво да променя за да ми показва и данните на кирилица?
От: Point
21:22 03-11-2010
$conn = mysql_connect('localhost', 'root', 'Www.Lucifer.Homo.CoM') or die("Грешка! Моля съобщете на администраторите!");
$rez = mysql_select_db('design', $conn) or die("Грешка! Моля съобщете на администраторите!");
mysql_query("SET names cp1251");
1