تغییر استایل پست ها در یک حلقه
- [ زمان انتشار : پنجشنبه 25 مهر 1398 ] [ برچسب ها: تغییر استایل پست ها در یک حلقه، offset in php، offset در php ، ] [ 301 بار مشاهده شده ]
![تغییر استایل پست ها در یک حلقه](http://imitran.ir/uploads/1398/07/offset_php_picpost.jpg)
سلام و وقت بخیر
آموزش تغییر استایل پست ها در یک حلقه
مدتی پیش قالب های خبری رو نگاه میکردم تا شاید بتونم ازشون در طراحی ها ایده بگیرم. تو بعضی قالب ها دیدم که از یک دسته بندی خاص، 4 عکس نمایش میده اما یک عکس بزرگ و بقیه با استایل متفاوت و کوچکتر هستن، هر چقدر دنبال این موضوع در زمینه برنامه نویسی رفتم متوجه نشدم. از چند شخص برنامه نویس هم که سوال کردم یا نتونستن منظورم رو بفهمن یا اینکه فهمیدن و بلد نبودن. به هرحال با تلاش فراوانی که کردم تونستم این مشکل رو برطرف کردم.
از اون جاییکه احساس کردم دوستانی مثل من در این موضوع تفکر کرده و به نتیجه نرسیدن این بحث رو به اشتراک بزارم شاید به دردشون بخوره. این موضوع به قدری ساده و پیش پا افتاده هست که بعد از مطالعه موضوع به عمق سادگی اون پی خواهید برد.
برای اینکه متوجه منظور بنده شوید پایین مطلب بخش گالری یه سر بزنید و دوتا عکسی رو که گذاشتم ببینید. اگر عکس ها رو دیدین فکر کنم کاملا متوجه شدین که چه خبر هست. دقیقا می خواهیم این کار رو هندل کنیم.
اگر برنامه نویس باشید منظور خط زیر را در MySqlمی دانید
$sql = "SELECT * FROM customers LIMIT 1";
خروجی کد بالا با کمی تغییرات در برنامه نویسی بدین شکل خواهد بود :
[ { id: 1, name: 'Mehran', address: 'iran'} ]
شما اگر خروجی کوئری خود را داخل حلقه بزارید عملا تمام تصاویر به یک صورت مشاهده خواهید کرد. حال برای رفع این مورد باید چه کار کرد؟؟؟!
برای این مورد باید شما یک کوئری جدید بزنید اما این کوئری متفاوت از قبلی خواهد بود. دقت کنید :
$sql_two = "SELECT * FROM customers LIMIT 6 OFFSET 1";
دقت کنید خروجی کوئری بالا به شکل زیر خواهد بود :
[ { id: 2, name: 'Elnaz', address: 'iran'}, { id: 3, name: 'masoud', address: 'iran'}, { id: 4, name: 'mahsa', address: 'iran'}, { id: 5, name: 'samira', address: 'iran'}, { id: 6, name: 'mehrdad', address: 'iran'}, { id: 7, name: 'kimiya', address: 'iran'} ]
اگر زرنگ باشید با مشاهده کدهای بالا فهمیدید که چه اتفاقی افتاد. حال برای اینکه کامل درک کنید توضیح مختصری برایتان می نویسم.
در کوئری اول 1 مشتری گرفتیم و اون رو داخل حلقه میزاریم و نمایش میدیم. بعد از حلقه اول باید حلقه دیگری در همان تیبل بزنیم منتها اون یک موردی که نمایش دادیم رو باید از نتایج کوئری حذف کنیم برای حذف این مورد از OFFSET در MySql استفاده می کنیم.OFFSET هر چه باشد از نتایج ما به تعداد اون از نتایج کوئری حذف می کند. برای مثال اگر حلقه اول شما 2 تا عکس بزرگ بخواین داشته باشید ابتدا نتیج کوئری را با Limit 2 محدود می کنید و سپس در حلقه بعدی با OFFSET 2 اون دو مورد اول که انتخاب شده بود را از نتایج حذف می کنیم.
امیدوارم تونسته باشم موضوع رو برایتان بیان کنم. اگر موردی بود از طریق نظرات بفرمایید تا راهنمایی بیشتری بکنم.