PDA

View Full Version : نمایش عکس پروفایل به صورت رندوم



mohsen00
جمعه 29 تیر 1397, 16:41 عصر
درود
کد php نمایش عکس پروفایل کاربران رو دارم به این صورته که هر کی ثبت نام میکنه عکسش میره اخر لیست نمایش میده
ولی من میخاستم هر کی جدیدا ثبت نام میکنه عکس پروفایل میزاره اول لیست بیاد یا اینکه اصلا عکسا رندوم بشه
((تو این کد تعداد نمایش عکس ها بر روی 18 تنظیم شده و هر کی همون اول ثبت نام کرده عکسش فقط تو این 18 تا میاد بقیه ش نشون نمیده برای همین خاطر میخام یا رندوم بشه یا کسی که تازه ثبت نام کرد پروفایل عکس گذاشت بین این 18 تا قرار بگیره یعنی برعکس روش اول که تو این کد هست ))

Arioun
جمعه 29 تیر 1397, 21:25 عصر
سلام دوست عزیز.
این موضوع برمی‌گرده به دستور SQL شما. در واقع زیاد ربطی به خود php نداره. بنابراین اگر دستور SQL رو هم کامل و جداگانه قرار می‌دادید بهتر می‌تونستم کمکتون کنم.
مثلا من الان نمی‌دونم دقیقا چه جدول و چه ستون‌هایی رو بکار گرفتید.
بنابراین، دستوری‌ که برای دریافت 18 رکورد آخر لازمه رو با پیشفرض‌های خودم می‌نویسم و شما بعدا می‌تونید جایگزین کنید.
من فرض می‌کنم یه table دارم به نام users. این جدول یه ستون userid داره که سیر صعودی داره. یعنی مقدار userid کاربران قدیمی‌تر کوچیک‌تره. یک ستون دیگه هم برای عکس پروفایل هست به نام userpp. من اینجا برای حفظ سهولت کار از condition استفاده نمی‌کنم. حالا اگر قرار باشه که عکس پروفایل 18 نفر اخیر رو استخراج کنیم، باید یه چیزی بنویسیم توی این مایه‌ها:


SELECT userpp FROM users ORDER BY userid DESC LIMIT 18;


دقت کنید که جدیدترین مقادیر userid با گذر زمان و افزایش‌ کاربرها بیشتر میشه. پس ما باید 18 یوزر رو انتخاب کنیم که دارای بزرگ‌ترین userid هستن. DESC تعیین می‌کنه که ترتیب از بزرگ‌تر به کوچیک‌تر باشه. اگر از ORDER استفاده کنید ولی DESC رو ننویسید، دوباره همون هجده کاربر قدیمی رو نشون می‌ده. چون حالت default برای ORDER حالت ASC (کوچیک به بزرگ) هست.
ضمنا، برای گزینش 18 کابر آخر بهتره علاوه بر userid از یه چیز مطمئن‌تر هم استفاده کنید تا امکان خطا به صفر برسه. چون بحث زمان مطرحه، می‌تونید از timestamp به عنوان معیار استفاده کنید، البته در صورتی که داخل دیتابیس ثبت شده باشه.