نحوه ساخت سیستم نظرسنجی

بررسی درخواست کاربر

خوب ما توی فایل php که درخواست های ای جکس کاربر رو بررسی میکنه و پردازش مناسب رو انجام میده، اول از همه نوع درخواست رو مشخص میکنیم.

rq

خوب من راحع به فایل دیتابیس که require شده توضیح نمیدم دیگه،قسمت اول چک میکنیم مقدار action ست شده و هم چنین مقدار این action برابر vote هست یا نه که اگه شرط برقرار باشه مقادیر لازم رو توی متغییر هایی ذخیره میکنیم و اونارو به یه تابع میفرستیم تا پردازش لازم برای رای جدید انجام بش،اما قبلش لازمه که کاربر اعتبار سنجی بشه که قبلا رای داده یا نه،پس با تابع validate_user این کارو انجام میدیم و اگه ااگه مشکلی نبود پس تابع new_vote اجار میشه و رای کاربر ثبت میشه،و اگه مقدار action برابر result بود یعنی کاربر درخواست نمایش نتایج رو داده پس باید تابع show_results رو با پارامترهای مناسب فراخوانی کنیم.
تابع اعتبار سنجی کاربر

vap

تابع اعتبار سنجی کاربر ما به این طوره که اول با یه تابع دیگه ip کاربر رو میگیرم،بعدشم این ip رو توسط تابع ip2long به یه عدد متناظر اون ip تبدیل میکنیم،بعدشم یه کوئری میگیرم ببینیم این ip قبلا برای این نظر سنجی ثبت شده یا نه اگه سطری برگردونده بشه یعنی ثبت شده پس کاربر مجاز نیست،اگر نباشه که یعنی کاربر مجازه رای بده.
تابع دریافت ip کاربر

addr

تابع ثبت رای جدید

wq

توی این تابع که متغییر های لازم (شماره جواب و شماره سوال) رو براش ارسال میکنیم،اول ip کاربر رو تبدیل و بعد توی متغییر میریزیم،و بعدش با یه کوئری ساده مقدار جواب مورد نظر رو یکی افزایش میدیم،و بعدشم یه کوئری دیگه که ip کاربر رو ثبت میکنیم،آخرشم تابع show_results رو اجرا میکنیم تا نتایج به کاربر نشون داده بشه.
تابع نمایش نتایج

function show_results($q_id)
{
global $db;
$sql=”SELECT SUM(number) as total FROM answers WHERE q_id='{$q_id}'”;
$result=$db->query($sql);
$total=$db->get_row($result);
$total=(int)$total[0];
$sql=”SELECT * FROM answers WHERE q_id='{$q_id}'”;
$result=$db->query($sql);
$output=”;
while ($row=$db->fetch_array($result)):
$percent=get_percent((int)$row[‘number’],$total);
$output.=$row[‘title’].’ – ‘.$percent.’ % با ‘.$row[‘number’].’ ارسال’.'<p class=”p_result”><span data-width=”‘.$percent.'” class=”s_result”></span></p>’;
endwhile;
$output.='<p class=”total_poll”>تعداد کل شرکت کنندگان: ‘.$total.'</p>’;
$db->disconnect();
echo $output;
die();
}

خوب توی تابع نمایش نتایج، ما فقط شناسه سوال رو نیاز داریم که براش ارسال کنیم،اولش یه کوئری نوشتیم که تعداد کل رای های این ظنر سنجی رو دریافت میکنیم،بعدشم یه کوئر زدیم و تمام سطر های متناظر با شناسهسوال رو دریافت کردیم،حالا باید یه خروجی تولید کنیم (خروجی از نوع HTML – قابل توجه دوستانی که به این کد برای درخواست های ای جکس خودشون نیاز دارن)،خوب یه حلقه تشکیل دادیم که والش درصد هر گرینه رو با تعداد رای های اون گزینه نسبت که تعداد کل رای ها دریافت کردیم،بعدشم توی رشته عنصار مورد نظر HTML خودمون رو نوشتیم و با متغییر های php مقادیر مورد نیاز رو داخل قرار دادیم.

متغییر row با ایندکس title عنوان گزینه روب رای ما میگیره.
متغییر percent درصد هر گزینه رو برای ما نشون میده.
متغییر row با ایندکس number تعداد هر گزینه رو برای ما نشون میده.
ما متغییر percent رو بازم استفاده کردیم و داخل خصوصیت data-width عنصر span قرار دادیم.
خوب بعد از حلقه هم مقدار total رو که داخل یه عنصر p اضافه کردیم و در نهایت هم مقدار این متغییر رو برگردوندیم،تا داخل مقدار data در درخواست ای جکس دریافت بشه و داخل صفحه نشون داده بشه.
تابع محاسبه درصد

toi

اینم تابع محاسبه درصد هر مقدار که با ضرب مقدار مورد نظر در عدد ۱۰۰ و تقسیم اون بر مجموع به دست میاد.
کد کامل صفحه ajax.php

239

47

72

76