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

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

Mohamad Shahid

السؤال

 السلام عليكم ورحمة الله وبركاته , أقوم بعمل مدونة وأحتاج لتوزيع المنشورات على صفحات . أي عندما يصبح عدد  المنشورات أكبر من 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...