نگران سوژه برای نوشتن بودم .
تا اینکه فرحان از دوستان خوبم یه سوال پرسید که برام شد سوژه و بد ندونستم در این
باره بنویسم.
حتماً دقت کرده اید سایتهایی مثل
netsups ، persianstat و یا
webstats4u و امثالهم در
سرویس هایی که ارائه میدهند، اغلب یک کد جاوا اسکریپت در اختیار شما قرار میدهند که با
قرار کد دادن آن در سایتتان آمار بازدید و یا فرم های مختلف لابلای کدهای سایتتان
ظاهر میشود.
شاید شما یک سایت فروش سی دی داشته باشید. و بخواهید یک محصول را به طور تصادفی در
سایتهای دیگر نمایش دهید. چه راهی به ذهنتان میرسد؟
در همچین مواقعی شاید منطقی ترین راه استفاده از فنآوری
XML
و البته فرمت معروف
RSS باشد. این نوع فایلها
به تعبیر من و به زبان ساده در واقع
میشود گفت یک بانک اطلاعاتی کوچک مبتی بر فایل با فرمت و ساختار مشخص و تعریف شده هستند.
این فایلها میتوانند جدیدترین اطلاعات سایت را برای ارائه به کاربران در خود داشته
باشند و با هر بار تقاضای کاربر بروز خواهند شد. این فایلها برای خوانده شدن نیاز به برنامه نویسی و کد نویسی
و تعریف ساختار و قالب نمایشی دارند چرا که اطلاعات درون این فایلها داده های
خام هستند و ایجاد و ساخت قالب نمایشی به عهده استفاده کننده می باشد. که البته این
خود مزیت بزرگی محسوب میشود و انعطاف پذیری این تکنولوژی را باعث شده است و شاید همین مسئله باعث محبوبیت آنها
نیز شده است. اما مشکلی که در این میان وجود دارد این است که شاید کاربر
استفاده کننده دانش برنامه نویسی نداشته باشد و نتواند خروجی این فایلها را تجزیه و
تحلیل کند و در سایت خود استفاده نماید. پس راه حل چیست ؟!
راه حل دیگری که برای صورت مسئله فوق الذکر وجود دارد و کاربر نیاز به داشتن هیچ دانش برنامه نویسی ندارد، استفاده از یک زبان برنامه نویسی Client Side در کنار یک زبان برنامه نویسی Server Side برای تولید فایل خروجی می باشد. مثل JavaScript در کنار PHP . جاوا اسکریپت توانایی این را دارد که کدهای html را مستقیماً به خروجی پاس دهد. در این روش تنها کافیست اطلاعات مورد نیاز را توسط php از منبع اطلاعات خوانده و اطلاعات را به صورت html طوری در اختیار جاوا اسکریپت قرار دهیم که در زمان بارگذاری صفحه، اطلاعات توسط جاوا اسکریپت به خروجی ارسال شوند.
پس به زبان ساده میبایستی اسکریپت جاوایی بنویسیم که هر کاربر با اضافه کردن آن به سایت و یا وبلاگ خود، با هر بار نمایش صفحه، درست در محل قرار گیری کد جاوا، به طور تصادفی یکی از محصولات سایت ما را مشاهده کند. جهت کامل تر شدن مثال، اجازه دهید ترتیبی دهیم تا رنگ زمینه فرم خروجی نیز به صورت دستی توسط پارامتری که کاربر به روش Get ارسال میکند تعیین شود.
خب دست به کار میشویم.
این بانک اطلاعاتی فرضی ماست :
# Database: `products_db` CREATE TABLE `products` ( `id` INT(10) UNSIGNED NOT NULL AUTO_INCREMENT, `title` VARCHAR(255) NOT NULL DEFAULT '', `comments` TEXT NOT NULL, `price` VARCHAR(255) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; INSERT INTO `products` VALUES (1, 'FIFA 07', 'محصول شرکت Ea Sport - بدون نياز به ساخت درايو مجازي', '3200 تومان'); INSERT INTO `products` VALUES (2, 'Resident Evil 4', 'بالاخره رزيدنت اويل 4 هم رسيد، دوستداران اين بازي هيجان انگيز ميدانند که اين بازي با بقيه بازي هاي ترسناک تفاوت زيادي دارد و هنگام بازي کردن مخصوصا نيمه هاي شب هيجان واقعي را احساس خواهيد کرد.', '4000 تومان'); INSERT INTO `products` VALUES (3, 'Need For Speed Carbon', 'نسخه شماره 4 بازي محبوب جنون سرعت', '3200 تومان');
توسط MySQL یک بانک اطلاعاتی به نام products_db ایجاد کرده و کدهای بالا را در آن import نمائید. پس از تعریف و ایجاد بانک اطلاعاتی، یک فایل جدید باز میکنیم و کدنویسی با PHP را آغاز میکنیم. ابتدا به بانک اطلاعاتی متصل میشویم:
<?PHP $db_host = "localhost"; $db_user = "root"; $db_password = ""; $db_name = "products_db"; $conn = mysql_pconnect($db_host, $db_user, $db_password) or die("Connection failed: Please try later."); $db_flag = mysql_select_db ($db_name, $conn) or die("Could not select database:".mysql_error());
یک محصول را به صورت تصادفی از بانک اطلاعاتی استخراج کرده:
$result = mysql_query ("SELECT * FROM `products` ORDER BY RAND() LIMIT 1"); list($id, $title, $comments, $price) = mysql_fetch_array($result);
حال وجود پارامتر ورودی به عنوان رنگ را چک میکنیم تا در صورت تعریف نشدن رنگ توسط کاربر، از رنگ دلخواه به عنوان رنگ پیشفرض استفاده گردد.
if (isset($_GET['bg']) && $_GET['bg'] != "") { $background_color = "#".$_GET['bg']; }else{ $background_color = "#EBEFFE"; }
اکنون همان طور که ذکر شد، آن را در قالب یک کد html بسته به سلیقه خود جدول بندی کرده و در اختیار جاوا اسکریپت قرار میدهیم، و البته کد جاوا اسکریپت را نیز در اختیار php در قالب یک متغییر، بدین صورت:
$out_html = "document.write ('<table style=\"width: 180px; border: 1px solid #000080; background-color: " . $background_color . "; font-size: small; font-family: Tahoma;\" dir=\"rtl\">');\n" . "document.write (' <tr>');\n" . "document.write (' <td style=\"text-align: center; color: #FFFFFF; background-color: #000080;\"><strong>" . $title . "</strong></td>');\n" . "document.write (' </tr>');\n" . "document.write (' <tr>');\n" . "document.write (' <td style=\"text-align: justify;\">" . $comments . "');\n" . "document.write (' </td>');\n" . "document.write (' </tr>');\n" . "document.write (' <tr>');\n" . "document.write (' <td style=\"text-align: center; font-size: x-small; background-color: #C7D1FC;\">" . $price . "</td>');\n" . "document.write (' </tr>');\n" . "document.write ('</table>');\n";
حال زمان آن رسیده که متغییر تولید شده که حاوی کدهای جاوا اسکریپت است را به خروجی ارسال کنیم. البته قبل از آن باید header را از نوع application/x-javascript تعریف کنیم تا فایل تولید شده فرمت یک فایل جاوا اسکریپت را به خود بگیرد:
header("Content-type: application/x-javascript"); echo $out_html; ?>
این فایل را با نام rnd_product.php ذخیره میکنیم.
اکنون تقریباً کار تمام است ! تنها کافیست کد جاوا اسکریپتی بنویسیم که این فایل را به سایتمان الحاق کند، بدین صورت:
<script language="javascript" type="text/javascript" src="rnd_product.php"></script>
در کد جاوای بالا به دلیل مشخص نکردن رنگ به عنوان پارامتر ورودی از رنگ پیشفرض استفاده میشود. در صورتی که بخواهیم از رنگ دلخواه جهت رنگ پس زمینه جدول استفاده کنیم بدین صورت عمل میکنیم:
<script language="javascript" type="text/javascript" src="rnd_product.php?bg=FFCCCC"></script>
به این ترتیب رنگ زمینه جدول در خروجی برای کاربر به رنگ قرمز فسفری ظاهر خواهد
شد و در میان جدول نیز یک محصول از سایت شما به صورت تصادفی نمایش داده خواهد شد که این همان هدف اصلی ما بود.
فایلها را آپ لود کنید. اکنون هر کاربری که این یک خط کد جاوا اسکریپت بالا را
به سایت یا وبلاگ خود اضافه کند، درست در همان محل، فرمی که حاوی یک محصول تصادفی
از سایت شماست را مشاهده خواهد کرد.
(البته به مسیر صحیح فایلها نیز دقت کنید)
کدهای کامل این مقاله را از اینجا دون لود کنید.
امیدوارم استفاده کرده باشید.
از نظراتتون خوشحال میشم. اگر سوالی بود در همین کامنتها بفرمائید.
ضمناً وقتی منبع ذکر نمیشه یعنی منبع همینجاست !