نحوه نمایش متن و تصاویر اتفاقی در 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
ساخت فید خوان آر اس اس (RSS Feed Reader) با PHP
دریافت و نمایش پیج رنک گوگل با PHP
ارسال ایمیل با PHP و کلاس PHPMailer
نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
دیدگاه


سعید
۱۱:۱۱ ۱۴۰۲/۱۲/۰۳
با تشکر از شما دوست عزیز
درست شد. دست شما درد نکنه یه سوال دیگه هم دارم چطور میشه توی استایل تصاویر رو فیت کرد؟ توی نت سرچ کردم پیدا نکردم واسه حالت عادی css بلدم
با تشکر
درست شد. دست شما درد نکنه یه سوال دیگه هم دارم چطور میشه توی استایل تصاویر رو فیت کرد؟ توی نت سرچ کردم پیدا نکردم واسه حالت عادی css بلدم
img {}
منظورم توی استایل اینطوری هستstyle=''
اینطوری چطوری اندازه عکس ها رو تعیین کنم؟با تشکر
برای استایل دهی خطی می توانید از نمونه کد زیر الگوبرداری کنید:
<img src="#" alt="image" style="width:200px; hight:40px;">
همچنین استفاده از سلکتور id و class روش متداول دیگری برای استایل دهی است که در آموزش های مقدماتی CSS توضیح داده شده.سعید
۱۹:۰۲ ۱۴۰۲/۱۲/۰۲
با تشکر از شما
درست شد فقط یه مشکلی دارم
درست شد فقط یه مشکلی دارم
<?php echo preg_replace('/<\/?a[^>]*>(.*?)<\/a>/i', '<a href="https://mysite.com/id={$item->id}"><span style="font-weight:bold">[ برای ثبت نام کلیک کنید ]</span></a>', $item->content); ?>
نمی تونم شانسه اینو براش فراخوانی کنم:{$item->id}
میخوام شناسه اون مطلب رو اینطوری براش فراخوانی کنم ولی شناسه رو دریافت نمی کنه، نمی دونم چراقسمت id را به این صورت ویرایش و جایگزین کنید:
id=' . $item->id . '">
سعید
۰۸:۳۳ ۱۴۰۲/۱۲/۰۲
با تشکر از شما خیلی خوب بود.
فقط یه مشکلی داره، اگه لینک دانلود داخل عکس باشه کار نمی کنه و بازم لینک رو نشون میده!
مثل این:
با تشکر
فقط یه مشکلی داره، اگه لینک دانلود داخل عکس باشه کار نمی کنه و بازم لینک رو نشون میده!
مثل این:
حذف شد
من میخوام لینک های هرچی باشه پیغامی که توی جواب قبلی نوشتید بهش نشون داده بشه. عکس ها رو بیاره و مشکل نشون ندادن عکسها نداشته باشه فقط لینک داخل عکس هم اگه بود بجای اون لینک و عکس پیام بهش بده. پسوند لینک عکسها، jpg و gif و png به اینا گیر نده ولی به بقیه پسوندهای دیگه گیره بدهبا تشکر
نمونه دستور زیر را جایگزین الگوی قبلی کنید:
$source = preg_replace('/<\/?a[^>]*>(.*?)<\/a>/i', '[You must be logged in to see this URL!]', $source);
لطفا با حالت های مختلف تست کنید ایراد نداشته باشد.سعید
۰۶:۲۵ ۱۴۰۲/۱۲/۰۱
با سلام و خسته نباشید
من یه تابع با php میخوام که لینک های موجود در یک متن رو برام شناسایی کنه بعد به جای لینکها به کاربر نشون داده بشه که چون ثبت نام نکرده لینک ها بهش نشون داده نمیشه فروم ها این امکان رو دارن
با تشکر
من یه تابع با php میخوام که لینک های موجود در یک متن رو برام شناسایی کنه بعد به جای لینکها به کاربر نشون داده بشه که چون ثبت نام نکرده لینک ها بهش نشون داده نمیشه فروم ها این امکان رو دارن
با تشکر
با نمونه کد زیر می توانید لینک های داخل محتوای سایت را مخفی و محدود کنید:
<?php
$source = 'this is a test <a href="#">link</a>, this is a test text!';
$source = preg_replace('/<\/?a[^>]*>([^<]*)<\/a>/i', '[You must be logged in to see this URL!]', $source);
echo $source;
?>
منتها این نمونه کد صرفا ساختار اولیه است و برای اینکه به شکل یک افزونه قابل استفاده در سیستم های مدیریت محتوا باشد نیاز به توسعه بیشتر و ترکیب با قابلیت هایی مانند تشخیص کاربران ثبت نام و وارد شده به سایت دارد، همچنین باید با استایل CSS ظاهر کار را سفارشی سازی کنید.آیدین
۱۱:۵۷ ۱۴۰۲/۱۰/۰۵
سلام خسته نباشید
من با زبان php و با تابع for خواستم عکس هایی رو که مشخص کردم رو بارگذاری کنم ولی هر کاری میکنم عکس رو بالا نمیاره میشه کمکم کنید
من با زبان php و با تابع for خواستم عکس هایی رو که مشخص کردم رو بارگذاری کنم ولی هر کاری میکنم عکس رو بالا نمیاره میشه کمکم کنید
لطفا یک نمونه کد قابل تست درج کنید یا کدها را در سایتتان قرار داده و آدرس صفحه را جهت بررسی بیشتر و رفع خطاها ارسال نمائید، همچنین در صورتی که تعداد یا حجم فایل های پروژه زیاد است می توانید فایل ها را با فرمت zip فشرده کرده و به آدرس ایمیل ما (موجود در بخش تماس) ارسال و پاسخ را از همان طریق پیگیری نمائید.
مهراد
۰۹:۵۹ ۱۴۰۲/۰۸/۱۷
سلام
در جدول موقعی که عکس رو با php فراخوانی میکنم نمیاره تصویر عکس.
لطفا راهنمایی کنید.
در جدول موقعی که عکس رو با php فراخوانی میکنم نمیاره تصویر عکس.
لطفا راهنمایی کنید.
foreach (showproduct() as $value){
?>
<tr>
<td><img src="/images/" style="width:200px;height:200px"<?php echo $value['propicture']?>></td>
ظاهرا در نمونه کد بالا قسمت src به درستی تنظیم نشده است، آدرس قسمت src باید به فایل تصویر با پسوندهای رایج مثل jpg، png و... ختم شود اما در مثال شما صرفا آدرس دایرکتوری images دیده می شود، برای بررسی بیشتر لطفا خروجی HTML این قسمت از سایت را درج کنید، ممکن است پارامتر
$value['propicture']
همان نام و آدرس فایل باشد و قسمت src به صورت زیر تکمیل شود:src="/images/<?php echo $value['propicture']?>"
برای خطایابی بیشتر می توانید دستور زیر را در کدهای PHP (قبل از foreach) اجرا کنید:print_r(showproduct());
امیرحسین
۱۳:۳۴ ۱۴۰۲/۰۴/۱۶
با سلام و تشکر از شما
دست شما درد نکنه هر دو مورد که جواب دادید عالی بودن مورد دوم واسه جستجوی گوگل هم بله درسته من واسه سرچ محتواش از ایدی های یکتای مطالب استفاده می کنم که با سایتهای دیگه مشترک نیستند و وقتی دستی سرچ می کنم اگه مطالب ایندکس شده باشند صفحه جستجو رو میاره، و اگه ایندکس نشده باشه
بازم از لطف و محبت شما خیلی ممنون و سپاسگزارم.
زنده بمانید به سلامتی و خوشبختی و شادی
دست شما درد نکنه هر دو مورد که جواب دادید عالی بودن مورد دوم واسه جستجوی گوگل هم بله درسته من واسه سرچ محتواش از ایدی های یکتای مطالب استفاده می کنم که با سایتهای دیگه مشترک نیستند و وقتی دستی سرچ می کنم اگه مطالب ایندکس شده باشند صفحه جستجو رو میاره، و اگه ایندکس نشده باشه
did not match any documents.
رو میاره الان امتحان کردم روش شما کار کرد واسه یه مطلب که تکی اینکارو انجام میده سرعت لود صفحه رو زیاد پایین نمیاره ولی واسه ۲۰ تا مطلب یه مقدار زمان برای بررسی بیشتر میشه و تمام نتایج رو هم صحیح برمی گردونهبازم از لطف و محبت شما خیلی ممنون و سپاسگزارم.
زنده بمانید به سلامتی و خوشبختی و شادی
خواهش، خوشحالیم که پاسخ ها کارآمد بودند، متقابلا آرزوی سلامتی و دلخوشی داریم.
امیرحسین
۰۸:۳۸ ۱۴۰۲/۰۴/۱۶
با سلام و درود
ببخشید یه سوال دیگه هم دارم من این کد رو دارم که متن منو توی گوگل سرچ می کنه و متوجه میشم متن من توی گوگل هست یا نه! میخوام در صورتی که متن من وجود داشت عدد ۱ و در صورتی که وجود نداشت عدد صفر رو برگردونه!
ببخشید یه سوال دیگه هم دارم من این کد رو دارم که متن منو توی گوگل سرچ می کنه و متوجه میشم متن من توی گوگل هست یا نه! میخوام در صورتی که متن من وجود داشت عدد ۱ و در صورتی که وجود نداشت عدد صفر رو برگردونه!
<?php
function googleSearch($url) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, 0);
//Set curl to return the data instead of printing it to the browser
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
$query = $item->id;
$url = 'http://www.google.co.in/search?q='.urlencode($query).'';
$Link = googleSearch($url);
?>
با تشکربرای بررسی پاسخ گوگل می توانیم از روش زیر استفاده کنیم:
$query = "AhWMu5UCHYnv";
$url = 'http://www.google.co.in/search?q='.urlencode($query).'';
$Link = googleSearch($url);
//echo $Link;
if(preg_match('/<span([^>]*)>([^<]*)did not match any documents([^<]*)<\/span>/i', $Link)) {
echo 0;
} else {
echo 1;
}
این روش در شرایطی دقیق نیست و در صورتی عمل می کند که گوگل خروجی فعلی خود را تغییر ندهد، در حال حاضر اگر یک جستجو نتیجه ای نداشته باشد عبارت "did not match any documents" در خروجی گوگل در تگ span قابل دریافت است:Your search - AhWMu5UCHYnv - did not match any documents.
Suggestions:
Make sure all words are spelled correctly.
Try different keywords.
Try more general keywords.
اگر متن خروجی گوگل تغییر کند یا به هر دلیل عبارت "did not match any documents" در خروجی در تگ span باشد کد به اشتباه ممکن است 0 برگرداند (در حال حاضر خروجی ردیف های نتایج گوگل در تگ span نیست و تداخلی ایجاد نمی شود).محمدرضا
۲۲:۴۹ ۱۴۰۱/۰۳/۰۱
خیلی ممنون که جواب دادید
یه سوال دیگه هم داشتم البته شرمنده چطور می شه وقتی کاربری فرمی رو توی سایت پر می کنه اطلاعات mac سیستمش ثبت بشه الان توی سایتم مشخصات مرورگر و آی پی رو ثبت می کنه ولی واسه ثبت مک چیزی پیدا نکردم
کدی چیزی نداره ازش استفاده کنم؟
توی اپلیکیشن ها دیدم اینکارو می کنن و مک رو مسدود می کنن وقتی آی پی مسدود میشه کاربر می تونه با یه آی پی دیگه وارد بشه ولی وقتی مک رو فیلتر می کنن اون کاربر نمی تونه دیگه با اون سیستم وارد بشه راهی هست بشه اینکارو انجام داد و مک کاربر هم ثبت بشه؟
با تشکر
یه سوال دیگه هم داشتم البته شرمنده چطور می شه وقتی کاربری فرمی رو توی سایت پر می کنه اطلاعات mac سیستمش ثبت بشه الان توی سایتم مشخصات مرورگر و آی پی رو ثبت می کنه ولی واسه ثبت مک چیزی پیدا نکردم
کدی چیزی نداره ازش استفاده کنم؟
توی اپلیکیشن ها دیدم اینکارو می کنن و مک رو مسدود می کنن وقتی آی پی مسدود میشه کاربر می تونه با یه آی پی دیگه وارد بشه ولی وقتی مک رو فیلتر می کنن اون کاربر نمی تونه دیگه با اون سیستم وارد بشه راهی هست بشه اینکارو انجام داد و مک کاربر هم ثبت بشه؟
با تشکر
تا جایی که اطلاع داریم خیر، راهی برای ثبت اطلاعات MAC از طریق مرورگر کاربران وجود ندارد چون این مورد به بحث امنیت و حریم خصوصی مربوط می شود و مرورگرها مجاز به در اختیار قرار دادن این اطلاعات با سرورها نیستند، با اپلیکیشن ممکن است چون کاربر شخصا برنامه را در گوشی نصب می کند و به نوعی مجوز داده می شود، در وب باید از سیستم IP، کوکی یا اطلاعات واسط کاربری استفاده کرد اما به اندازه ساز و کار MAC قابل اعتماد نیست که البته این به ذات وب برمی گردد.
محمدرضا
۱۰:۲۱ ۱۴۰۱/۰۳/۰۱
با سلام و خسته نباشید
ببخشید این لینک رو نگاه کنید:
مثلا کارت مشتری بهش بدی و مشخصاتش رو با استفاده از توضیحات گفته شده پیدا کرد.
ممنون میشم کمک کنید چون تعدادی از مبالغ خرید رو مجبور هستیم برگشت بزنیم و لازمه حتما به حساب پرداخت کننده باشه، یعنی با کارتی که پرداخت انجام شده و از برگشت دادن به حسابهای دیگه جلوگیری بشه
با تشکر از لطف و محبت شما
ببخشید این لینک رو نگاه کنید:
https://devbeta.finnotech.ir/card-information.html?sandbox=undefined
چطور میشه با استفاده از توضیحات گفته شده اطلاعات یک کارت رو پیدا کرد:مثلا کارت مشتری بهش بدی و مشخصاتش رو با استفاده از توضیحات گفته شده پیدا کرد.
ممنون میشم کمک کنید چون تعدادی از مبالغ خرید رو مجبور هستیم برگشت بزنیم و لازمه حتما به حساب پرداخت کننده باشه، یعنی با کارتی که پرداخت انجام شده و از برگشت دادن به حسابهای دیگه جلوگیری بشه
با تشکر از لطف و محبت شما
متاسفانه راهنمایی در این خصوص ساده و کوتاه نیست و باید بر برنامه نویسی سمت سرور (PHP یا هر زبان دیگری) مسلط باشیم، ظاهرا توضیحات مربوط به یک سرویس API است، برای ارتباط با این API طبق توضیحات گفته شده در آدرس درخواستی از سرور یک سری پارامترها را آماده و ارسال می کنیم، پارامترها به صورت سربرگ HTTP و همچنین متد POST و GET ارسال می شوند و در نهایت پاسخ در قالب آبجکت JSON قابل دریافت و تجزیه است.
برای تنظیم اطلاعات لازم باید ساز و کار برنامه مدیریت محتوا (CMS) شما دقیق بررسی و مشخص شود اطلاعاتی مانند clientId، card، trackId، Token و... مربوط به هر کاربر از چه قسمت هایی استخراج می شوند، در نهایت می توانیم با توابعی مانند CURL درخواست را ارسال و نتیجه را با json_decode به آرایه تجزیه کنیم.
برای تنظیم اطلاعات لازم باید ساز و کار برنامه مدیریت محتوا (CMS) شما دقیق بررسی و مشخص شود اطلاعاتی مانند clientId، card، trackId، Token و... مربوط به هر کاربر از چه قسمت هایی استخراج می شوند، در نهایت می توانیم با توابعی مانند CURL درخواست را ارسال و نتیجه را با json_decode به آرایه تجزیه کنیم.
مجید
۲۲:۰۹ ۱۴۰۰/۰۴/۱۰
سلام. من برنامه ای دارم که بر اساس php و mysql کار میکنه. بهش 100 جمله میدم و جملات رو تصادفی نمایش میده. حالا میخام فقط مثلا از جمله 30 به بعد رو تصادفی نمایش بده و 30 تای اول رو دست نخورده و با همون ترتیب اولیه نمایش بده. راهنمایی میفرمایید؟ ممنون میشم.
بدون دیدن و بررسی سورس کدهای برنامه نمی توان نظر خاصی داد، بستگی دارد مرحله ایجاد نتیجه تصادفی در کدام قسمت اجرا شود به فرض اگر در پرس و جوی MySQL باشد راه حل متفاوتی دارد تا اینکه پس از دریافت نتیجه به طور مثال در حلقه باشد، در صورت تمایل یک نمونه کد از سورس های بخش ایجاد نتیجه برنامه را درج یا به آدرس ایمیل ما (موجود در بخش تماس) ارسال کنید تا بررسی کنیم.
ابوالفضل
۱۷:۳۳ ۱۳۹۹/۱۲/۰۵
سلام من ۱۰ تصویر زمینه دارم میخام با هر بار رفرش به صورت رندوم عوض بشه ولی بجای پی اچ پی با جاوا اسکریپت باشه. اگه نمیشه یا خیلی زمانبر هست، با هر بار کلیک روی یک دکمه عوض بشه (که اون دکمه کار دیگه ای هم میکنه مثلاً رفتن به یه لینک داخلی در html).
برای ایجاد تصاویر زمینه اتفاقی با هر بار رفرش صفحه می توانید از نمونه کد زیر استفاده کنید:
نکته: این کد هوشمند نیست یعنی احتمال وجود اعداد تکراری در هر بار رفرش و در نتیجه پس زمینه تکراری وجود دارد، برای هوشمندسازی نیاز به توسعه بیشتر با کوکی است که زمانبر می باشد.
<style>
#bg-block{
height: 100px;
width: 200px;
border: 1px solid #E5E5E5;
}
</style>
<div id="bg-block"></div>
<script>
var max = 10;
var number = Math.floor(Math.random() * Math.floor(max)) + 1;
window.onload = function(){
document.getElementById('bg-block').style.backgroundImage = 'url(http://example.com/image/' + number + '.png)';
}
</script>
در این کد تصاویر با فرمت png از شماره 1 تا 10 در آدرس فرضی http://example.com/image
قرار دارند که باید با آدرس سایت خودتان جایگزین کنید، همچنین در اینجا تصاویر زمینه بلاک div با آی دی bg-block تغییر می کند که در صورت نیاز باید متناسب با بلاک مورد نظرتان آن را ویرایش کنید، در صورتی که می خواهید تصویر زمینه تگ body تغییر کند به جای متد document.getElementById('bg-block').style.backgroundImage
از متد document.body.style.backgroundImage
استفاده کنید.نکته: این کد هوشمند نیست یعنی احتمال وجود اعداد تکراری در هر بار رفرش و در نتیجه پس زمینه تکراری وجود دارد، برای هوشمندسازی نیاز به توسعه بیشتر با کوکی است که زمانبر می باشد.
سروش
۰۹:۵۰ ۱۳۹۹/۰۶/۲۳
سلام . من اطلاعات را از دیتابیس دریافت میکنم و در جدول میبینم . میخوام مثلا 6 مورد آخر را در یک ردیف ببینم و هر مورد بعد از 10 ثانیه تغییر کنه . این کار را به چه صورت میشه انجام داد .
منظورتان از "هر مورد بعد از 10 ثانیه تغییر کنه" دقیقا مشخص نیست؟! اگر می خواهید اطلاعات ردیف ها علاوه بر جابجایی با آخرین داده های دیتابیس به روز شوند باید از Ajax استفاده و مجدد درخواست به سرور ارسال کنید، پاسخ سرور باید شامل آخرین ردیف ها باشد منتها در سمت کاربر با جاوا اسکریپت چینش را به صورت تصادفی هر 10 ثانیه تغییر می دهیم، مثال:
فایل response.php
فایل response.php
<?php
//اتصال به دیتابیس
$conn = mysqli_connect("localhost", "username", "password", "dbname");
if(!$conn) {
echo "PHP & MySQL Connection: Error! " . mysqli_connect_errno() . ' - ' . mysqli_connect_error();
exit;
} else {
//نام جدول
$tbl_name = "tblname";
//استخراج آخرین ردیف ها
$query = mysqli_query($conn, "SELECT * FROM $tbl_name WHERE id >= 1 ORDER BY id DESC LIMIT 6");
if(!$query){
echo "Selecting From Table $tbl_name: Error! " . mysqli_error($conn) . '<br>';
} else{
$result = null;
$loop = 1;
while($row = mysqli_fetch_array($query)){
$result .= $loop . ':' . $row['name'];
if($loop < 6){
$result .= '|';
}
$loop++;
}
echo $result;
}
}
//پایان اتصال
mysqli_close($conn);
?>
اطلاعات از یک نمونه جدول (در اینجا با نام فرضی tblname) با دو ستون id و name دریافت می شود، خروجی نهایی باید به شکل نمونه زیر باشد:1:value_1|2:value_2|3:value_3
فایل index.html<!DOCTYPE html>
<html lang="fa">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>وبگو | نمایش اتفاقی نتایج دیتابیس با PHP و JavaScript</title>
<!-- Webgoo.ir -->
<style>
body{
font-family:Tahoma, Geneva, sans-serif;
font-size:12px;
direction:rtl;
}
#result div{
direction:ltr;
border:1px solid #e5e5e5;
}
</style>
<script>
function shuffleArray(array) {
for(var i = array.length - 1; i > 0; i--) {
var j = Math.floor(Math.random() * (i + 1));
var temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
function ajaxRequest(id) {
var xmlHttp;
var respons, array, sub_array;
var result = '';
try {
xmlHttp = new XMLHttpRequest();
} catch (e) {
try {
xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {
alert("متاسفانه مرورگر شما از ای جکس پشتیبانی نمی کند");
return false;
}
}
}
xmlHttp.onreadystatechange = function () {
if(xmlHttp.readyState == 4 && xmlHttp.status == 200) {
respons = xmlHttp.responseText;
array = respons.split('|');
shuffleArray(array);
for(var i = 0; i < array.length; i++){
sub_array = array[i].split(':');
result += '<div id="' + i + '">' + sub_array[0] + ' => ' + sub_array[1] + '</div>';
}
document.getElementById(id).innerHTML = result;
} else {
document.getElementById(id).innerHTML = 'لطفا چند لحظه صبر کنید...';
}
}
xmlHttp.open("GET", "response.php", true);
xmlHttp.send(null);
}
function changeResult(id) {
var array = new Array();
var elms = document.getElementById(id).getElementsByTagName("div");
var result = '';
for(var i = 0; i < elms.length; i++) {
array[i] = '<div id="' + i + '">' + elms[i].innerHTML + '</div>';;
}
shuffleArray(array);
for(var i = 0; i < array.length; i++){
result += array[i];
}
document.getElementById(id).innerHTML = result;
}
var interval;
function activeChangeResult(){
interval = window.setInterval(changeResult, 10000, 'result');
alert('فعال شد، چند ثانیه صبر کنید');
}
function deactiveChangeResult(){
clearInterval(interval);
alert('غیرفعال شد');
}
</script>
</head>
<body>
<noscript>جاوا اسکریپت در مرورگر شما پشتیبانی نمی شود یا غیرفعال است!</noscript>
<button id="button-1" type="button" onclick="ajaxRequest('result')">1- ارسال درخواست ای جکس</button>
<button id="button-2" type="button" onclick="changeResult('result')">2- تغییر چینش ردیف ها</button>
<button id="button-3" type="button" onclick="activeChangeResult()">3- فعال سازی تغییر خودکار چینش بعد از 10 ثانیه</button>
<button id="button-4" type="button" onclick="deactiveChangeResult()">4- غیرفعال سازی تغییر خودکار چینش</button>
<div id="result"></div>
</body>
</html>
اگر به روزرسانی اطلاعات با آخرین دیتای ذخیره شده در دیتابیس اهمیت ندارد و صرفا جابجایی ردیف ها مهم است، صرف استفاده از قسمت جاوا اسکریپت کافی است.Amir Rahimi
۱۹:۱۱ ۱۳۹۹/۰۵/۱۸
سلام و خسته نباشید
من یک سوالی داشتم که مربوط به این بحث نیست
سوال من اینه که یه کد یا . . . میخوام که بتونم متن یا عدد روی عکس رو بتونم با php استخراج کنم
ممنون میشم کمکم کنید و پاسخ دهید 🙏
من یک سوالی داشتم که مربوط به این بحث نیست
سوال من اینه که یه کد یا . . . میخوام که بتونم متن یا عدد روی عکس رو بتونم با php استخراج کنم
ممنون میشم کمکم کنید و پاسخ دهید 🙏
برای این منظور باید از OCR (مخفف Optical Character Recognition) استفاده کنید که اسکریپت هایی برای آن به زبان PHP نوشته شده:
https://sourceforge.net/projects/phpocr/
https://github.com/thiagoalessio/tesseract-ocr-for-php
قاعدتا برای استفاده بهینه و سفارشی سازی این اسکریپت ها باید با 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'];
}
از دیتابیس mysql استفاده شده اما من از لایبرری PDO استفاده میکنم که موقع ($row = mysqli_fetch_array($Pdc))
استفاده میگه متغیر Pdc برای PDO است لطفا نمونه کد برای لایبرری PDO قرار دهیدیا فرض اینکه Pdc لینک اتصال به دیتابیس باشد می توانید از الگوی نمونه کد زیر برای اکستنشن PDO استفاده کنید:
$query = $Pdc->prepare("SELECT text FROM blogs WHERE id > 0 ORDER BY RAND() LIMIT 5");
$query->execute();
$query = $query->get_result();
while($row = $query->fetch_assoc()){
echo $row['text'];
}
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.