Było już o porcjowaniu zapytań w bazie tekstowej, teraz nadszedł czas na
MySql...
W MySql jest to tym łatwiejsze że wszystko odbywa się za pomocą parametru
LIMIT podawanego w zapytaniu np:
$zapytanie="SELECT * FROM wyszukiwarka
WHERE opis LIKE '%$searchtext%' ORDER by id DESC"
LIMIT 0,10;
takie zapytanie pobierze dane od rekordu 0 do 10....
tak więc cały problem to przekazanie tych parametrów do następnej strony
dodanie odpowiedniej liczby i wyświetlenie...
zatem spróbujmy to zrobić na przykładzie prostej wyszukiwarki:
<?php
if(($s=="") && ($e=="")){
$s="0";
//ustawiamy limit na 20 pozycji na stronie
$e="20";
}
//łączymy się z bazą
$conn = mysql_connect("localhost","user","password");
mysql_select_db("MOJABAZA");
$zapytanie="SELECT * FROM wyszukiwarka WHERE opis LIKE '%$searchtext%'
ORDER by id DESC" LIMIT $s,$e;
$wynik=mysql_query($zapytanie); echo"Wyniki wyszukiwania dla zapytania: <b>$searchtext</b><br><br>";
//teraz zliczymy sobie ilość rekordów, będzie nam to potrzebne aby wiedzieć
czy
//czy utworzyć link "następna strona" jeśli będzie
to potrzebne
list($ile)=mysql_fetch_row(mysql_db_query("MOJABAZA","SELECT
count(*) FROM wyszukiwarka WHERE opis LIKE '%$w%'"));
//generujemy linki do następnej strony jeśli rekordów jest więcej niż tych
wyświetlonych echo"<center>"; if($ile <= $e){ echo"<img src=\"img/bc.jpg\" border=\"0\">
<a href=\"javascript:history.back();\">poprzednia
strona</a>";
} if(($ile <= $e) && ($ile > $e)){ echo" | ";
} if($ile > $e){ echo"<a href=\"$url/show_l.phtml?s=$e&e=".$b=$e+$e."\">następna
strona</a> <img src=\"img/nx.jpg\" border=\"0\">";
} echo"</center>";
?>
przekazując cyferki w linku (<a href=\"show_l.phtml?s=$e&e=".$b=$e+$e."\">)
powodujemy że wartość LIMIT $s,$e
wciąż jest zwiększana np.
przy pierwszym wyświetleniu strony ten link będzie wyglądał tak:
<a href=\"show_l.phtml?s=20&e=40\">
tak więc przy pierwszym wyświetleniu dostaniemy pozycje od 0 do 20 a w linku
przekażemy informacje o tym że na nastepnej stronie mają zostać wyświetlone
pozycje od 20 do 40. To oczywiście przykład najprostszy z możliwych... chodzi tylko o to żeby
zrozumieć zasadę działania takiego porcjowania.... w następnej części
opiszę jak zrobić porcjowanie na zasadzie linków na stronie w stylu [1] [2]
[3] [4] [5] tak jak to ma miejsce na przykład na Google. ...na razie polecam poćwiczenie na prostszym przykładzie, a ten powinien być
idealny.