صفحه بندی داده ها در mysql
محدود کردن رکوردهای انتخاب شده در پایگاه داده MySQL
در پایگاه داده MySQL، با استفاده از قسمت LIMIT می توانید تعداد رکوردهای برگشتی را محدود کنید.
با وجود امکان LIMIT دیگر بسادگی می توانید صفحه بندی یا pagination را روی جداول بزرگ پیاده نمایید. همان طور که می دانید در چنین جدول هایی با تعداد رکوردهای بالا، نمایش تمام رکوردها می تواند کارایی برنامه را بسیار کاهش دهد.
فرض کنید بخواهیم تمام رکوردهای 1 تا 30 از جدول "Orders" را انتخاب کنیم، بنابراین کد زیر را خواهیم داشت:
زمانی که کوئری بالا اجرا می شود، تنها 30 رکورد اول انتخاب خواهد شد.
اگر بخواهیم رکوردهای 16 تا 25 را انتخاب کنیم، چه باید کرد؟
با استفاده از دستور OFFSET در پایگاه داده MySQL می توانید مشکل بالا را حل کنید ...!
در مثال زیر، تنها 10 رکورد انتخاب می شود (LIMIT 10) اما از رکورد 16 به بعد این انتخاب صورت خواهد گرفت (OFFSET 15):
برای کوتاه تر شدن کد می توانید بصورت زیر عمل کنید:
توجه فرمایید که زمانی که از کاما (,) استفاده می کنید، گزینه های "تعداد رکوردهای برگشتی" و "نقطه شروع" برعکس خواهد شد.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 15542
دیدگاهها
ممنون
اگر دستور را به صورت زیر بنویسیم
$sql = "SELECT * FROM Orders LIMIT 15
آیا از رکورد 16 تا آخر را برای ما برمیگرداند ؟!
خیر. این دستور 15 رکورد رو برای شما بر میگردونه.
حال چطور میشود که در صفحه ما مثلا دو دکمه بعدی و قبلی داشته باشیم وقتی که کاربر روی دکمه ی بعدی کلیک کرد مقدار شروع ۱۰ واحد افزایش یاید و برای قبلی هم به صورت عکس ۱۰ واحد کم شود
مشکل می اینجاست نمیدونم که چطور در php میشه گفت وقتی که روی این دکمه کلیک شد این اتفاق بی افتید
همانطور که میدانید در php و زبان های سمت سرور خبری از رویدادها نیست و رویداد ها فقط در سمت کلاینت رخ میدهند.
سوال اصلی من این است که چطور میشود کاردکمه های قبلی و بعدی را شبیه سازی کرد
با تشکر
شما وقتی دکمه رو کلیک میکنید،میتون ید یک درخواست رو برای سرور ارسال کنید.
این درخواست شما هست که در واقع در PHP پردازش میشه و نتیجه به شما برگشت داده میشه.
با کلیک روی یک صفحه شمارهی اون صفحه برای سرور ارسال میشه و توسط کدنویسی تشخیص داده میشه که چه رکوردی تا چه شمارهای برگشت داده بشه.