PDA

View Full Version : فراخوانی رندم از پایگاه داده



majoran
پنج شنبه 09 اسفند 1386, 16:34 عصر
سلام من می خوام یک فیلد رو از پایگاه داده فراخوانی کنم به صورتی که رندم این کار صورت بگیره و هر روز یک بار انتخاب صورت بگیره یعنی من می خوام هر روز یک پیام خاص برای کاربرانم نمایش داده بشه ام به صورتی که هیچ تکراری در اون وجود نداشته باشه یعنی در سال یک پیام دو بار نمایش داده نشود .

maa_biz
پنج شنبه 09 اسفند 1386, 17:25 عصر
برای اینکه بتوانید رکوردهایی از جدول را به صورت رندوم در Mysql بخوانید میتوانید از تابع
RAND() استفاده نمایید به این شکل:


SELECT * FROM tbl_name ORDER BY RAND();

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

امید امرایی
پنج شنبه 09 اسفند 1386, 19:31 عصر
سلام البته در Query جناب maa_biz (http://barnamenevis.org/forum/member.php?u=32323) همه دیتا موجود در دیتابیس شما با چیدمان تصادفی برگشت داده می شن اما همین مثال رو می تونید مساوی یک مقدار تصادفی قرار بدین مثلا :



$random_number = rand(n,n);
$sql = "select * from tbl_name where id = '$random_number'"


پارامتر های ارسالی به تابع rand محدوده اعداد رو مشخص می کنه که اولی نقطه شروع و دومی نقطه پایانه .

محمد.مولانا
جمعه 10 اسفند 1386, 00:47 صبح
البته این کدی هم که جناب kassit دادن کمی مشکل داره

این که اگه هیچ ردیفی با اون آی دی که داریم می دیم وجود نداشته باشه چی؟؟؟؟

می شه اینطوری اصلاحش کرد:





$random_number = rand(n,n);
$sql = "select * from tbl_name limit ('$random_number',1)"

oxygenws
جمعه 10 اسفند 1386, 01:48 صبح
البته کد برادر مولانا هم مختصر مشکلی داره :)
و اون اینه که ما اصولا تعداد سطر ها رو نمی دونیم و باید یک کوئری برای به دست آوردنش بزنیم که کار صحیحی نیست :)

همانا پست شماره‌ی دو بهترین و منطقی ترین انتخاب است.