logo

PHP ترقيم الصفحات

يستخدم PHP في الغالب لتخزين وعرض البيانات من قاعدة البيانات. يمكن إجراء ترقيم الصفحات باستخدام أياكس، ولكن هنا يتم ذلك باستخدام غير أياكس. في هذا البرنامج التعليمي سوف نتعلم ترقيم الصفحات في 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 - أ إلى ي (1-10)

الصفحة 2 - من K إلى T (11-20)

الصفحة 3 - من الياء إلى الياء (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

سيؤدي استخدام عنوان 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. احفظ كلا الملفين في .بي أتش بي امتداد. في المثال أدناه، سوف تتعلم كيفية إنشاء صفحات أكثر إبداعًا وجاذبية.

    بي أتش بي:تم إنشاؤها للاتصال بقاعدة البياناتبي أتش بي:تم إنشاؤها لترقيم الصفحات

الملف: Connection.php

رد فعل البرنامج التعليمي JS
 

ملف: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;>