ساخت صفحه بندی با PHP و Mysql همانند گوگل

  • آپدیت شده در تاریخ

ساخت صفحه بندی با PHP و Mysql همانند گوگل

در این آموزش PHP قصد داریم به شما نحوه ساخت صفحه بندی با PHP و Mysql همانند گوگل را نشان بدیم.

در آموزش های قبلی ارایه شده توسط نت پارادیس نحوه ساخت انواع صفحه بندی (pagination) را نشان دادیم :

ولی در این آموزش نحوه ساخت صفحه بندی با PHP بصورت ساده و بدون استفاده از Ajax را یاد بدیم.

در این آموزش٬ دو نوع کنترل برای پیمایش نتایج صفحه بنده شده داریم.

اولی٬ لینک های صفحه بندی برای هدایت ما به صفحه مدنظر و بعدی هم یک ورودی متن (input)  برای وارد کردن شماره صفحه است. با سابمیت کردن این شماره صفحه٬ می توانیم به صفحه مورد نظر بریم.

من مثال آموزش ساخت صفحه بندی با PHP و Mysql همانند گوگل را با یک مثال ساده پیاده سازی کردم. که البته همین مثال را بصورت ajax در مقالات قبلی دیدیم.

من صفحه بندی را برای لیست نتایج دیتابیس از نام حیوانات طراحی کردم. تعداد لینک ها بر اساس تعداد رکوردهای جدول animal تغییر می کند.

تعداد نمایش نتایج در هر صفحه نیز از طریق یک ثابت در کلاس Config قابل تنظیم است.

 

پلاگین ها برای فعال کردن قابلیت صفحه بندی (pagination)

پلاگین های زیادی برای ساخت سریع صفحه بندی وجود دارند که از  بین آنها Pagination.js و jqPaginator بسیار کاربردی و در عین حال سبک هستند.

Datatables  یکی از محبوب ترین کتابخانه هایی است که برای مدیریت جداول داده ای استفاده می شود. این کتابخانه دارای جستجو٬ صفحه بندی٬ ترتیب بندی و دیگر قابلیت ها است.

در یک مقاله قبلی نحوه پیاده کردن Datatables برای لیست کردن رکوردها با صفحه بندی را دیدیم.

با گفتن همه این ها٬ بهتر است کد سفارشی خودمان را بنویسیم. چراکه پلاگین  و کتابخانه های خارجی فقط اپلیکیشن ما را کند می کنند.

 

ساختار فایل ها

مثال ما شامل فایل ها زیر است :

ساخت صفحه بندی با PHP و Mysql همانند گوگل

فایل index.php همان صفحه اصلی HTML ما است که برای نمایش لینک های صفحه بندی و نتایج صفحه فعلی استفاده می شود.

دو فایل CSS نیز برای استایل دهی چیدمان صفحه ما در این مثال استفاده شده اند.

فایل Model/Pagination.php نیز شامل توابعی برای واکشی داده های Mysql است که پارامترهایی برای ست کردن limit در کوئری SELECT دریافت می کند.

ساختار فایل ما شامل یک اسکریپت SQL هم است که برای ساخت دیتابیس مثال  ساخت صفحه بندی با PHP و Mysql استفاده می شود.

 

اسکریپت دیتابیس

 

ساخت صفحه اصلی با دکمه های صفحه بندی

این لندینگ پیچ نتایج دیتابیس را با آپشن صفحه بندی را نمایش می دهد. کد HTML زیر شامل کدهای PHP برای نمایش نتایج صفحه بندی شد است.

این مثال علاوه بر لینک های ناوبری عقب و جلو صفحه بندی, شامل یک فرم  برای وارد کردن شماره صفحه مدنظر نیز است.

تابع pageValidation() یک متد جاواسکریپت برای تایید شماره صفحه وارد شده است.

اگر باکس ورودی شامل داده غیرمعتبر بود٬  مقدار false برگشت داده می شود. پس از سابمیت شدن و رفتن به صفحه بعدی جلوگیری می کند.

استایل های زیر مربوط به فایل pagination.css هستند که CSS های جدول و المان های صفحه بندی را شامل می شود.

 

کد Php دریافت نتایج صفحه بندی شده

این اسکریپت php برای خواندن نتایج دیتابیس و دریافت شماره رکورد٬ شماره صفحات استفاده شده است.

شماره صفحات بر اساس تعداد نتایج و مقدار LIMIT_PER_PAGE تغییر می کند.

اگر صفحات زیاد بودند٬ این اسکریپت ما فقط صفحات لیمیت شده را همانند صفحه بندی گوگل نمایش میدهد. این قابلیت به ما کمک می کند که بلوک صفحه بندی بدرستی در قالب صفحه نمایش داده شود.

در پیمایش پی در پی صفحه٬ لینک های صفحه بندی بیشتری نمایان می شود.

 

کلاس ها٬ کتابخانه ها و کانفیگ های استفاده شده

این یک کتابخانه معمولی استفاده شده در بیشتر پروژه های ما است و اینجا فقط توابع استفاده شده در این مثال را نشان دادیم.

برای دریافت کد کامل می توانید از باکس دانلود٬ سورس اضافه شده به آموزش ساخت صفحه بندی با PHP و Mysql همانند گوگل را دریافت کنید.

 

فایل Config.php

ما محدودیت نمایش رکورد ها در هر صفحه را بصورت یک ثابت (constant) ذخیره کردیم که برای ست کردن limit در کوئری SELECT از آن استفاده می کنیم.

شما می توانید ثابت های بیشتری برای کار با اسکریپت صفحه بندی با PHP را اینجا اضافه کنید.

برای مثال٬  می توانید یک ثابت SHOW_ALL_LINKS برای فعال/غیرفعال کردن محدودیت نمایش لینک ها اضافه کنید یا اینکه اطلاعات دیتابیس را اینجا تعریف و در کلاس بالا استفاده کنید.

 

خروجی آموزش ساخت صفحه بندی با PHP و Mysql همانند گوگل

اسکرین شات زیر خروجی مثال ساخت صفحه بندی با PHP و Mysql را نشان می دهد.که همانطور که می بینید در هر صفحه ۵ رکورد را چاپ می کنیم.

در سمت چپ٬ لینک های صفحه قبلی و بعدی قرار گرفتند و در سمت راست یک فرم HTML برای وارد کردن شماره صفحه ایجاد کردیم.

ساخت صفحه بندی با PHP و Mysql همانند گوگل

امیدوارم از آموزش ساخت صفحه بندی با PHP و Mysql همانند گوگل نهایت استفاده را برده باشید.

برای دانلود سورس کد و دیتابیس از باکس دانلود استفاده کنید.

هر سوالی داشتید ، از قسمت نظرات ارسال کنید . سریعا ، پاسخگوی سوالات شما هستیم .

موفق و پیروز باشید.

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۷)

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

  1. محمود رنجبر ۱۲ تیر ۱۴۰۰

    سلام مهندس شفیعی
    وقتی inspect میگیریم تو موبایل لودینگ دور میزنه و چیزی لود نمیشه اما دسکتاپ درست کار میکنه
    علت چیه ؟

    پاسخ
  2. محمود رنجبر ۱۲ تیر ۱۴۰۰

    سلام مهندس شفیعی توصیه شما اینه از اسکرول بینهایت استفاده کنیم ؟
    و اینکه در اسکرول بینهایت در ابتدا فقط چند ایتم اولی لود میشه درسته وبقیه بعد از اسکرول لود میشن ؟

    پاسخ
    1. حسن شفیعی ۱۲ تیر ۱۴۰۰

      سلام. بله

      پاسخ
  3. مهدی بقایی ۴ اسفند ۱۳۹۹

    خیلی خیلی ممنونم از سایتتون وااقعا مطالب عاالی بودن خسته نباشید میگم به مدیر محترم سایت
    من برای هیچ سایتی نظر نذاشتم اولین باره که دارم برای این سایت نظر میزارم
    (مطلاب رو معمولا از همه سایت ها دارن اما کامل بودن و مفهومی بودن مطلب خیلی مهه که متاسفانه کم پیدا میشه).
    تشکر میکنم .

    پاسخ
    1. حسن شفیعی ۴ اسفند ۱۳۹۹

      سلام. خیلی خوشحالیم که مفید واقع شده.
      ممنون از نظر مثبت و پر انرژی شما.
      موفق باشید.

      پاسخ
  4. پوریا ۱۲ شهریور ۱۳۹۹

    با سلام
    تشکر بابت آموزش مفیدتون. فقط اگر امکانش هست لطفا سورس کد این آموزش رو قرار بدید خیلی خوب میشه. تو بخش دانلود باکس فیلدی برای ارسال ایمیل و دریافت لینک وجود نداره.
    باتشکر

    پاسخ
    1. حسن شفیعی ۱۲ شهریور ۱۳۹۹
      1. پوریا ۱۳ شهریور ۱۳۹۹

        سلام
        سپاسگزارم

        پاسخ
دوره های آموزشی