illustrator Curse
  • 7Learn Android Course
  • 7Learn SEO Course
  • 7Learn WP Theme Course

    حرفه ای ترین دوره آموزش طراحی قالب وردپرس



  آیا می دانید تا کنون 6339 نفر در 14 دوره آموزشی سون لرن ثبت نام کرده اند !

آموزش کامل ساخت سیستم نظرسنجی با PHP و Ajax (قسمت سوم-پایانی)

15385 ۱۶ مهر ۹۲

دوستان سلام،توی قسمت های قبلی ما ظاهر نظر سنجی و هم چنین قسمت درخواست های ایجکس رو طراحی کردیم و نوشتیم و توی این قسمت هم کد های PHP رو می نویسیم تا این اسکریپت ما تکمیل و قابل استفاده باشه،البته گزینه های دیگه ای هم میشه بهش اضافه کرد که اون رو بعدا توی اموزش های دیگه توضیح میدیم،پس با ما همراه باشید.

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

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

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

تابع اعتبار سنجی کاربر

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

تابع دریافت ip کاربر

خوب بچه ها اینم توضیح خاصی نداره در حالت های مختلف ip کاربر رو دریافت میکنه و برمیگردنه.

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

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

تابع نمایش نتایج

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

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

تابع محاسبه درصد

اینم تابع محاسبه درصد هر مقدار که با ضرب مقدار مورد نظر در عدد 100 و تقسیم اون بر مجموع به دست میاد.

کد کامل صفحه ajax.php

دانلود کد های کامل پروژه

امیدوارم براتون مفید باشه.موفق و پیروز باشید.

:: مطالب جدید سون لرن را از طریق ایمیل دریافت کنید :

دیدگاه ها 29 دیدگاه برای این مطلب ارسال شده است. نظردهی برای این مطلب بسته شده است .

  • ‏‏
    مسعود(۷ بهمن ۱۳۹۲)

    با سلام و احترام
    دوستان پس چرا هیچ ارتباطی بین ajax.php و index.php نیست.
    راستش من مثل همین آموزشها پیش رفتم صفحه html رو ایجاد کردم و مرحله اول کامل بود.و ajaxreq رو تو بخش head قرار دادم.حالا وقتی یه گزینه رو انتخاب میکنم هیچ اتفاقی نمیفته چون اینجا هیچ ارتباطی بین ajax.php و index.php نیست.اینکلود هم میکنم هیچ اتفاقی نمیفته.فکر کنم صفحه ajax رو تو صفحه ایندکس قرار بدم؟

    • ‏‏
      کیوان علی محمدی(۷ بهمن ۱۳۹۲)

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

  • ‏‏

    سلام ممنون از مطلب خوبتان واقعا استفاده کردم .یک سوال اگر بخواهیم در نظر سنجی به آیپی کاربر توجه نکنه و هر تعداد رای داد را ثبت کند چه کدی را باید تغییر دهیم ؟

    • ‏‏
      کیوان علی محمدی(۳۱ اردیبهشت ۱۳۹۳)

      سلام جایی که تابع Validate_user استفاده شده رو باید غیر فعال کنید.

      • ‏‏

        تابع if مورد نظر را پاک کردم ولی الان هرچی نظر ثبت می کنم در جدول اضافه میشود ولی در صفحه نمایش نتایج نمایش داده نمیشه و در صفحه نمایش نتایج یک ارور دارم :
        Warning:nazarsanj/ajax.php on line 17
        لاین 17 را دیدم ولی مشکلش را نفهمیدم
        این را هم بگم من دارم سعی می کنم دوتا سوال پشت سر هم در فرمم قراربدهم .

        • ‏‏
          کیوان علی محمدی(۱ خرداد ۱۳۹۳)

          اون شرط چک میکنه کاربر میتونه رای بده یا نه،اگه برش دارین دیگه اعتبار سنجی کار نمیکنه،اینکه بخاین دو تا سوال قرار بدین کمی باید کدها رو تغییر داد.

  • ‏‏

    دو سوال دیگر هم دارم : اگر بخواهیم چند سوال را برای نظر سنجی پشت سرهم قرار دهیم باید چه کنیم ؟
    و اگر بخواهیم به جای صفحه ی “نمایش نتایج” پیغام “تشکر” به کاربر نمایش بدهد چه کاری باید انجام دهیم ؟

    • ‏‏
      کیوان علی محمدی(۱ خرداد ۱۳۹۳)

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

      • ‏‏
        hermes hermes(۱ خرداد ۱۳۹۳)

        در مورد دو سوال یا بیشتر قرار دادن می تونید راهنمایی کنید ؟ فکر کنم اگر در ادامه ی این آموزش سه قسمتی قرارش بدهید خیلی ها استفاده می کنن . خیلی ممنون

        • ‏‏
          کیوان علی محمدی(۱ خرداد ۱۳۹۳)

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

  • ‏‏
    hermes hermes(۲ خرداد ۱۳۹۳)

    می تونید یک افزونه آزمون که باهاش بشه یک صفحه نظر سنجی طراحی کرد رو بهم معرفی کنید ؟
    معمولا توی این افزونه ها آمار را به صورت جواب درست و غلط فقط نمایش میدن ولی من می خوام مثل نظرسنجی که شما طراحی کردید درصد جواب به هر گزینه را نمایش بدهد

  • ‏‏

    سلام
    فایل sql را میخواستم
    من نصب کردم درست است فقط نمیدانم چطور در phpMyAdmin سوال و جواب ها را قرار بدهم

    ممنون

    • ‏‏
      سجاد دریس(۲۴ تیر ۱۳۹۳)

      دوست عزیز ابتدا یک دیتابیس ایجاد کنید، سپس در تب sql اون دیتابیستون میتونید queryهارو اجرا کنید

  • ورود/عضویت سریع با اکانت فیسبوک/جیمیل شما

    :: شما می توانید با استفاده از اکانت یاهو یا جیمیل خود به صورت کاملا امن، سریع و بدون نیاز به ورود اطلاعات عضو و وارد سایت شوید. در این صورت هیچ نیازی به ورود نام کاربری و رمز عبور خود نخواهید داشت و هویت شما از طریق ایمیلتان مورد تائید قرار می گیرد .
    برای استفاده از این روش باید در اکانت گوگل(جیمیل) و یا یاهوی خود لاگین باشید .
    عضویت/ ورود سریع با :
    در حال اتصال ...

    ورود به سایت

    ورود سریع با :
    در حال اتصال ...

    جستجو در سون لرن

    عبارت :
    7LearnTelegram