paginera MySQL resultat med PHP har ett antal fördelar . Först , snabbar det upp MySQL Query , eftersom den endast returnerar ett litet antal resultat . Det andra , det förbättrar användarens upplevelse , eftersom det visar ett hanterbart antal träffar per sida . Tredje , det sparar bandbredd genom att inte skicka onödiga resultat . Av dessa skäl har många platser , inklusive Google , Yahoo och WordPress , antog dess användning. För att använda MySQL paginering , måste du använda SQL " LIMIT " kommandot och "få" parametrarna i webbadressen. Instruktioner
1
Skapa en tabell " telefonbok " i din MySQL-databas med kolumnerna " id ", " namn " och " telefon . " Fylla bordet med några händelser . Här är de SQL-frågor för att skapa och fylla bordet , respektive :
CREATE TABLE telefonbok ( ` id ` int ( 11 ) NOT NULL AUTO_INCREMENT , ` namn ` varchar ( 100 ) NOT NULL , ` telefon ` varchar ( 20 ) NOT NULL , PRIMARY KEY ( ` id ` ) ) ;
INSERT INTO telefonbok ( ` namn ` , ` telefon ` ) VALUES ( ' Jack ' , '201 - 379 till 5406 ' ) , ( ' Jake ' , '331 - 123 till 5196 ' ) , ( ' John ' , '222 - 342 till 3250 ' ) ;
2
Skapa en ny fil " pagination.php " och öppna den med en text editor som Notepad . Skriv ett segment av kod som ansluter till din MySQL-server , med hjälp av PHP : s " mysql_connect " -funktionen , och väljer den databas som innehåller " telefonbok " tabellen , med PHP : s " mysql_select_db " funktionen . Här är ett exempel :
mysql_connect ( ' localhost ' , ' admin ' , ' lösenord ');
mysql_select_db ( "test" ) ;
tillbaka de fyra strängarna med ditt värdnamn , användarnamn , lösenord och databas , respektive.
3
Skriv ett segment av kod som anger variabeln " $ rowsPerPage " till antalet rader som ska visas per sida , sätter " $ currentPage " till sidan begäras via " $ _GET [ ' sida ' ] " eller noll om inget och ställer " $ offset " till förskjutningen för att hämta rader från databasen , beräknas genom att subtrahera en från " $ currentPage " och multiplicera med " $ rowsPerPage . " Här är ett exempel :
$ rowsPerPage = 5;
$ currentPage = ( ( isset ( $ _GET [ ' sida ' ] ) && $ _GET [ ' sida ' ] > 0 ) ? ( int ) $ _GET [ ' sida ' ] : 1 ) ;
$ offset = ( $ currentPage - 1 ) * $ rowsPerPage ,
4
Skriv en kodrad som hämtar " $ rowsPerPage " rader som börjar från offset in i " $ offset " från tabellen " telefonbok " genom att köra en " SELECT " query via PHP : s " mysql_query " funktion och sparar resultatet i en ny variabel . Här är koden :
$ result = mysql_query ( " SELECT * FROM telefonbok LIMIT ' $ offset ' , ' $ rowsPerPage . . . ) ;
5
Skriv en " tag " loop som hämtar rader från frågans resultat, " $ resultat", med hjälp av PHP : s " mysql_fetch_assoc " funktion och visar dem som en lista eller tabell . Här är ett exempel :
echo '
ID < /th > | Namn < /th > | Telefonnummer < /th > < ;/tr > ' ; while ( $ row = mysql_fetch_assoc ( $ result ) ) { echo ' |
" . $ rad [ ' id ' ] . " < /td > | " . $ rad [ ' name' ] . " < /td > | " . $ rad [ ' telefon ' ] . " < /td > < /tr > ' ; } echo " < /table > ' ; 6 Skriv ett segment av kod som hämtar antalet poster i tabellen genom att köra en " aNTAL" query via PHP : s " mysql_query " -funktion , beräknar antalet sidor genom att dividera antalet poster med " $ rowsPerPage " variabel och uppåt avrundning och sparar resultatet i en variabeln " $ totalPages . " Här är koden : $ result = mysql_query ( " SELECT COUNT ( * ) AS count FROM telefonbok '); $ row = mysql_fetch_assoc ( $ result ) ; $ totalPages = tak ( $ rad [ ' count ' ] /$ rowsPerPage ) , 7 Skriv två " om " uttalanden : en som visar en " Föregående sida " länk och en som visar en " Next sidan " länken , om respektive sida föreligger ( dvs om " $ currentPage " är större än en för " Föregående sida " och om " $ currentPage " är större än " $ totalPages " för" Nästa sida " ) . Här är koden : if ( $ currentPage > 1 ) { echo " < a href = " pagination.php sidan = ? ' ( $ CurrentPage - 1 ) " . . " > Föregående Sida < /a > ' ; } if ( $ currentPage < $ totalPages ) { echo " < a href = " sidnumrering . php sida = " > Nästa sida < /a > ' ? ' ( $ currentPage +1 ) . . " ; }
|