نمایش لینک به صورت تصادفی

این آموزش رو بنا به درخواست عده ای از دوستان قرار دادم. یه وقتی پیش میاد دلتون میخواد لینک های مثلاً پیوندهای روزانه به صورت تصادفی در بخشی از سایت نمایش داده بشه.

برای نمایش اعداد به صورت تصادفی ما معمولاً از این روش استفاده میکنیم:

rand(عدد آخر, عدد اول);
echo rand(1,20);
در خروجی عدد تصادفی را مشاهده میکنید . هر بار که صفحه رو رفرش می زنید یک عدد تصادفی به شما داده میشه. از عدد یک تا عدد 20 یکی از این اعداد در هر بار رفرش صفحه نمایش داده میشه.
حالا ما میایم یه دیتابیس میسازیم با نام ravandi بعد یه جدول با نام link و سه تا فیلد با نام های id,link,matn

<?php
*/
این خط اتصالی رو به لوکال ھاست و یوذر و پسورد
 ایجاد میکند و داخل این متغییر قرار میدھد.
*/
$connection=mysql_connect("localhost","root","");
//نام دیتابیس یا همون بانک اطلاعاتی انتخاب می شود
$db=mysql_select_db("ravandi",$connection);
//با تابع رند یک عدد تصادفی از عدد یک تا بیست انتخاب می شود
$ravandi=rand(1,20);
*/
انتخاب کن همه ی فیلد ها را از جدول لینک 
که آی دی آن ها مقداری باشد که متغییر عدد تصادفی با آن می دهد
*/
$sql="SELECT * FROM link where id='$ravandi'";
//برای سازگاری با فارسی
mysql_query("SET CHARACTER SET utf8",$connection);
//ارسال پیام برای جدول و دیتابیس برای دریافت مطالب
$result=mysql_query($sql,$connection);
//مقادیر را به صورت آرایه در متغییر "رو" قرار می دهد
//و یک حلقه ایجاد میکند و داخل آن مقادیر آرایه را ردیف میکند
while ($row=mysql_fetch_array($result)){
$link=$row['link'];
$matn=$row['matn'];
}
echo $ravandi;
//لینکی که در صفحه ایجاد می شود
echo ('<center><a href="'.$link.'"> '.$matn.'</a></center>');
mysql_close($connection);
?>
الان شما به صورت دستی مقدار عدد 20 را به تابع rand دادید. ولی در آینده لینک های شما بیشتر خواهید شد. پس باید یه این شکل عمل کنید:
list($total_rows)=mysql_fetch_row(mysql_query('select count(*) from link'));
 $ravandi=rand(1,$total_rows);
این شکلی دیگه هر چی تعداد رکوردهای داخل جدول زیاد بشه آخرین شماره در تابع rand هم به همان تعداد بیشتر میشه.
الان دستور  count(*) تعداد رکوردها رو میشمرده .
حالا هر بار که صفحه رو رفرش کردید یک لینک جدید برای شما نمایش داده خواهد شد.
یه بار هم پیش میاد فیلد های برخی رکورد ها حذف شده . ما میایم یه رکورد همینطوری رو در نظر میگیریم و به جاش میذاریم. کدهای بالا رو اینطوری تغییر میدیم . میایم بعد از بسته شدن آکولاد حلقه این دستورات رو می نویسیم:
if (!empty($link)) {
echo ('<center><a href="'.$link.'"> '.$matn.'</a></center>');
}else{
echo ('<center><a href="http://barnamenevisi.blogsky.com">آموزش برنامه نویسی</a></center>');
}
دستورات بالا میگه اگه مقدار متغییر نامساوی با خالی باشد این قسمت رو چاپ کن وگرنه لینک وبلاگ برنامه نویسی را چاپ کن.
روش بالا یه سری دنگ و فنگ داره می تونید از روش زیر که راحت تره هم هست استفاده بکنید:
SELECT * FROM link ORDER BY RAND()
تمام.
منتظر نظرات شما دوستان هستم.
متشکرم.

نظرات 1 + ارسال نظر
salim akrmi یکشنبه 5 آذر‌ماه سال 1391 ساعت 06:39 ب.ظ

salam , dost man karet 20 edame bede hamin tor

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد