نحوه نمایش متن و تصاویر اتفاقی در PHP و MySQL

نمایش متن و تصاویر اتفاقی یکی از روش هایی است که در سیستم های مدیریت محتوای سایت، وبلاگ و ابزارهای وب مورد استفاده قرار می گیرد، به طور مثال می توانیم یک تصویر را به طور اتفاقی از بین چندین فایل انتخاب کرده و با هر بار رفرش شدن صفحه آن را به نمایش در آوریم یا تیتر چند مطلب را از دیتابیس به طور رندوم انتخاب کرده و تحت عنوان مطالب اتفاقی به بازدیدکنندگان نمایش دهیم، انجام این موارد در وب به طور معمول یا با کدنویسی جاوا اسکریپت در سمت کاربر و یا با برنامه نویسی PHP و MySQL در سمت سرور و به کمک توابع از پیش تعریف شده و ویژگی های آنها ممکن می شود که در این مطلب در خصوص نحوه نمایش متن و تصاویر اتفاقی در PHP و MySQL خواهیم گفت و بحث در مورد جاوا اسکریپت را به بخش آموزش کاربردی آن موکول می کنیم.
نحوه نمایش متن و تصاویر اتفاقی در PHP (روش ساده)
یکی از توابع پرکاربرد و به اصطلاح دم دستی که می توانیم در PHP از آن برای چاپ مطالب اتفاقی استفاده کنیم، تابع rand است که ترکیب آن را با switch و case در نمونه کد زیر ملاحظه می کنید، از این نمونه کد می توانیم برای نمایش محتوای تصادفی و رندم استفاده کنیم که خروجی آن می تواند متن یا کدهای HTML شامل تگ img برای نمایش تصاویر باشد، این روش شاید ساده ترین راه حل ممکن برای ایجاد و گرفتن خروجی تصادفی باشد.
<?php
//ایجاد اتفاقی یک شماره از 1 تا 6
$number = rand(1, 6);
//با توجه به شماره ایجاد شده، یک مورد به صورت اتفاقی نمایش داده می شود
switch ($number){
case 1:
echo "متن یا تصویر شماره 1";
break;
case 2:
echo "متن یا تصویر شماره 2";
break;
case 3:
echo "متن یا تصویر شماره 3";
break;
case 4:
echo "متن یا تصویر شماره 4";
break;
case 5:
echo "متن یا تصویر شماره 5";
break;
case 6:
echo "متن یا تصویر شماره 6";
break;
default:
echo "متن یا تصویر شماره 1";
}
?>
توضیح:- تابع rand با توجه به آرگیومنت های تنظیم شده با هر بار فراخوانی فایل PHP و اجرای کدها، عددی بین 1 تا 6 را به صورت اتفاقی ایجاد کرده و به متغیر number نسبت می دهد.
- در قسمت switch با توجه به مقدار متغیر number یکی از case ها انتخاب شده و خروجی آن اجرا می شود و نهایتا کد با break خاتمه می یابد.
نکته: خروجی دستورات PHP می تواند شامل تگ های HTML و از جمله تگ img باشد، مثال:
case 1:
echo '<img src="images/photo.png" alt="photo" width="200" height="200">';
break;
یاswitch ($number){
case 1:
$photo = 'images/photo.png';
break;
}
echo '<img src="' . $photo . '" alt="photo" width="200" height="200">';
هر دو روش بالا خروجی یکسان خواهند داشت و تفاوت در نحوه مقداردهی متغیر و استفاده از دستور echo است که با توجه به ساختار برنامه می توانیم یک شیوه را ترجیح دهیم.نحوه نمایش متن و تصاویر اتفاقی در PHP (روش پیشرفته)
در برنامه نویسی وب ممکن است نیاز باشد که در یک بار فراخوانی صفحه چند آیتم اتفاقی به صورت هم زمان از بین داده های موجود به خروجی ارسال شوند، قاعدتا در چنین شرایطی صرف استفاده از تابع rand حلال مشکل نیست و باید در پی راه حل و کدنویسی پیچیده تر و پیشرفته تری باشیم، شیوه ای که در این آموزش به آن می پردازیم ترکیب تابع rand با قابلیت های دیگر PHP از جمله آرایه و حلقه است که در نمونه کد زیر ملاحظه می کنید.
<?php
//متن یا تصویر در آرایه
$array_text = array(
0 => "متن یا تصویر شماره 1",
1 => "متن یا تصویر شماره 2",
2 => "متن یا تصویر شماره 3",
3 => "متن یا تصویر شماره 4",
4 => "متن یا تصویر شماره 5",
5 => "متن یا تصویر شماره 6",
);
$array_loop = array();
$item = 3;
$result = null;
//با توجه به تعداد آیتم تعیین شده، چند مورد به صورت اتفاقی و بدون تکرار از آرایه انتخاب شده و به خروجی ارسال می شوند
for($i = 0; $i < $item; $i++){
//ایجاد اتفاقی یک شماره از 1 تا 6 بدون تکرار
do {
$number = rand(1, 6);
} while(in_array($number, $array_loop));
$result .= $array_text[$number - 1] . '<br>';
$array_loop[] = $number;
}
echo $result;
?>
پیش نمایشتوضیح:
- متن ها یا تصاویر مورد نظر را در آرایه array_text به صورت کلیدهای شماره ای از 0 درج می کنیم، تعداد کلیدهای آرایه باید با آرگیومنت دوم تابع rand برابر باشد (در اینجا مقدار 6).
- آرایه array_loop برای نگهداری مواردی است که در حلقه for به صورت تصادفی انتخاب شده اند و نباید مجددا انتخاب شوند (جهت عدم نمایش آیتم های تکراری).
- متغیر item تعداد آیتم هایی که باید در خروجی به صورت اتفاقی چاپ شوند را تنظیم می کند، قاعدتا این مقدار نباید از حداکثر تعداد کلیدهای آرایه array_text بیشتر باشد.
- حلقه do و while به کمک تابع in_array صرفا اعدادی را به صورت اتفاقی به متغیر number نسبت می دهد که قبلا در آرایه array_loop موجود نباشند (جهت عدم نمایش آیتم های تکراری).
پرس و جوی نمایش متن و تصاویر اتفاقی در MySQL
علاوه بر روش ها و نمونه کدهایی که بررسی کردیم، می توانیم از قابلیت های سیستم مدیریت پایگاه داده MySQL نیز در برنامه نویسی PHP استفاده کنیم، به این صورت نتایج پرس و جو قبل از اینکه از دیتابیس به PHP ارسال شوند از ابتدا به صورت تصادفی انتخاب می شوند که این کار با توابع MySQL امکانپذیر است، برای این منظور از تابع RAND در پرس و جو استفاده کرده و با افزودن پارامتر LIMIT به دستورمان، نتایج را به تعداد مشخصی محدود می کنیم، پرس و جوی زیر نمونه ای از کاربرد تابع RAND است.
SELECT * FROM tbl_name WHERE col_name > 1 ORDER BY RAND() LIMIT 5
توضیح:- تابع RAND با توجه به مقدار LIMIT (که در پرس و جوی بالا 5 است)، همان تعداد از ردیف ها را به صورت تصادفی از دیتابیس انتخاب می کند.
- ORDER BY RAND نحوه انتخاب و چینش ردیف ها از دیتابیس را تعریف می کند که به جای RAND می توانیم از ASC و DESC (Ascending و Descending یا چینش صعودی و نزولی) استفاده کنیم.
- از این روش می توانیم برای نمایش مطالب اتفاقی در سایت ها یا وبلاگ هایی که روی سرور شخصی قرار داشته و از دیتابیس MySQL استفاده می کنند، به راحتی بهره ببریم.
دسته بندی: آموزش کاربردی » PHP

ارسال ایمیل با PHP و کلاس PHPMailer
ارسال پارامتر به URL و دریافت مقادیر با PHP
ساخت منوی هوشمند با PHP و CSS
دریافت و نمایش پیج رنک گوگل با PHP
نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
دیدگاه


mohmaad
۱۳:۲۶ ۱۳۹۲/۰۲/۱۹
بابت جواب دادنتون مرسی
منظور من اینه که مثلا ما 100 جمله بهش بدین بگیم مثلا امروز که از ساعت 12 شب تا 12شب روز بعد میشه یک روز بیا این جمله را نشون بده و فرداش دوباره بیا جمله بعدی و همینطور تا آخر اینجوری
منظور من اینه که مثلا ما 100 جمله بهش بدین بگیم مثلا امروز که از ساعت 12 شب تا 12شب روز بعد میشه یک روز بیا این جمله را نشون بده و فرداش دوباره بیا جمله بعدی و همینطور تا آخر اینجوری
این کار نیازمند محاسبات پیچیده تر و استفاده از دیتابیس است، متاسفانه فرصت ما در حدی نیست که بتوانیم آن را بنویسیم.
mohmaad
۲۳:۳۱ ۱۳۹۲/۰۲/۱۸
با سلام میشه کاری کرد که هر روز یه جمله نمایش بده یه چیزی مثل سخن روز داخل سایت ها البته پلاگین باشه برای وردپرس
اگه شما بتونین کدش رو بدین شاید بتونم تبدیل کنم
با تشکر
اگه شما بتونین کدش رو بدین شاید بتونم تبدیل کنم
با تشکر
می توانید از نمونه کد زیر استفاده کنید.
<?php
date_default_timezone_set('Asia/Tehran');
$day = date('D');
switch($day){
case 'Sat':
echo 'پیام روز شنبه';
break;
case 'Sun':
echo 'پیام روز یکشنبه';
break;
case 'Mon':
echo 'پیام روز دوشنبه';
break;
case 'Tue':
echo 'پیام روز سه شنبه';
break;
case 'Wed':
echo 'پیام روز چهارشنبه';
break;
case 'Thu':
echo 'پیام روز پنجشنبه';
break;
case 'Fri':
echo 'پیام روز جمعه';
break;
default:
echo 'پیام روز';
}
?>
مینایی
۱۲:۲۰ ۱۳۹۱/۱۱/۲۵
با سلام و احترام و دعای خیر
و تشکر از شما بخاطر این همه مطالب زیبا و آموزنده .
در کد بالا برای نمایش تصاویر یا نوشته های تصادفی .
اگه ممکنه داخل کوتیشن چه دستوری بنویسیم که برامون از داخل یه پوشه عکس های تصادفی رو نمایش بده .
خیلی ممنونم از محبت و لطف شما .
و تشکر از شما بخاطر این همه مطالب زیبا و آموزنده .
در کد بالا برای نمایش تصاویر یا نوشته های تصادفی .
اگه ممکنه داخل کوتیشن چه دستوری بنویسیم که برامون از داخل یه پوشه عکس های تصادفی رو نمایش بده .
خیلی ممنونم از محبت و لطف شما .
ممنون از نظر لطف شما، برای نمایش تصاویر کافی است کد HTML آن را درج کنید (البته با رعایت شیوه نگارش صحیح PHP)، به طور مثال:
case 1:
echo '<img src="image/img.jpg" alt="متن جایگزین تصویر" height="24" width="24">';
break;
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.