• 0

توزيع المحتوى على عدة صفحات في php

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

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


بتوفيق صديقي

تمّ تعديل بواسطة Ahmad Tariq F
1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 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.

كل التوفيق..

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 8 ساعات قال Ahmad Tariq F:

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


بتوفيق صديقي

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

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

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

 

1 شخص أعجب بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0
بتاريخ 45 دقائق مضت قال Ahmed Elanzy:

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

 

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

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن