Έστω ότι έχουμε ένα κατάστημα, και σε κάθε κατηγορία έχουμε πολλά προϊόντα.
Μπορούμε να τα εμφανίσουμε όλα μαζί σε μια σελίδα, το οποίο ειναι και το πιο εύκολο, ή μπορούμε να το κάνουμε να εμφανίζει 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