parsgreen.com
article

نحوه نمایش متن و تصاویر اتفاقی در php و mysql

php-random

نمایش مطالب اتفاقی، یکی از روش هایی است که در سیستم های مدیریت سایت، قالب وبلاگ و ابزارهای وب مورد استفاده قرار می گیرد، مثلا می توان یک تصویر را به طور تصادفی از بین چندین فایل انتخاب نمود و با هر بار رفرش شدن صفحه آن را به نمایش در آورد یا چند مطلب را از دیتابیس به طور رندوم انتخاب کرد و تحت عنوان مطالب اتفاقی به بازدیدکنندگان نشان داد، انجام این کار در وب، با جاوا اسکریپت، php و mysql، به کمک توابع و ویژگی های آنها ممکن است که در این مطلب در مورد php و mysql خواهیم گفت و بحث در مورد جاوا اسکریپت را به بخش آموزش کاربردی آن موکول می کنیم.

نحوه نمایش متن و تصاویر اتفاقی در php:


یکی از توابع خوبی که در php می توان از آن برای خروجی گرفتن مطالب اتفاقی استفاده نمود، تابع rand است که ترکیب آن با switch و case کد زیر را ایجاد می کند، از این کد می توانید برای نمایش محتوای رندوم استفاده کنید (خروجی آن می تواند متن یا کدهای html باشد).
<?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";
}
?>
پیش نمایش
توضیح:
- تابع rand با مقادیرش، با هر بار اجرای کد، عددی بین 1 تا 6 را به متغیر number نسبت می دهد.
- در قسمت switch، با توجه به مقدار متغیر number یکی از case ها انتخاب شده و خروجی آن اجرا می شود و نهایتا کد با break خاتمه می یابد.

نحوه نمایش متن و تصاویر اتفاقی در mysql:


علاوه بر کد بالا، php قابلیت های دیگری نیز دارد که از آن در ارتباط با پایگاه داده استفاده می شود، تابع رندوم، در مورد mysql هم کاربرد دارد و با افزودن قابلیت LIMIT به دستورمان، از انعطاف بیشتری نیز برخوردار خواهد بود، کد زیر نمونه ای از کاربرد این تابع است.
mysql_query('SELECT * FROM table WHERE id > 1 ORDER BY RAND() LIMIT 5');
توضیح:
- تابع rand با توجه به مقدار LIMIT (که در کد 5 است)، همان تعداد از ردیف ها را به صورت تصادفی از دیتابیس انتخاب می کند.
- ORDER BY RAND نحوه انتخاب ردیف ها از دیتابیس را تعریف می کند.
- از این نوع کد می توان برای نمایش مطالب اتفاقی در سایت ها یا وبلاگ هایی که روی سرور شخصی قرار دارند، به راحتی استفاده کرد.
sectionدسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
» ساخت منوی هوشمند با php و css!
» نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
» محاسبه و نمایش پیج رنک گوگل با php
» نمایش قسمتی از متن و پاراگراف با php
» محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess
commentنظرات (۲۳ یادداشت برای این مطلب ارسال شده است)
نویسنده: مینایی
زمان: ۱۲:۲۰:۴۹ - تاریخ: ۱۳۹۱/۱۱/۲۵
با سلام و احترام و دعای خیر
و تشکر از شما بخاطر این همه مطالب زیبا و آموزنده .
در کد بالا برای نمایش تصاویر یا نوشته های تصادفی .
اگه ممکنه داخل کوتیشن چه دستوری بنویسیم که برامون از داخل یه پوشه عکس های تصادفی رو نمایش بده .
خیلی ممنونم از محبت و لطف شما .
پاسخ: 
سلام
ممنون از نظر لطف شما، برای نمایش تصاویر کافی است کد html آن را درج کنید (البته با رعایت شیوه نگارش صحیح php)، به طور مثال:
case 1:
echo "<img src=\"image/img.jpg\" alt=\"متن جایگزین تصویر\" height=\"24\" width=\"24\">";
break;
نویسنده: 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 'پیام روز';
}
?>
نویسنده: mohmaad
زمان: ۱۳:۲۶:۳۲ - تاریخ: ۱۳۹۲/۰۲/۱۹
بابت جواب دادنتون مرسی
منظور من اینه که مثلا ما 100 جمله بهش بدین بگیم مثلا امروز که از ساعت 12 شب تا 12شب روز بعد میشه یک روز بیا این جمله را نشون بده و فرداش دوباره بیا جمله بعدی و همینطور تا آخر اینجوری
پاسخ: 
این کار نیازمند محاسبات پیچیده تر و استفاده از دیتابیس است، متاسفانه فرصت ما در حدی نیست که بتوانیم آن را بنویسیم.
نویسنده: mohammad
زمان: ۱۶:۴۲:۱۱ - تاریخ: ۱۳۹۲/۰۴/۰۵
سلام واقعا مرسی سوال من اینه اگر بخوام از یک جدول
مشخص در دیتایس فیلدهاش رو نمایش بدم چطوری میشه؟
مثلا من یه جدول دارم اسم مشتری های سایتم داخل اونه می خوام به صورت تصادفی نام مشتری ها رو نمایش بدم بازم ممنون!
پاسخ: 
سلام
این مورد در آموزش (در قسمت نحوه نمایش متن و تصاویر اتفاقی در MySQL) گفته شده، کافی است از تابع RAND برای ORDER BY استفاده کنید، البته قاعدتا نوشتن یک پرس و جوی کامل و انتخاب ردیف ها از دیتابیس نیازمند آشنایی قبلی با PHP و MySQL، حداقل در حد مقدماتی است، مثال:
<?php
$query = mysql_query('SELECT user FROM table WHERE id > 0 ORDER BY RAND() LIMIT 5')
or die(mysql_error());
while($row = mysql_fetch_array($query)){
echo $row['user'];
}
?>
نویسنده: محمد
زمان: ۱۶:۴۷:۳۱ - تاریخ: ۱۳۹۲/۰۸/۰۸
سلام
ممنون از سایت خوبتون و این مطلب مفید
میخواستم ببینم چطوری میشه بجای متن یا عکس کد جاوا اسکریپت قرار داد؟
یعنی مثلا توی هر قسمت کد یک سیستم کسب درآمد پاپ آپ رو قرار داد تا در هر بار لود یکیش اجرا بشه
ممنون
پاسخ: 
سلام
PHP صرفا خروجی HTML ایجاد می کند، این خروجی می تواند هر چیز دلخواهی باشد، لذا همان طور که در حالت عادی کدها را در صفحه قرار می دهید، می توانید قسمت echo را طوری مقداردهی کنید که خروجی مورد نظر (کد جاوا اسکریپت) را چاپ کند (نیاز به آشنایی اولیه با PHP است).
نویسنده: مرتضی
زمان: ۱۳:۰۳:۳۷ - تاریخ: ۱۳۹۲/۰۹/۲۵
با سلام و عرض ادب
من یه تصویر زمینه دارم که توسط css تو صفحه نمایش داده میشه. روی این تصویر هم مطالب قرار میگیره.
حالا می خواستم این تصویر زمینه طبق این آموزش , تصادفی از داخل یه فولدر انتخاب بشه. اما چون با css نیست و از تگ img استفاده میشه دیگه نمی تونم روش مطالبم رو نمایش بدم. چه راهی برای این کار پیشنهاد میدید بزرگوار ؟

با تشکر فراوان
پاسخ: 
سلام
می توانید به جای img، خروجی را به صورت یک بلاک div با کلاس های CSS رندوم تعریف کنید، برای هر کلاس نیز یک تصویر پس زمینه متفاوت داشته باشید، به این صورت با خروجی هر کلاس، تصویر زمینه نیز متفاوت خواهد بود.
نویسنده: فروغ
زمان: ۰۰:۲۶:۲۲ - تاریخ: ۱۳۹۲/۱۱/۰۹
سلام - ممنون از سایت خوبتون. یه سوال داشتم که مربوط به موضوع این صفحه نیست چون هم موضوع سوالم در سایتتون پیدا نکردم .
من دارم یه سایت با زبان php می نویسم در رابطه با عکس و عکاسی وقتی موضوعات عکاسی رو از پایگاه داده واکشی می کنم برای چاپ در سایتم نمی خوام همه در یک ستون چاپ بشه بلکه می خوام مثلا در 3 سطر و 4 ستون چاپ بشه.کد زیر مربوط به چاپ یک ستونی هست آیا راهی وجود داره براش که در چند ستون چاپ بشه؟؟؟ امیدوارم راهی وجود داشته باشه.
<?php
$link = mysql_connect("localhost","root","");
if(! $link)
die("Error connect mysql");
mysql_select_db("picup",$link) or die(mysql_error());

$query = mysql_query('Select * from gallerygroup order by idgroup') or die(mysql_error());
echo '<table width="100%" border=0 align="center" >';
while($row = mysql_fetch_array($query))
{
echo'<tr>';
$idgr=$row['idgroup'];
echo" <td align='center'> <a href=\"indexgallery2.php?idgroup=$idgr\">$npic</td>";
echo' </tr>';
}
echo' </table>';
mysql_free_result($query);
mysql_close($link);

?>
پاسخ: 
سلام
PHP یک زبان داینامیک برای برنامه نویسی وب است و اینگونه موارد جزء کاربردهای اولیه آن محسوب می شود، منتها باید کد متناسب با عملیات مورد نظرتان را تعریف کنید، به نظر حالت زیر برای هدف شما مناسب است (تست نشده):
$loop = 0;
while($row = mysql_fetch_array($query)){
if($loop == 0){
echo'<tr>';
}
$idgr=$row['idgroup'];
echo" <td align='center'> <a href=\"indexgallery2.php?idgroup=$idgr\">$npic</td>";
if($loop == 4){
echo' </tr>';
$loop = -1;
}
$loop++;
}
نویسنده: asghar
زمان: ۱۲:۳۶:۰۷ - تاریخ: ۱۳۹۲/۱۱/۱۴
سلام من یه جدول مقاله دارم که می خوام از بین 50 مقاله پر بازدید به صورت تصادفی 10 مقاله را انتخاب کنم که کد اصلی به صورت زیر است حالا نمی دونم چه تغییری باید بدم تا درست بشه .
SELECT * FROM `tbl_essay` ORDER BY `e_hint` desc  LIMIT 10
پاسخ: 
سلام
برای انتخاب تصادفی از دیتابیس از ORDER BY RAND استفاده کنید (نمونه در آموزش توضیح داده شده).
نویسنده: Matori73
زمان: ۲۲:۰۳:۳۶ - تاریخ: ۱۳۹۳/۰۸/۰۳
درود و سپاس بابت این مقاله مفید !
در این مقاله با هربار رفرش کردن، متن یا تصویر هم عوض میشه!
سوال : امکانش هست که به جای رفرش کردن، مدت زمانی رو مشخص کنیم که با اتمام زمان، متن بعدی نمایش داده بشه ؟
یعنی مثلا هر 10 ثانیه به صورت رندوم یک case رو نشون بده و لازم نباشه که رفرش کنیم !
تشکر
پاسخ: 
سلام
این کد به PHP نوشته شده و امکان تنظیم زمان برای آن نیست، برای هدف مد نظر شما یا باید Ajax و PHP را با هم ترکیب کنید (تابع Ajax در فواصل زمانی خاص به فایل PHP ارجاع دهد و نتیجه را در مرورگر چاپ کند)، یا اینکه با JavaScript کدی مشابه بنویسید و تابع را در فواصل زمانی مشخص فراخوانی کنید (به فرض با setInterval).
نویسنده: امير
زمان: ۱۱:۰۱:۰۴ - تاریخ: ۱۳۹۳/۱۲/۱۲
با سلام و تشكر از وبسايت خوبتان: اگر برايتان امكان پذير است در مورد ايجاد زمانبندی با استفاده از php هم مطلبي بنويسيد ، حذف اتوماتيك مطالب پس از مدت زمان مشخص شده از ديتابيس با استفاده از mysql امكان پذير است خواستم ببينم با php هم اين كار امكان پذير است؟
پاسخ: 
سلام
ایجاد زمانبدی خودکار (بدون نیاز به برنامه هایی مانند Cron Jobs) در PHP ممکن نیست، چون کدهای PHP برای اجرا نیاز به فراخوانی دارند، اما می توان با توجه به تاریخ فراخوانی و تاریخ مد نظر محاسباتی در هنگام اجرای کدهای PHP انجام داد.
نویسنده: سجاد
زمان: ۱۵:۵۱:۰۸ - تاریخ: ۱۳۹۳/۱۲/۲۹
سلام من میخوام واسه سایتم چیزی بزارم که متن رو به صورت تصادفی نمایش بده و اون متن هم داخل تیبل blogs
هست و بخش text البته طبق این آموزش جلو رفتم اما به نتیجه ای نرسیدم احتمالا من جایی اشتباه کردم ممنون میشم اگر راهنماییم کنید یا کدو واسم بزارید اگرم ممکن بود واسم ایمیل بشه بهتر
پاسخ: 
سلام
نمونه کدها در آموزش درج شده، در صورتی که با مشکلی مواجه هستید لطفا نمونه کدهای خود را به همراه توضیحات لازم درج کنید تا بررسی گردند.
نویسنده: sajjad
زمان: ۱۸:۲۷:۲۹ - تاریخ: ۱۳۹۳/۱۲/۲۹
<?php
$query = mysql_query('SELECT blogs FROM table WHERE id > 0 ORDER BY RAND() LIMIT 5')
or die(mysql_error());
while($row = mysql_fetch_array($query)){
echo $row['text'];
}
?>
من از این استفاده کردم
اما چیزی نمایش نداد
پاسخ: 
پرس و جوی شما باید مطابق با اطلاعات صحیح دیتابیس، جدول و ستون های جدول باشد، در نمونه کد به نظر blogs نام جدول است که بعد از SELECT آمده و اشتباه است، blogs باید به جای table درج شود، جهت آشنایی با نحوه نگارش صحیح پرس و جوهای MySQL، لطفا به آموزش های مقدماتی مراجعه کنید.
نویسنده: سجاد
زمان: ۱۶:۴۳:۵۸ - تاریخ: ۱۳۹۴/۰۱/۰۲
ممنون حل شد
فقط یه چیز اگر بخوام 5 تای آخری رو نشون بده باید چیکار کنم؟
پاسخ: 
به جای تابع RAND از ORDER BY در کنار ASC یا DESC استفاده کنید، مثال:
mysql_query('SELECT * FROM table WHERE id > 1 ORDER BY id DESC LIMIT 5');
نویسنده: irnazesh
زمان: ۰۹:۴۸:۴۵ - تاریخ: ۱۳۹۴/۰۱/۲۸
ممنون، آموزش بسیار مفیدی بود و همچنین کامل
خسته نباشید
نویسنده: رضا افشین مهر
زمان: ۱۶:۲۶:۵۰ - تاریخ: ۱۳۹۴/۰۲/۲۰
سلام و خسته نباشید خدمت شما همکار محترم.
من از تابع rand پی اچ پی واسه نمایش تصادفی مطالبم در سایت استفاده کرده بودم اما به تازگی متوجه شدم که با هر بار لود صفحه مطالب تکراری رو هم نمایش میده.
راه حل این مشکل از نظر جنابعالی چی می تونه باشه با تشکر از سایت خوبتون و زحمات فراوانی که واسه جامعه مهندسی می کشید.
پاسخ: 
سلام
منظورتان از نمایش مطالب تکراری مشخص نیست! آیا به فرض در یک پرس و جو دو ردیف تکراری برگردانده می شود یا در هر پرس و جو برخی نتایج مشترک هستند؟ در حالت اول اشکال وجود دارد اما حالت دوم طبیعی است، چون هر پرس و جو مستقل از هم است و ممکن است نتایج مشابه با پرس و جوی قبلی باشد، برای رفع این حالت راه حل کوتاهی وجود ندارد، باید شیوه شخصی طراحی کنید، به طور مثال برای هر کاربر در کوکی آیتم های دیده شده را ذخیره کرده و در هنگام اجرای پرس و جو از پارامتر WHERE id != 1 OR id != 2 و... استفاده نمائید.
paged صفحه 1 از 2




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

4 × 1
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...