Έστω ότι έχουμε ένα κατάστημα, και σε κάθε κατηγορία έχουμε πολλά προϊόντα.
Μπορούμε να τα εμφανίσουμε όλα μαζί σε μια σελίδα, το οποίο ειναι και το πιο εύκολο, ή μπορούμε να το κάνουμε να εμφανίζει 10-15-20 προϊόντα κάθε φορά, το οποίο είναι λίγο πιο περίπλοκο αλλά ταυτόχρονα και το πιο σωστό και χρηστικό.
Για να γίνει αυτό θα χρησιμοποιήσουμε τον τελεστή LIMIT της mysql.
Αυτός ο τελεστής μπορεί να πάρει 1 ή 2 ορίσματα, και λειτουργεί ως εξής:
Δίνοντας 2 ορίσματα, το 1ο είναι από ποια εγγραφή και μετά να διαβάσει, ενώ το 2ο είναι πόσες εγγραφές να διαβάσει.
Δίνοντας 1 όρισμα, τότε απλά προσδιορίζουμε πόσες εγγραφές θέλουμε να διαβάσουμε από την αρχή.
Στην προκειμένη περίπτωση χρησιμοποιούμε 2 ορίσματα, προσδιορίζοντας με αυτόν τον τρόπο και από ποια εγγραφή να ξεκινήσει να διαβάζει και πόσες να διαβάσει.
Η όλη ιδέα λειτουργεί ως εξής:
- Μετράμε πρώτα πόσες είναι όλες οι εγγραφές.
- Ορίζουμε μια μεταβλητή η οποία θα είναι το πλήθος των εγγραφών που θα εμφανίζονται ανά σελίδα.
- Ελέγχουμε σε ποια σελίδα βρισκόμαστε τώρα.
- Προσδιορίζουμε το από ποια εγγραφή θέλουμε να ξεκινήσουμε την ανάγνωση
- Κάνουμε το ερώτημα χρησιμοποιώντας τον τελεστή LIKE.
- Τέλος εμφανίζουμε τα αποτελέσματα, μαζί με links για την πλοήγηση στα αποτελέσματα.
Ιδού και ο κώδικας:
<?php $con = mysql_connect("localhost", "root", "root"); if($con) { if(mysql_select_db("tests",$con)) { $maxPerPage = 10; //Vlepoume to plithos twn eggrafwn $query = "SELECT * FROM pagination"; $res = mysql_query($query); $rows = mysql_num_rows($res); //se periptwsi pou exoume zitisei kapoia sygkekrimeni selida //tote pairnoume tin zitoumeni, alliws pairnoume tin 1i if(isset($_GET['page'])) { $curPage = $_GET['page']; } else { $curPage = 1; } //Ypologizoume apo poia eggrafi kai meta na diavasei $startFrom = ($curPage-1) * $maxPerPage; $query = "SELECT item_name FROM pagination LIMIT $startFrom, $maxPerPage"; $res = mysql_query($query); if($res) { $data = array(); while($row = mysql_fetch_object($res)) { $data[] = $row; } } //i teleutaia selida einai i diairesi tou plithous twn eggrafwn //me ton arithmo twn eggrafwn ana selida, stroggulopoiimeno //ston epomeno akeraio $lastPage = ceil($rows/$maxPerPage); } } ?> <html> <head> <title>Pagination with PHP</title> </head> <body> <?php //kai telos emfanizoume ta apotelesmata echo "<ul>"; foreach($data as $tmpRow) { echo "<li>". $tmpRow->item_name ."</li>"; } echo "</ul>"; echo "Page $curPage from $lastPage <br />"; if($curPage != 1) { echo "<a href='". $_SERVER['PHP_SELF'] ."?page=". ($curPage-1) ."'><< Previous</a> "; } if($curPage != $lastPage) { echo "<a href='". $_SERVER['PHP_SELF'] ."?page=". ($curPage+1) ."'>Next >></a>"; } ?> </body> </html>
Το παραπάνω μπορεί να γίνει πλήρως παραμετροποιήσιμο έτσι ώστε να πάρει την μορφή συνάρτησης και να μη γράφεται συνέχεια ο ίδιος κώδικας.
Τον κώδικα μπορείτε να τον κατεβάσετε από εδώ:
http://www.mediafire.com/?3h37d3kx4j0f1md
Σχόλια και προτάσεις ευπρόσδεκτα.
No comments:
Post a Comment