logo

עימוד PHP

PHP משמש בעיקר לאחסון והצגת נתונים ממסד נתונים. ניתן לעשות עימוד עם Ajax, אבל כאן זה נעשה ללא Ajax. במדריך זה נלמד את ה עימוד ב-PHP עם MySQL . בואו ניקח סקירה קצרה על עימוד עם דוגמה -

ייתכן ששאילתת SQL SELECT עשויה להחזיר מיליוני רשומות בחזרה. זה לא רעיון טוב להציג את כל הרשומות בעמוד בודד. רשימה גדולה של רשומות בדף בודד עשויה לקחת כל כך הרבה זמן כדי לטעון את הדף וגם לצרוך זמן כדי למצוא נתונים ספציפיים. זה עלול לגרום (להוביל) לבלבול במוחו של המשתמש. לכן, חלקו את הרשומות הללו על פני מספר עמודים בהתאם לדרישת המשתמש.

אז מה אנחנו יכולים לעשות כדי להפיץ את המספר הגדול הזה של רשומות במספר עמודים? שיטת הפצת רשימה בודדת למספר עמודים ידועה בשם דִפּוּף . ההחלפה מתייחסת להצגת תוצאת השאילתה שלך במספר דפים במקום בדף בודד.

מה זה עימוד?

עימוד הוא דרך להציג את הנתונים במספר דפים במקום להעלות אותם לעמוד בודד. עימוד עוזר לחלק את הרשומות למספר עמודים, מה שהופך את הנתונים לקריאה ומובן יותר.

עימוד היא משימה נפוצה עבור מפתחי PHP. MySQL עוזר למפתח ליצור עימוד באמצעות שימוש לְהַגבִּיל סעיף, שדורש שני טיעונים. הטיעון הראשון כמו לְקַזֵז והטיעון השני הוא מספר רשומות שיחזור ממסד הנתונים.

בואו נסתכל על כמה יתרונות וחסרונות של שימוש בקונספט עימוד ב-PHP -

היתרונות של עימוד

  • עימוד שימושי מאוד בפרויקטים בקנה מידה גדול מכיוון שהוא הופך את עבודת האינטרנט למקצועית יותר. לא רק מקצועי יותר, אלא גם גורם לדף האינטרנט לעבוד הרבה יותר מהר, מדויק ויעילה.
  • בעזרת עימוד נוכל לחסוך את זמן הטעינה של עמוד על ידי חלוקת הנתונים בדפים שונים. זה חוסך מאיתנו טעינת מידע רב בבת אחת.
    לדוגמה - לדף אינטרנט עם 1000 תמונות ייקח יותר זמן לטעון תמונות מאשר 50 התמונות בכל דף אינטרנט.
    המשמעות היא שאלפי תמונות זקוקות לאלפי בקשות HTTP, מה שיגרום לדף ללא תגובה. בעיה זו נפתרת על ידי הגבלת כמות הנתונים בעזרת עימוד באמצעות סעיף LIMIT.
  • השימוש בעימוד משפר את חווית המשתמש, הכנסות מפרסום ומפחית את זמן הטעינה של העמוד.

חסרונות של עימוד

אמנם יש כמה יתרונות חזקים של עימוד, אבל עדיין מפתחים רבים נמנעים מלהשתמש בו. יחד עם כמה יתרונות רבי עוצמה, יש גם כמה חסרונות של עימוד, שהם כדלקמן:

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

הטמעת עימוד עם PHP ו-MySQL

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

כאן נציג שתי דוגמאות לעימוד. דוגמה ראשונה היא דוגמה פשוטה ובסיסית ליצירת עימוד ללא CSS, בעוד שבדוגמה השנייה, ניצור עימוד בצורה אטרקטיבית באמצעות CSS ו-bootstrap. אתה יכול לראות את הפלט עבור שניהם. להלן השלבים שניתנו ליצירת עימוד;

שלבים פשוטים ליצירת עימוד -

  1. צור מסד נתונים וטבלה. ספק רשימה של רשומות בטבלה.
  2. התחבר למסד הנתונים של MySQL.
  3. צור את קישור העימוד כדי לפצל את הנתונים במספר דפים ולהוסיף אותם לתחתית הטבלה.
  4. אחזר נתונים ממסד הנתונים והצג אותם בעמודים המרובים.

בצע את השלב הבא אחד אחד וצור עימוד פשוט.

דוגמה 1

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

יצירת מסד נתונים

קודם כל, צור מסד נתונים בשם על ידי דִפּוּף כפי שיצרנו וטבלה בתוכה בשם אלף בית . צור תכונה לפי שם תְעוּדַת זֶהוּת ו אלף בית , וספק את הנתונים בטבלה.

עימוד PHP

קישוריות מסד נתונים

חיבור קובץ ה-PHP למסד הנתונים הוא משימה נדרשת. כך שתוכל להציג את הנתונים המאוחסנים במסד הנתונים בדף האינטרנט. לכן, חבר את מסד הנתונים בקובץ ה-PHP שלך להצגת נתונים בדף האינטרנט.

אתה יכול לכתוב קוד קישוריות למסד נתונים באותו קובץ, כמו גם לשמור אותו נפרד לקובץ אחר ולכלול אותו לקובץ ה-PHP הנדרש שלך. קוד לחיבור מסד נתונים-

 $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } 

במדריך זה, אנו משתמשים mysqli סיומת. אז כל השאילתות נכתבות לפי פורמט mysqli.

קבל את מספר העמוד הנוכחי

הקוד שלהלן קובע את מספר העמוד שבו המשתמש מבקר כעת. במקרה אם הוא אינו קיים, כברירת מחדל הוא מוגדר מספר עמוד ל-1.

 if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } 

נוסחה לעימוד

עבור עימוד, עליך להגדיר את מגבלת מספר הרשומות שיוצגו בכל עמוד. כאן, אנו מגדירים את מגבלת התוצאה לעמוד ל-10, כך שהיא תוצג בכל עמוד כפי שמוצג להלן -

עמוד 1 - A עד J (1-10)

עמוד 2 - K עד T (11-20)

עמוד 3 - U עד Z (21-26)

 $results_per_page = 10; $page_first_result = ($page-1) * $results_per_page; 

קבל מספר כולל של עמודים

 $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); 

אחזר נתונים והצג בדף אינטרנט

הקוד שלהלן משמש לאחזור הנתונים ממסד הנתונים ולהצגה בדפי האינטרנט המחולקים בהתאם.

 $query = &apos;SELECT *FROM alphabet LIMIT &apos; . $page_first_result . &apos;,&apos; . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row[&apos;id&apos;] . &apos; &apos; . $row[&apos;alphabet&apos;] . &apos;<br>&apos;; } 

הצג את הקישור של הדפים ב-URL

שימוש בקוד זה כתובת האתר של דף האינטרנט תשתנה עבור כל דף.

 for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; </=>

קוד סופי

כעת, חבר את כל הקודים בקובץ אחד לביצוע עימוד.

קובץ: Index2.php

 Pagination <?php //database connection $conn = mysqli_connect('localhost', 'root', ''); if (! $conn) { die('Connection failed' . mysqli_connect_error()); } else { mysqli_select_db($conn, 'pagination'); } //define total number of results you want per page $results_per_page = 10; //find the total number of results stored in the database $query = 'select *from alphabet'; $result = mysqli_query($conn, $query); $number_of_result = mysqli_num_rows($result); //determine the total number of pages available $number_of_page = ceil ($number_of_result / $results_per_page); //determine which page number visitor is currently on if (!isset ($_GET['page']) ) { $page = 1; } else { $page = $_GET['page']; } //determine the sql LIMIT starting number for the results on the displaying page $page_first_result = ($page-1) * $results_per_page; //retrieve the selected results from database $query = 'SELECT *FROM alphabet LIMIT ' . $page_first_result . ',' . $results_per_page; $result = mysqli_query($conn, $query); //display the retrieved result on the webpage while ($row = mysqli_fetch_array($result)) { echo $row['id'] . ' ' . $row['alphabet'] . '</br>&apos;; } //display the link of the pages in URL for($page = 1; $page<= $number_of_page; $page++) { echo ' <a href="index2.php?page=" . $page ''>&apos; . $page . &apos;  &apos;; } ?&gt; </=>

תְפוּקָה:

מערכת קבצים לינוקס

ראה את הפלט למטה לדוגמא לעימוד לעיל -

עימוד PHP

דוגמה 2

הדוגמה להלן היא דוגמה נוספת לעימוד שבה השתמשנו ב-CSS יחד עם HTML כדי להפוך את הצפייה בדף האינטרנט לאטרקטיבית יותר. CSS הופך את דף האינטרנט ליצירתי ואטרקטיבי יותר. מצד שני, MySQL מאחסן את הנתונים במסד נתונים. אז אתה יכול ללמוד עימוד הרבה יותר טוב.

כתבנו קוד שלם בקובץ בודד מלבד קישוריות מסד נתונים. לכן, ניצור שני קבצים, כלומר, connection.php ו-index1.php. שמור את שני הקבצים ב .php סיומת. בדוגמה למטה, תלמד ליצור עימוד יצירתי ואטרקטיבי יותר.

    php:נוצר עבור קישוריות מסד נתוניםphp:נוצר עבור עימוד

קובץ: connection.php

 

קובץ: index1.php

 Pagination table { border-collapse: collapse; } .inline{ display: inline-block; float: right; margin: 20px 0px; } input, button{ height: 34px; } .pagination { display: inline-block; } .pagination a { font-weight:bold; font-size:18px; color: black; float: left; padding: 8px 16px; text-decoration: none; border:1px solid black; } .pagination a.active { background-color: pink; } .pagination a:hover:not(.active) { background-color: skyblue; } <?php // Import the file where we defined the connection to Database. require_once 'connection.php'; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET['page'])) { $page = $_GET['page']; } else { $page=1; } $start_from = ($page-1) * $per_page_record; $query = 'SELECT * FROM student LIMIT $start_from, $per_page_record'; $rs_result = mysqli_query ($conn, $query); ?> <br> <p>This page demonstrates the basic Pagination using PHP and MySQL. </p> <table class="table"> <tr> <th>ID</th> <th>Name</th> <th>College</th> <th>Score</th> </tr> <tbody> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </tbody> </table> <?php $query = 'SELECT COUNT(*) FROM student'; $rs_result = mysqli_query($conn, $query); $row = mysqli_fetch_row($rs_result); $total_records = $row[0]; echo '</br>&apos;; // Number of pages required. $total_pages = ceil($total_records / $per_page_record); $pagLink = &apos;&apos;; if($page&gt;=2){ echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } ?> <input id="page" type="number" min="1" max placeholder required> Go function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p> <strong>Output:</strong> </p> <p>See the below output for above pagination example -</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-3.webp" alt="PHP Pagination"> <p>Note that code written inside the tag is used for styling and to give an attractive look to the table and pagination present inside the webpage. We also used bootstrap for this.</p> <h3>Explanation of code</h3> <p>Now, we will explain the code used for creating pagination.</p> <h3>Database creation</h3> <p>First of all, create a database named by <strong>pagination</strong> as we created and a table inside it named <strong>student</strong> . Create attribute by name <strong>Rank, Name, College,</strong> and <strong>Score</strong> , and provide at least 25 records in the table.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-4.webp" alt="PHP Pagination"> <h3>Database Connectivity</h3> <p>Connecting the PHP file to the database is a required task. In this tutorial, we are using <strong>mysqli</strong> extension. So, all the queries are written according to mysqli format.</p> <p>Database connectivity code can be written in the same file or you can also keep it separate into another file and include it to your required PHP file. Code for database connection-</p> <pre> $conn = mysqli_connect(&apos;localhost&apos;, &apos;root&apos;, &apos;&apos;); if (! $conn) { die(&apos;Connection failed&apos; . mysqli_connect_error()); } else { mysqli_select_db($conn, &apos;pagination&apos;); } </pre> <h3>Fetch data and display on webpage</h3> <p>As we have created dataset, now we need to fetch and display it to various webpages. The below code is used to retrieve the data from database and display on the webpages that are divided accordingly.</p> <h3>Fetch data</h3> <p>After establishing the database connection in &apos;connection.php&apos; file, we just need to import it into our code using require_once keyword. We will explicitly define the number of records per page to show.</p> <pre> require_once &apos;connection.php&apos;; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); </pre> <h3>Display data</h3> <p>This section is very simple. In this section, we iterate the loop over the records that we fetched and display each record stored in columns of the table.</p> <pre> <tr> <td></td> <td></td> <td></td> <td></td> </tr> </pre> <h3>Pagination Link creation</h3> <p>Now the most important code is pagination link creation. So, we will create the Previous, Next, and numeric links for pagination and add them to bottom of the table.</p> <pre> if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active' href="index1.php?page=" .$i.''>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo ' next '; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;></pre></1)?1:page));></$total_pages){></=$total_pages;>

אחזר נתונים והצג בדף אינטרנט

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

אחזר נתונים

לאחר יצירת חיבור מסד הנתונים בקובץ 'connection.php', עלינו רק לייבא אותו לקוד שלנו באמצעות מילת המפתח require_once. נגדיר במפורש את מספר הרשומות בכל עמוד להצגה.

 require_once &apos;connection.php&apos;; $per_page_record = 4; // Number of entries to show in a page. // Look for a GET variable page if not found default is 1. if (isset($_GET[&apos;page&apos;])) { $page = $_GET[&apos;page&apos;]; } else { $page=1; } //determine the sql LIMIT starting number for the results on the displaying page $start_from = ($page-1) * $per_page_record; $query = &apos;SELECT * FROM student LIMIT $start_from, $per_page_record&apos;; $rs_result = mysqli_query ($conn, $query); 

נתוני תצוגה

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

 <tr> <td></td> <td></td> <td></td> <td></td> </tr> 

יצירת קישורים לעימוד

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

 if($page&gt;=2) { echo &apos;  Prev  &apos;; } for ($i=1; $i<=$total_pages; $i++) { if ($i="=" $page) $paglink .=" &lt;a class = " active\' href="index1.php?page=" .$i.\'\'>&apos;.$i.&apos;  &apos;; } else { $pagLink .= &apos;  &apos;.$i.&apos;  &apos;; } }; echo $pagLink; if($page<$total_pages){ echo \' next \'; } < pre> <p>Without using CSS, the pagination will be created same as the screenshot below, which is similar to the example 1.</p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-5.webp" alt="PHP Pagination"> <p>After including CSS code into the index1.php file, the pagination will be looked like the screenshot below. In example 1, we have created simple pagination that was logically correct, but visually it is not so good. </p> <img src="//techcodeview.com/img/php-tutorial/93/php-pagination-6.webp" alt="PHP Pagination"> <h3>Code for Random Moment</h3> <p>In case when the number of pages is too much, this code helps us for random moment. By entering the page number in the input field, a user can directly move to that page. This code is written in JavaScript.</p> <pre> function go2Page() { var page = document.getElementById(&apos;page&apos;).value; page = ((page&gt;)?:((page<1)?1:page)); window.location.href="index1.php?page=" +page; } < pre> <p>Apart from all these codes, we have also included bootstrap into index1.php to make the table view good. This code is written inside the tag.</p> <pre> </pre> <hr></1)?1:page));></pre></$total_pages){></=$total_pages;>