استفاده از پلاگین نظر سنجی AJAX

در این مقاله قصد دارم طرز استفاده از یک پلاگین AJAX نظر سنجی را شرح دهم .

در این سورس کد از زبانهای PHP , Jquery  برای گرفتن رای و نمایش درصد آرا استفاده شده است . دیتابیسی که اسکریپت به آن متصل می شود دارای 3 جدول question , option , votes می باشد ، همیشه آخرین سوالی که در دیتابیس وارد شود را نشان می دهد . این اسکریپت فقط برای قسمت کاربری طراحی شده است و برای اضافه و کم کردن انتخاب ها و سوالات می بایست با phpmyadmin این کار را انجام دهید .

دمو    دانلود سورس

 

طرز استفاده :

شما با تغییراتی که در اینجا گفته می شود می توانید به راحتی از این کد استفاده کنید و در یه گوشه از سایت و یا وبلاگ خود بدون ریفرش شدن صفحه و مزاحمت برای کاربر نظر سنجی را انجام دهید .

ابتدا فایل دیتابیس poll.sql را با phpmyadmin ، و انتخاب import وارد کنید ، سپس در اول فایل php تنظیمات مربوط به اتصال به دیتابیس را انجام دهید .

//Update database information according to your server settings
$conn=mysql_connect('localhost', 'root', '') or die("Can't connect to mysql host");
mysql_set_charset('utf8',$conn);
//Select the database to use
mysql_select_db('poll') or die("Can't connect to DB");

سپس بصورت دستی در phpmyadmin سوالات و انتخابات را ویرایش یا اضافه کم کنید ، آخرین سوال همیشه نمایش داده می شود .

حال می توانید تست کنید که اسکریپت بالا می آید و خطایی اگر نداد بقیه مطلب را ادامه دهید .

در این کد پس از رای کاربر ، برای اینکه دوباره رای توسط همان کاربر داده نشود از cookie استفاده می شود . و در آن ذخیره می شود که اگر دوباره کاربر خواست رای بدهید ، صفحه ی نتایج بالا بیاید .

پس در صورتی که برای تست رای دادید می توانید cookie های مرورگر خود را پاک کنید تا دوباره بتوانید اسکریپت را تست کنید .

در قسمت بعدی می بایست فایل index.html و style.css را مطابق خواسته خود تغییر بدهید . در کد زیر container# محل لود فرم از فایل php است و loader هم در هنگام عملیات نشان داده می شود  .

نظر سنجی طراح

در حال بارگزاری

طراح

تغییر در خود فرم در فایل poll.php باید انجام می شود .

	//display options with radio buttons
		$query=mysql_query("SELECT id, value FROM options WHERE ques_id=$poll_id");
		if(mysql_num_rows($query)){
			echo '
'; echo ''; while($row=mysql_fetch_assoc($query)){ echo '

'; } echo '

'; echo '

نتايج

'; }

همچنین در این قسمت صفحه ی نتایج را می توانید ویرایش کنید .

	function showresults($poll_id){
	global $conn;
	$query=mysql_query("SELECT COUNT(*) as totalvotes FROM votes WHERE option_id IN(SELECT id FROM options WHERE ques_id='$poll_id')");
	while($row=mysql_fetch_assoc($query))
		$total=$row['totalvotes'];
	$query=mysql_query("SELECT options.id, options.value, COUNT(*) as votes FROM votes, options WHERE votes.option_id=options.id AND votes.option_id IN(SELECT id FROM options WHERE ques_id='$poll_id') GROUP BY votes.option_id");
	while($row=mysql_fetch_assoc($query)){
		$percent=round(($row['votes']*100)/$total);
		echo '

'.$percent.'%'.$row['value'].'   

'; echo '
'; } echo '

کل آرا: '.$total.'

'; }

این اسکریپت از $.post برای ارسال داده ها از فایل html به php استفاده می کند .

				$.post('poll.php', $(this).serialize(), function(data, status){
					$('#formcontainer').fadeOut(100, function(){
						$(this).html(data);
						animateResults(this);
						loader.fadeOut();
					});
				});

به این صورت شما می توانید براحتی یک نظر سنجی دلخواه آجکس داشته باشید ، سورس کد کامل را از اینجا می توانید دانلود کنید .

دمو    دانلود سورس

 


27 پاسخ به “استفاده از پلاگین نظر سنجی AJAX”

  1. امید گفت:

    با سلام

    فوق العاده بود

    یک سوال
    اگر بخوام چند تا از این فرم ها روکنار هم در یک صفحه داشته باشم باید چکار کنم؟
    مثلا برای سه تا محصول

    با تشکر

  2. برای چند تا فرم ، از لحاظ php میشه یک کد برای تحلیلش نوشت اما در html باید id هاشون فرق کنه تا برای ارسال داده ها تمایز قائل شوید و قاطی نشه بهتره یک فانکشن Jquery براش نوشت و فقط آرگومانهاش را تغییر داد و هر دفعه این فانکشن با آرگومانهای خاص صدا زده شود . یا میشه کلا 3 تا کد جدا برای هر کدام نوشت که خیلی روش خوبی نیست .

  3. امید گفت:

    اگر بخواهیم به جز کوکی، بر حسب IP هم اجازه نده به کاربر که مجدادا رای بده
    باید چه کار کنیم؟
    چون اگر فقط بر حسب کوکی باشه، کاربر میتونه با مرورگرهای مختلف رای بده
    یا کوکی های این سایت رو اجازه ذخیره بهش نده یا کوکی ها رو پاک کنه

  4. IP ها که توی دیتابیس ذخیره می شوند .
    باید فایل poll.php را ادیت بکنید و در کنار این شرط ، شرط آی پی را هم چک کنید .
    if($_GET[“result”]==1 || $_COOKIE[“voted”.$poll_id]==’yes’){
    //if already voted or asked for result
    showresults($poll_id);
    exit;
    }

    فقط قبلش باید یک کوئری برای آی پی آدرس کاربر بگیرید و با اون چک کنید .

  5. امید گفت:

    با تقدیم سلام
    دوست عزیز اگر براتون مقدوره
    لطف کنید این مواردی رو که فرمودید به نسخه فعلی اضافه کنید

    با تشکر فراوان

  6. فایل زیپ و دمو برای چک کردن آی پی کاربر اصلاح شد .
    موفق باشید .

  7. محسن گفت:

    سلام
    من این اسکریپت رو نصب کردم اما فقط صفحه نمایش نشان داده می شه
    واسه دمو هم به همین صورته …

  8. محسن گفت:

    من این اسکریپت رو نصب کردم اما فقط صفحه نمایش نتایج نشان داده میشه
    دمو هم به همین صورته …

  9. mohsen گفت:

    سلام دوست عزیز
    هرکاری کردم نتونستم دمو رو تو سایت خودتون ببینم نه اینکه کد سورسش رو دانلود کنم

  10. zahra گفت:

    مطلب جالبی بود.
    ولی امکان دانلود سورس نیست
    ممنون میشم اگر تصحیح کنید.

  11. هادی گفت:

    سلام وقت بخیر
    از ازلاعاتتون ممنون
    من از کد شما استفاده کردم ولی در نهایت این خطا را میده میشه راهنمایی کنید؟
    نظر سنجی

    Warning: mysql_connect() [function.mysql-connect]: Access denied for user ‘taraah_taraah’@’localhost’ (using password: YES) in C:\wamp\www\ajax_poll\poll.php on line 3
    Can’t connect to mysql host

    ممنون

  12. iranian-comment گفت:

    سلام
    ممنون از اسکریپت خوب شما
    من میخوام هر نظرسنجی رو با توجه به id اون نظرسنجی با کمک ifram در سایتم نمایش بدمش
    لطفا به من توضیح دهید چگونه این کار رو انجام دهم
    لطفا مثال بزنید
    من مبتدی هستم

    • اگر آشنایی کافی با PHP داشته باشید اونجایی که دارید از دیتابیس کوئری سلکت میگیرید یک متغیر به نام poll_id استفاده شده که همان آیدی مورد نظر شماست آیدی ای که میخواهید را درون این متغیر بریزید .

  13. iranian-comment گفت:

    ممنون آقای نعمتی
    ولی من متوجه نشدم
    من داخل دیتابیس نظرسنجی خودم رو ایجاد میکنم
    حالا میخوام نظرسنجی با id فلان عدد رو داخل سایتم نمایش بدم
    اینجوری که اسکریپت به طور پیش فرض درست شده فقط آخرین نظرسنجی ایجاد شده رو داخل سایت نمایش میده
    من از طریق دیتابیس سوال نظرسنجی رو میسازم بعد میرم گزینه هارو هم میسازم
    کوئری نمیدونم چیه
    من باید دقیقا چه اقدامی انجام بدم تا نظرسنجی شماره ID فلان رو داخل ساتم نمایش بدم
    یکم بیشتر توضیح بدید
    بد نیست مثال بزنید
    خیلی خیلی ممنون

  14. iranian-comment گفت:

    ببخشید من دوباره مزاهم شدم
    مثل اینکه کامل متوجه نشدید
    من از طریق phpmyadmin مثلا 30 تا نظرسنجی ایجاد میکنم
    حالا میخوام برای هر پست از سایت یک نظرسنجی رو نمایش بدم
    مثلا برای پست شماره 15 نظرسنجی شماره 15 رو قرار میدم
    برای پست 24 نظرسنجی شماره 24 رو و …
    من میخوام تمام نظرسنجی ها نمایش داده بشن
    ولی در جایی که فراخوانی بشن
    مثلا یه سری اسکریپت ها هستن که هر نظرسنجی با توجه به id خودشون در مکان مشخص شده نمایش داده میشن
    به طور مثال http://www.example.com/?pollId=24
    که نظرسنجی شماره 24 فراخوانی و نمایش داده میشه
    دیگه فکر کنم متوجه منظور من شدید
    اگر این اسکریپت نیاز به ویرایش داشت زهمتشو بکشید
    یا اگر نیاز به کار خواصی داره خیلی ساده منو راهنمایی کنید
    خیلی ممنون …

    • بله من متوجه منظور شما شده بودم ، و دقیقا همین رو توضیح دادم به شما ، کافیه در خط هفتم شماره آیدی ای که میخواهید وارد کنید تا آن نظر سنجی نمایش داده بشه مثلا بجای خط هفتم این عبارت زیر را قرار بدهید تا با متود GET آیدی مورد نظر خود را به آن بدهید .
      $get_poll_id=$_GET[“pollId”];

      حالا با لینک زیر میتوانید این کار را انجام دهید .
      http://www.example.com/?pollId=24

  15. مانی گفت:

    چطوری گزینه ها رو تو یه خط یا حتی جدول قرار بدیم؟

  16. پروانه گفت:

    مرسی دوست عزیز عالی بود

  17. کاوه گفت:

    با سلام و خسته نباشید
    متشکرم از اموزش های شما
    من راهنازی کردم ولی این ارور رو میده لطفا کمک کنید تا به درستی راهنازی کنم
    متشکرم بدورد
    Warning: mysql_connect(): Access denied for user ‘taraah_amar’@’localhost’ (using password: YES) in C:\xampp\htdocs\php\amar\poll.php on line 3
    Can’t connect to mysql host

  18. farshid گفت:

    سلام
    میشه قسمت مدیریت هم به این نظرسنجی تون اضافه کنید
    ممنون

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *