اذهب إلى المحتوى

السؤال

نشر

 السلام عليكم ورحمة الله وبركاته , أقوم بعمل مدونة وأحتاج لتوزيع المنشورات على صفحات . أي عندما يصبح عدد  المنشورات أكبر من 20 في الصفحة الواحدة يقوم بانشاء صفحة أخرى  وهكذا , شكراً لكم

Recommended Posts

  • 0
نشر (معدل)

الشيء الذي تسأل عنه يا صديقي يسمى Pagination
لا اعلم ما البيئة التي تستخدمها او الframework ولكن هذا فيديو بسيط عن كيفية عمل pagination بأستخدام ال php and sql فقط


بتوفيق صديقي

تم التعديل في بواسطة Ahmad Tariq F
  • 0
نشر

أهلًا بك،

يساعدنا شرط LIMIT الخاص بـ MySQL في إنشاء ميزة ترقيم الصفحات؛ فهو يستخدم الوسيطتين الوسيط الأول كـ OFFSET والوسيط الثاني عدد السجلات التي سيتم إرجاعها من قاعدة البيانات.

قم باتباع هذه الخطوات البسيطة لإنشاء ترقيم الصفحات في PHP:

  • الحصول على رقم الصفحة الحالية

سيحصل هذا الرمز على رقم الصفحة الحالي بمساعدة GET Array_$، لاحظ أنه في حالة عدم وجوده، فسيتم تعيين رقم الصفحة الافتراضي على 1.

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

 

  • صيغة ترقيم الصفحات php

يمكنك دائمًا إدارة عدد السجلات التي سيتم عرضها في الصفحة عن طريق تغيير قيمة no_of_records_per_page$ للمتغير.

$no_of_records_per_page = 10;
$offset = ($pageno-1) * $no_of_records_per_page; 
  • الحصول على إجمالي عدد الصفحات
$total_pages_sql = "SELECT COUNT(*) FROM table";
$result = mysqli_query($conn,$total_pages_sql);
$total_rows = mysqli_fetch_array($result)[0];
$total_pages = ceil($total_rows / $no_of_records_per_page);
  • بناء استعلام SQL لترقيم الصفحات
$sql = "SELECT * FROM table LIMIT $offset, $no_of_records_per_page"; 
  • إنشاء أزرار ترقيم الصفحات

يتم تقديم هذه الأزرار للمستخدمين كصفحة تالية وصفحة سابقة، حتى يتمكنوا من التنقل بسهولة بين صفحاتك. هنا نستخدم زر ترقيم الصفحات من bootstrap، يمكنك استخدام الأزرار الخاصة بك إذا كنت تريد ذلك.

<ul class="pagination">
    <li><a href="?pageno=1">First</a></li>
    <li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
        <a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
    </li>
    <li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
        <a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
    </li>
    <li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
</ul>
  • دعنا نجمع كل الشيفرة البرمجية في صفحة واحدة
    <html>
    <head>
        <title>Pagination</title>
        <!-- Bootstrap CDN -->
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </head>
    <body>
        <?php
    
            if (isset($_GET['pageno'])) {
                $pageno = $_GET['pageno'];
            } else {
                $pageno = 1;
            }
            $no_of_records_per_page = 10;
            $offset = ($pageno-1) * $no_of_records_per_page;
    
            $conn=mysqli_connect("localhost","my_user","my_password","my_db");
            // Check connection
            if (mysqli_connect_errno()){
                echo "Failed to connect to MySQL: " . mysqli_connect_error();
                die();
            }
    
            $total_pages_sql = "SELECT COUNT(*) FROM table";
            $result = mysqli_query($conn,$total_pages_sql);
            $total_rows = mysqli_fetch_array($result)[0];
            $total_pages = ceil($total_rows / $no_of_records_per_page);
    
            $sql = "SELECT * FROM table LIMIT $offset, $no_of_records_per_page";
            $res_data = mysqli_query($conn,$sql);
            while($row = mysqli_fetch_array($res_data)){
                //here goes the data
            }
            mysqli_close($conn);
        ?>
        <ul class="pagination">
            <li><a href="?pageno=1">First</a></li>
            <li class="<?php if($pageno <= 1){ echo 'disabled'; } ?>">
                <a href="<?php if($pageno <= 1){ echo '#'; } else { echo "?pageno=".($pageno - 1); } ?>">Prev</a>
            </li>
            <li class="<?php if($pageno >= $total_pages){ echo 'disabled'; } ?>">
                <a href="<?php if($pageno >= $total_pages){ echo '#'; } else { echo "?pageno=".($pageno + 1); } ?>">Next</a>
            </li>
            <li><a href="?pageno=<?php echo $total_pages; ?>">Last</a></li>
        </ul>
    </body>
    </html>

    هذا كل شئ! 

المصدر:  مقال How to create Pagination with PHP and MySql لموقع myprogrammingtutorials.

كل التوفيق..

  • 0
نشر
بتاريخ 8 ساعات قال Ahmad Tariq F:

الشيء الذي تسأل عنه يا صديقي يسمى Pagination
لا اعلم ما البيئة التي تستخدمها او الframework ولكن هذا فيديو بسيط عن كيفية عمل pagination بأستخدام ال php and sql فقط


بتوفيق صديقي

شكراً لك أخي على التوضيح ... 

شكراً اختي جزاك الله خيراً

  • 0
نشر
بتاريخ 45 دقائق مضت قال Ahmed Elanzy:

في حال لم تكن تستخدم فريم ورك يمكنك مشاهدة هذا الدرس بالكامل فهو يشرح الطريقة بشكل واضح 
 

 

أنا لا أستخدم فريم ورك , تم حل المشكلة مشكور للمساعدة أخي

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...