PHP MySQL paginering Tutorial

Paginating MySQL resultater med PHP har en rekke fordeler. Først hastigheter opp MySQL spørring, som det bare returnerer et lite antall resultater. For det andre, det forbedrer brukeropplevelsen, som det viser en håndterlig antall resultater per side. Tredje, det sparer båndbredde ved ikke å sende unødvendige resultater. Av disse grunner, har mange nettsteder, inkludert Google, Yahoo og WordPress, vedtok sin bruk. For å bruke MySQL paginering, må du bruke SQL "LIMIT" -kommandoen og "få" parametere i nettadressen.

Bruksanvisning

1 Lag en tabell "telefonbok" i MySQL database med kolonnene "id", "navn" og "telefon". Fylle bordet med noen oppføringer. Her er SQL-spørringer for å opprette og fylle ut tabellen, henholdsvis:

CREATE TABLE telefonbok ( id int (11) NOT NULL AUTO_INCREMENT, name varchar (100) NOT NULL, telephone varchar (20) NOT NULL, PRIMARY KEY ( id ));

Sett inn i telefonboken ( name , telephone ) VALUES ( 'Jack', '201-379-5406'), ( 'Jake', '331-123-5196'), ( 'John', '222-342-3250') ;

2 Opprett en ny fil "pagination.php" og åpne den med et tekstredigeringsprogram som Notisblokk. Skriv et segment av kode som kobles til MySQL-serveren, ved hjelp av PHP er "mysql_connect" -funksjonen, og velger databasen som inneholder "telefonbok" tabellen, ved hjelp av PHP er "mysql_select_db" -funksjon. Her er et eksempel:

mysql_connect ( 'localhost', 'admin', 'passord');

mysql_select_db ( 'test');

Bytt ut de fire strenger med vertsnavn, brukernavn, passord og database, henholdsvis.

3 Skriv et segment av kode som setter variabelen "$ rowsPerPage" til antall rader som skal vises per side, setter "$ currentPage" for å på siden via "$ _GET [ 'side']" eller null hvis ingen og sett " $ offset "til forskyvningen for å hente rader fra databasen, beregnet ved å trekke en fra« $ currentPage "og multiplisere med« $ rowsPerPage ". Her er et eksempel:

$ RowsPerPage = 5;

$ CurrentPage = ((isset ($ _ GET [ 'side']) && $ _GET [ 'side']> 0) (int) $ _ GET [ 'side']: 1);

$ Offset = ($ currentPage-1) * $ rowsPerPage;

4 Skriv en linje med kode som henter "$ rowsPerPage" rader som starter fra forskyvningen satt i "$ offset" fra tabellen "telefonbok" ved å utføre en "SELECT" søket via PHP er "mysql_query" -funksjonen og lagrer resultatet i en ny variabel. Her er koden:

$ Resultat = mysql_query ( "SELECT * FROM telefonbok GRENSE '$ offset', '$ rowsPerPage...);

5 Skriv en "mens" loop som henter rader fra spørringen resultatsettet, "$ resultat," ved hjelp av PHP er "mysql_fetch_assoc" -funksjonen og viser dem som en liste eller tabell. Her er et eksempel:

echo '<table> <tr> <th> ID </ th> <th> navn </ th> <th> Telefonnummer </ th> </ tr>';

while ($ rad = mysql_fetch_assoc ($ resultat)) {

echo '<tr> <td>'. $ Rad [ 'id']. </ Td> <td> '. $ Rad [ 'navn']. </ Td> <td> '. $ Rad [ 'telefon']. </ Td> </ tr> ';

}

echo '</ table>';

6 Skriv et segment av kode som henter antall oppføringer i tabellen ved å utføre en «Greven» spørring via PHP er "mysql_query" -funksjonen, beregner antall sider ved å dele antall oppføringer av "$ rowsPerPage" variable og avrunding oppover og lagrer resultatet i en variabel "$ totalPages." Her er koden:

$ Resultat = mysql_query ( "SELECT COUNT (*) AS telle fra telefonboken ');

$ P = mysql_fetch_assoc ($ resultat);

$ TotalPages = himling ($ rad [ 'count'] / $ rowsPerPage);

7 Skriv to "hvis" uttalelser: en som viser en «Forrige Side" linken og en som viser en "Neste side" linken, hvis den respektive siden eksisterer (det vil si, hvis "$ currentPage" er større enn én for "Forrige side" og hvis "$ currentPage" er større enn "$ totalPages" for "Neste side"). Her er koden:

if ($ currentPage> 1) {

echo "<a href="pagination.php?page=' ($currentPage-1)'"> Forrige Side betaler.. ';

}

if ($ currentPage <$ totalPages) {

echo '.. <a href="pagination.php?page=' ($currentPage+1)'"> Neste side </a>';

}