חלוקה לעמודים ב-PHP

‏ • 25 ביולי, 2004

הערה: הדוגמאות מובאות עם פונקציות עבור מסד נתונים מסוג MySQL.


הסבר: לעיתים קרובות אנו רוצים לחלק את הנתונים שלנו לעמודים. הקוד הבא שולף את נתוני העמוד שבמשתנה $page, ומדפיס.


שלב 1 – קביעת הערכים של $page, $perpage.


page – מספר העמוד הנוכחי.
$perpage – מספר נתונים לכל עמוד.
נתונים אלו צריכים להתקבל ישירות עם הקישור אל הדף, ואם לא נתקבלו, יש לשים בהם ערכי ברירת מחדל:











1
2
3
4  








if($page == NULL)                // if(!isset($page))
    $page = 1;
if($perpage == NULL)
    $perpage = 10;


שלב 2 – שליפת כל הנתונים מהשאילתה


קודם כל, אנו צריכים את מספר הנתונים הכולל, כדי לדעת אילו נתונים לשלוף בעמוד הנוכחי. לכן נשלוף את כל הרשומות העונות לתנאי ה-WHERE שברצוננו לשים. למען היעילות, אפשר לשלוף רק שדה אחד קטן ביותר, כי ממילא אין שימוש בשדה עצמו, אלא רק במספר הרשומות שנשלפו.











1
2
3  








$query = "SELECT … WHERE …";        // Your query, your condition.
$result = mysql_query($query);
$nump = mysql_num_rows($result);


שלב 3 – קבלת מספר העמודים


אנו צריכים להתחיל לשלוף את הנתונים לא בהכרח מהתחלה, כי אנו יכולים להיות בעמוד שערכו גדול מ-1. לכן אנו צריכים להתחיל לשלוף מרשומה כלשהי. הרשומה הראשונה היא מספר 0, העשירית – מספר 9 וכן הלאה (כמו במערכים בשפת C וכן ב-PHP).
נחלק את מספר התוצאות הכוללות במספר התוצאות שיש להציג בכל עמוד. אם התוצאה יוצאת שלמה, אז יהיה לנו מספר העמודים. אם התוצאה לא שלמה, אז יהיה לנו מספר העמודים פחות אחת, לכן יש להפוך את התוצאה למספר שלם ולהוסיף לה 1:











1
2
3  








$nump = $nump / $perpage;
if(intval($nump) != $nump)            // האם יש שבר
    $nump = intval($nump) + 1;        // אם כן, הוסף אחד והפוך למספר שלם


כעת $nump מכיל את מספר העמודים.
נעשה לולאת for שתדפיס את התפריט למעבר בין העמודים:











1
2
3
4
5
6
7
8
9  








for($I = 1; $I<= $nump; $I++)
{
    if($page != $I)
        echo "&lt;A HREF="$PHP_SELF?page=$I"&rt;$I&lt;/A&rt;";
    else
echo $I;
    if($I != $perpage)
        echo " – ";
}


הלולאה מתחילה בעמוד 1 ועוברת עד העמוד האחרון. אם מספר העמוד שווה למשתנה I אז לא יודפס קישור לעמוד, כי זהו העמוד הנוכחי. הקישור הוא לאותו עמוד ($PHP_SELF) משום שהוא יוכל לשלוף נתונים מכל עמוד שנשים במשתנה $page.
בין כל עמוד יש הפרדה ע"י סימן מקף ( – ), ואם זה העמוד האחרון אין צורך להדפיס את המקף. אם יש 5 עמודים, זה ייראה כך:
1 – 2 – 3 – 4 – 5











1
2
3  








$lim1 = ($page – 1) * $perpage;
$query = "SELECT … WHERE … LIMIT $lim1,$perpage";
$result = mysql_query($query);


כעת נשלפו הנתונים הרצויים, וניתן להציגם.


בהצלחה!

תגיות: , , ,

תגובות בפייסבוק