Podział na strony wyników zapytań MySQL
Wraz ze wzrostem bazy danych wyświetlanie wszystkich wyników zapytania na jednej stronie nie jest już praktyczne. To tutaj paginacja w PHP oraz MySQL przydaje się. Możesz wyświetlać wyniki na wielu stronach, z których każda jest połączona z następną, aby umożliwić użytkownikom przeglądanie treści Na twojej stronie w kawałkach wielkości kęsa.
01 z 04
Ustawianie zmiennych
Poniższy kod najpierw łączy się z bazą danych. Następnie musisz wiedzieć, którą stronę wyników wyświetlić. The if (!(isset($pagenum))) kod sprawdza, czy numer strony ($wygnanie) nie jest ustawiona, a jeśli tak, ustawia ją na 1. Jeśli istnieje już ustawiony numer strony, ten kod jest ignorowany.
Uruchamiasz zapytanie. The $dane wiersz należy edytować, aby zastosować do swojej witryny i zwrócić to, czego potrzebujesz, aby zliczyć wyniki. The $wiersze line następnie po prostu zlicza liczbę wyników dla Twojego zapytania.
Następnie definiujesz $page_rows , czyli liczba wyników, które chcesz wyświetlić na każdej stronie przed przejściem na następną stronę wyników. Następnie możesz obliczyć całkowitą liczbę stron, które posiadasz ($ostatni) dzieląc łączną liczbę wyników (wierszy) przez liczbę wyników, które chcesz uzyskać na stronie. Użyj CEIL tutaj, aby zaokrąglić wszystkie liczby do następnej liczby całkowitej.
Następnie kod przeprowadza kontrolę, aby upewnić się, że numer strony jest prawidłowy. Jeśli liczba jest mniejsza niż jeden lub większa niż łączna liczba stron, resetuje się do najbliższego numeru strony z treścią.
Na koniec ustalasz zakres ($maks. ) dla wyników za pomocąFunkcja LIMIT. Początkowy numer jest określany przez pomnożenie wyników na stronie o jeden mniej niż bieżąca strona. Czas trwania to liczba wyników wyświetlanych na stronie.
02 z 04Kod do ustawiania zmiennych stronicowania
// Łączy się z bazą danych
mysql_connect('twój.adres_hosta.com', 'nazwa użytkownika', 'hasło') or die(mysql_error());
mysql_select_db('adres') lub die(mysql_error());
//To sprawdza, czy istnieje numer strony. Jeśli nie, ustawi go na stronie 1
if (!(isset($pagenum)))
{
$wygnany = 1;
}
//Tu liczymy ilość wyników
//Edytuj $data, aby była Twoim zapytaniem
$data = mysql_query('WYBIERZ * Z najlepszych stron') or die(mysql_error());
$wiersze = mysql_num_rows($dane);
//To jest liczba wyników wyświetlanych na stronie
$page_rows = 4;
//To mówi nam numer strony naszej ostatniej strony
$ostatnia = ceil($wiersze/$wiersze_strony);
//to gwarantuje, że numer strony nie jest niższy niż jeden lub więcej niż maksymalna liczba stron
jeśli ($strona<1)
{
$wygnany = 1;
}
elseif ($pagenum > $ostatni)
{
$wygnanie = $ostatni;
}
//To ustawia zakres do wyświetlenia w naszym zapytaniu
$max = 'limit' .($pagenum - 1) * $page_rows .',' .$page_rows;
03 z 04Zapytanie i wyniki
Ten kod ponownie uruchamia zapytanie z wcześniejszej wersji, tylko z jedną niewielką zmianą. Tym razem obejmuje to $maks. zmienna, aby ograniczyć wyniki zapytania do tych, które należą do bieżącej strony. Po zapytaniu wyświetlasz wyniki w normalny sposób, używając dowolnego formatowania.
Po wyświetleniu wyników wyświetlana jest bieżąca strona wraz z łączną liczbą istniejących stron. Nie jest to konieczne, ale dobrze jest wiedzieć.
Następnie kod generuje nawigację. Założenie jest takie, że jeśli jesteś na pierwszej stronie, nie potrzebujesz linku do pierwszej strony. Ponieważ jest to pierwszy wynik, poprzednia strona nie istnieje. Więc sprawdzanie kodu (jeśli ($strona == 1) ) aby sprawdzić, czy odwiedzający jest na pierwszej stronie. Jeśli tak, to nic się nie dzieje. Jeśli nie, PHP_SELF i numery stron generują linki do pierwszej i poprzedniej strony.
Robisz prawie to samo, aby wygenerować linki po drugiej stronie. Jednak tym razem sprawdzasz, czy nie jesteś na ostatniej stronie. Jeśli tak, to nie potrzebujesz linku do ostatniej strony, ani następnej strony nie istnieje.
04 z 04Kod dla wyników stronicowania
//To znowu twoje zapytanie, to samo... jedyną różnicą jest to, że dodajemy do niego $max
$data_p = mysql_query('WYBIERZ * Z najlepszych stron $max') or die(mysql_error());
//Tutaj wyświetlasz wyniki zapytania
while($info = mysql_fetch_array($data_p))
{
Drukuj $info['Nazwa'];
Echo '
';
}
Echo '
';
// Pokazuje użytkownikowi, na jakiej stronie się znajduje, i całkowitą liczbę stron
echo ' --Strona $ ostatnia - strona
';
// Najpierw sprawdzamy, czy jesteśmy na pierwszej stronie. Jeśli tak, to nie potrzebujemy linku do poprzedniej lub pierwszej strony, więc nic nie robimy. Jeśli nie, to generujemy linki do pierwszej strony i do poprzedniej strony.
jeśli ($strona == 1)
{
}
w przeciwnym razie
{
Echo ' <<-First';
Echo ' ';
$poprzedni = $numer strony-1;
Echo ' <-Previous';
}
//tylko odstępnik
Echo ' ---- ';
//To samo, co powyżej, tylko sprawdza, czy jesteśmy na ostatniej stronie, a następnie generuje linki Następna i Ostatnia
if ($awaynum == $last)
{
}
w przeciwnym razie {
$następny = $numer strony+1;
Echo 'Dalej ->';
Echo ' ';
Echo 'Ostatnie ->>';
}
?>