امتیاز دهی ستاره ای در PHP

  • آپدیت شده در تاریخ

امتیازدهی ستاره ای در PHP

در این آموزش شما یاد میگیرید چگونه یک سیستم امتیاز دهی ستاره ای در PHP و توسط jquery و ajax ایجاد کنید. با اسکریپت ساده ما در اخر این مقاله میتوانید یک سیستم امتیازدهی ۵ ستاره ای را در پروژه های خود پیاده سازی کنید.

قصد داریم یک سیستم امتیاز دهی ستاره ای با جی کوئری و PHP و mysql ایجاد کنیم. یک فایل rating.js برای مدیریت تمام عملیات جی کوئری ایجاد کردیم. از ajax برای ارسال امتیاز به فایل php استفاده کردیم (rating.php) . فایل rating.php داده های امتیاز دهی را داخل دیتابیس mysql ،  insert یا update می کند.

از فایل های زیر برای ساخت سیستم امتیاز دهی ستاره ای استفاده کردیم.

  • rating.js
  • rating.css
  • dbConfig.php
  • index.php
  • rating.php

ساخت جداول دیتابیس :

post_rating برای ذخیره اطلاعات امتیاز دهی استفاده می شود. دستور sql جدول post_rating به صورت زیر است :

فایل rating.js و rating.css :

فایل rating.js شامل تمام کدهای جی کوئری برای سیستم امتیاز دهی است.

فایل rating.css برای استایل دهی به سیستم امتیاز دهی استفاده شده است . این دو فایل را از باکس دانلود می توانید دریافت کنید

فایل dbConfig.php :

تنظیمات اتصال به دیتابیس در این فایل قرار دارد.

فایل index.php  :

حتما  کتابخانه جی کوئری و فایل های rating.js,rating.css را فراخوانی کنید.

متد netparadis_rating_widget() داخل فایل rating.js موجود است . می توانید یک سری از option ها و تنظیمات را اعمال کنید.

Option های دردسترس :

  • starLength – تعداد ستاره های قابل نمایش . پیش فرض : ۵
  • initialValue – مقدار پیش فرض وقتی اولین بار فایل لود می شود . پیش فرض: ۰
  • callbackFunctionName – بعد از کلیک بر روی ستاره های امتیاز دهی اجرا می .
  • imageDirectory – اسم دایرکتری تصاویر ستاره ها . پیش فرض : images

تابع processRating() را تعریف کنید. متد  netparadis_rating_widget() ، post ID و امتیاز را به تابع processRating() پاس می دهد. با استفاده از Ajax ، postID و امتیاز را به فایل rating.php ارسال می کنیم.

زمانی که اولین بار صفحه بارگزاری می شود ،تمام اطلاعات امتیاز دهی از دیتابیس خوانده و نمایش داده می شود.

در html ما فقط نیاز داریم که یک فیلد input با ID و یک مشخصه (attribute) برای تعریف postID ایجاد کنیم.

فایل  rating.php :

در این فایل ما postID و امتیاز را توسط Ajax دریافت می کنیم. داخل دیتابیس بررسی میکنیم ، که اطلاعاتی در مورد امتیاز دهی در مورد POSTID ارسالی وجود دارد یا نه ، اگر وجود داشت ، پس اطلاعات و جمع امتیاز ها آپدیت می شود ، درغیر اینصورت یک سطر جدید insert می شود. در آخر تعداد امتیاز دهی و متوسط امتیاز ها از جدول  post_rating با postID خوانده و در قالب فرمت داده Json برگشت داده می شود.

موفق باشید

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

آموزش های رایگان بیشتر در اینستاگرام ما ...

NETPARADIS /
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲۲)
  1. حسن ۲۴ بهمن ۱۳۹۸

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

    1. حسن شفیعی ۲۴ بهمن ۱۳۹۸

      سلام. خوشحالیم که مفید واقع شده.
      در فایل rating.php که درخواست ajax دریافت میشه
      پس اگر امتیاز دهی توسط کاربر مهمان انجام می شود میتوانید باز مثل مرحله قبل که post_id اضافه می کردید اینبار یک ستون دیگر هم به اسم ip اضافه کنید و هنگام ثبت نظر که درخواست ajax ارسال می شود آنجا با کویری آیپی کاربر را هم در دیتابیس ذخیره کنید و دفعه بعد که کاربر دوباره قصد ثبت نظر را داشت می توانید اول قبل اینکه نظر را ثبت کنید ابتدا در دیتابیس select بزنید و اگر سطری با این آیپی فعلی پیدا شد چیزی ثبت نکنید و اگر پیدا نشد که به معنای کاربر جدید است و نظر را ثبت می کنید.
      نمایش IP کاربر در PHP
      اگر کاربر در سایت لاگین می کند که به جای آیپی user_id را ذخیره می کنید و اجازه ثبت نظر دوباره را نمی دیدید چون کاربر لاگین است و user_id هم در دسترس است
      همچنین می توانید کوکی هم استفاده کنید که خب البته با حذف کردن کوکی های مرورگر قابل دور زدن است ولی بیشتر کاربران معمولی این مورد را نمی دانند و می توانید در کنار آیپی این اعتبارسنجی کوکی هم اضافه کنید
      کار با کوکی ها در PHP
      در آموزش ساخت سیستم لایک با php و ajax از کوکی برای چلوگیری از لایک زدن مجدد استفاده کردیم.
      موفق باشید.

  2. حسن ۲۴ بهمن ۱۳۹۸

    سلام . من می خوام برای هرکدوم از پست ها نظر مرتبط با همون پست ثبت بشه.یعنی درون دیتا بیس post_id های مخصوص هر پست ثبت بشه.
    باید کدام قسمت کد رو تغییر بدم

    1. حسن شفیعی ۲۴ بهمن ۱۳۹۸

      سلام.
      در ابتدا باید داخل جدول دیتابیس یک ستون به نام مثلا post_id اضافه کنید و هنگام ارسال درخواست ajax نیز باید post_id مطلب فعلی رو دریافت و به سمت فایل php که درخواست ajax به آن ارسال می شود را اضافه کنید و در سمت php نیز مقدار post_id را از درخواست گرفته کویری sql را تغییر و مقدار post_id را برای ذخیره کردن در دیتابیس اضافه کنید.
      موفق باشید.

  3. mahdi ۱۰ مهر ۱۳۹۸

    من دارم این کد رو یکم توسعه میدم… چیکار کنم وقتی صفحه لود میشه به صورت پیشفرض مثلا ۳ تا ستاره علامتگذاری شده باشه(زرد بشه)
    برای نمایش امتیاز مطلب میخوام.

    1. حسن شفیعی ۱۰ مهر ۱۳۹۸

      سلام.
      در کد جی کویری (… $(“#rating_star”).netparadis_rating_widget({ ) مورد نظر می توانید مقدار اولیه رو تعیین کنید
      مقدار اولیه ۰ تا ۵ را می توانید به initialValue: 3, اختصاص بدید
      موفق باشید.

  4. mahdi ۹ مهر ۱۳۹۸

    سلام. من میخوام از این کد توی قالب وردپرسم استفاده کنم اما ستاره ها نمایش داده نمیشن!
    توی console مرورگر این ارور نمایش میده:
    (index):129 Uncaught TypeError: $(…).netparadis_rating_widget is not a function

    1. حسن شفیعی ۹ مهر ۱۳۹۸

      سلام. فایل های js بدرستی لود نشدن که باید در بخش network مرورگر بررسی کنید

  5. مصطفی نورزاده ۱۲ شهریور ۱۳۹۸

    سلام . کلی عبارات تبدیل شده ( مثل &amp و < و … ) تو متن ها وجود داره . که با یه نگاه مشخص هست . لطفا اینها رو درست کنید

    1. حسن شفیعی ۱۲ شهریور ۱۳۹۸

      سلام. ممنون از توجهتون.
      اصلاح شد.
      موفق باشید.

  6. ایوب طعنه ۱۲ آذر ۱۳۹۷

    سلام ، با تشکر بابت سورس خوبتون.
    ۱٫ من چطور می تونم از این سورس کد طوری استفاده کنم که بجای postID خودم یک ای دی بدم؟
    ۲٫ در یک صفحه چند جا ستاره های امتیاز دهی را بزارم و با هم تداخل نداشته و از هم جدا باشند؟
    ۳٫ این سورس را چطور در قالب سایتم بگنجانم که بصورت شورت کد یا افزونه یا … بشینه ؟

    1. حسن شفیعی ۱۲ آذر ۱۳۹۷

      سلام.خوشحالم که مفید واقع شده.
      تمام اینها موارد ساده ای هستند و فقط نیاز است که php مقدماتی به بالا را بلد باشید که بتونید این تغییرات رو لحاظ کنید.

      کتاب آموزش php برای شما مفید هستش.

      موفق باشید.

  7. وحید ۲۱ خرداد ۱۳۹۷

    data: ‘postID=’+attrVal+’&ratingPoints=’+val,
    این خط تو قشمت ایجکس مشکل داره و ارسال به درستی انجام نمیشه و اطلاعات و نمی تونه به دیتا بیس بفرسته

    1. حسن شفیعی ۲۱ خرداد ۱۳۹۷

      ممنونم از توجهتون . سورس کامل پروژه اضافه شد .

  8. وحید ۲۱ خرداد ۱۳۹۷

    این آموزش ناقصه
    این فایل رو نداره
    widget_star.gif
    لطفا بزارید تا مام استفاده کنیم

    1. حسن شفیعی ۲۱ خرداد ۱۳۹۷

      سلام. دوست عزیز فایل ناقص نیست فقط تصویر ستاره رو باید به فولدر اضافه کنید که به فایل اصلی اضافه شد و میتونید مجددا از طریق باکس دانلود دریافت کنید.

      موفق باشید.

  9. محمد ر ۱۰ بهمن ۱۳۹۶

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

    1. حسن شفیعی ۱۰ بهمن ۱۳۹۶

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

      درجه سختی قسمت انتخاب پسورد اصلاح و برای استفاده بهینه تر شد.

      موفق و پیروز باشید

  10. الناز ۱۳ دی ۱۳۹۶

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

    1. حسن شفیعی ۱۳ دی ۱۳۹۶

      سلام.
      این موردی که گفتید rich snippets است که باید با استفاده از کد نویسی به سایت خودتون اضافه کنید که تگ های لازم برای این کار را خود گوگل در بخش developers معرفی کرده .(لینک)
      بله این قابلیت همان لایک ها و دیس لایک هایی است که در انتهای هر پست به صورت (قلب) قرار داره شده و بصورت درصدی در پشت صحنه تعیین میشه .
      موفق و پیروز باشید

  11. مهدیار ۱۱ آذر ۱۳۹۶

    سلام
    لینک فایل های js و css خرابه…
    لطفا بررسی کنید
    ممنونم

    1. حسن شفیعی ۱۱ آذر ۱۳۹۶

      سلام . لینک مشکلی نداره فقط به خاطر تغییراتی که دادیم به طور معمول قایل دانلود نبود که اصلاح شد.
      لینک داخل باکس دانلود قرار داده شد میتونید استفاده کنید

      موفق باشید

دوره های آموزشی

دانلود رایگان کتاب آموزش PHP

صفر تا صد PHP و MySQL را یکجا یاد بگیرید
همین الان دانلود کن
نگران نباشید. ایمیل‌های مزاحم نمی‌فرستیم
close-link