PHP و AJAX: مبحث Live Search و نظرسنجی

AJAX Live Search And Poll

2 361

Live Search در PHP

به قسمت آخر از سری آموزشی PHP 7 خوش آمدید.

تکنولوژی AJAX فقط برای کار با فایل های XML و … نیست بلکه یکی از استفاده های آن قابلیت Live Search است. Live Search همان قابلیت پیشنهاد دادن گوگل در هنگام جست و جو است؛ مثلا زمانی که می نویسیم «چطور زندگی ….» گوگل پیشنهاداتی مانند زیر را بدون refresh شدن صفحه برایمان می آورد:

  • چطور زندگی کنیم؟
  • چطور زندگی شادی داشته باشیم؟
  • جطور زندگی خوبی داشته باشیم؟
  • و….

به این قابلیت Live Search می گویند و با AJAX انجام می شود. از مزایای Live Search نسبت به جست و جوهای قدیمی می توان به موارد زیر اشاره کرد:

  • نتایج هنگام تایپ کاربر به او نمایش داده می شوند.
  • هر چه بیشتر تایپ کنید، نتایج جزئی تر و جزئی تر می شوند.
  • اگر نتایج بیش از حد جزئی شدند می توانیم با حذف چند کاراکتر نتایج کلی تری را ببینیم.
  • در بسیاری از اوقات نتایج نمایش داده شده به کاربر ایده های جدیدی داده و او را راهنمایی می کند.
  • وب سایت شما مدرن تر به نظر می رسد.
  • و …

به مثال زیر دقت کنید:

در مثال بالا رویداد onkeyup را در نظر گرفته ایم. اگر این رویداد اتفاق بیفتد تابعی به نام ()showResult اجرا خواهد شد. از طرفی اگر در فیلد چیزی وجود نداشته باشد (str.length==0) تابع ()showResult محتوای placeholder را خالی کرده و از تابع خارج می شود (کلمه ی return) اما اگر محتویات آن خالی نباشد:

  • شیء XMLHttpRequest ساخته می شود.
  • تابعی ساخته می شود که هنگام آماده بودن پاسخ سرور اجرا می شود.
  • درخواست به یک فایل روی سرور ارسال می شود.
  • پارامتر q به همراه محتویات فیلد جست و جو به URL اضافه می شود.

فایل PHP که روی سرور مسئول بررسی این درخواست است livesearch.php نام دارد. سورس کد این فایل می گوید به دنبال عناوین موجود در یک فایل XML بگرد و اگر چیزی با جست و جو همخوانی داشت آن را ارسال کن:

در این کد اگر درخواستی از سمت جاوا اسکریپت ارسال شده باشد (strlen($q) > 0) مراحل زیر انجام خواهد شد:

  • یک فایل XML در یک شیء XML DOM بارگذاری می شود.
  • بین تمام <title> ها گردش می شود تا عبارت جست و جو شده را پیدا کنیم.
  • قرار گرفتن پاسخ سرور در response$ (اگر بیشتر از یک نتیجه پیدا شد، تمام نتایج در متغیر قرار می گیرند).
  • اگر هیچ نتیجه ای پیدا نشود مقدار response$ روی عبارت no suggestion (نتیجه ای پیدا نشد) تنظیم می شود.

نظرسنجی در PHP

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

محتویات فایل HTML ما بدین صورت است:

در این صفحه بر اساس رویداد onclick تابعی به نام ()getVote اجرا خواهد شد. این تابع:

  • شیء XMLHttpRequest را می سازد.
  • تابعی می سازد که هنگام آماده بودن پاسخ سرور اجرا می شود.
  • درخواست را به یک فایل روی سرور ارسال می کند.
  • پارامتر vote به همراه محتویات نظر سنجی (گزینه ی yes یا no) به URL اضافه می شود.

از طرف دیگر فایلی به نام poll_vote.php در سمت سرور مسئول پردازش این درخواست است و محتویات زیر را دارد:

زمانی که مقدار از سمت جاوا اسکریپت فرستاده شد:

  • محتوای فایلی به نام poll_result.txt دریافت می شود.
  • محتوای این فایل در متغیرها ذخیره شده و مقدار انتخاب شده توسط کاربر نیز به این مقادیر اضافه می شود.
  • نتیجه در فایل poll_result.txt ثبت می شود (عملیات write).
  • شکلی گرافیکی از نتایج نظر سنجی به نمایش در می آید.

محتویات فایل poll_result.txt به شکل زیر ذخیره می شوند:

عدد اول تعداد نظرات Yes و عدد دوم تعداد نظرات No را نشان می دهد.

نکته: به وب سرور خود اجازه دهید که به فایل های متنی دسترسی داشته باشد اما این اجازه را به هر فردی ندهید چرا که مشکلات امنیتی ایجاد می کند (فقط وب سرور کافی است).

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

ترتیبی که روکسو برای یادگیری مطالب سری آموزش PHP 7 به شما توصیه می‌کند:
2 نظر
  1. سینا عطایی
    0

    سلام الان که از live search گفتین من یاد elastic search افتادم میشه توضیح بدین چیه؟

    1. امیر زوارمی
      0

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

      مبحث elastic search خیلی طولانی هست و نمیشه توی کامنت ها توضیح داد. به طور خلاصه یه روش برای اجرای جست و جوی سریع هست و REST API خودش رو برای کار با پایگاه داده داره. برای زبان php میتونید به repository زیر برید:

      https://github.com/elastic/elasticsearch-php

ارسال نظر

توجه:‌ آدرس ایمیل شما منتشر نخواهد شد.

film izle | eskisehir escort | modanisa | mersin escort | www.ieski.com | eskort adana | www.izmir-eskort.org | kabak koyu | hd tv izle