جستجوی پیشرفته توسط php

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

جستجوی پیشرفته توسط php

در جستجوی پیشرفته توسط php ما قابلیت های زیادی برای فیلتر کردن داده های mysql داریم. با این قابلیت ها ما یک کوئری sql با شرط برای ساخت یک جستجوی پیشرفته استفاده می کنیم .

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

 

فرم html جستجوی پیشرفته

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

 

ساخت شرط ها جستجو در php

این کد ورودی های فرم را دریافت و شرط های کوئری MySQL را برای جستجو می سازد. اگر کاربر ستون مورد نظر را برای جستجو انتخاب کند پس شرط جستجو بر روی آن ستون اعمال می شود . در غیر اینصورت ما جستجو را بر روی تمامی ستون ها انجام می دهیم. .

می توانید با انجام تغییرات  آن را توسعه بدید و در پروژه های خود استفاده کنید . موفق باشید

حسن شفیعی توسعه دهنده وب و موبایل مدیر سایت علاقه خاصی به برنامه نویسی وب و موبایل دارم و هر روز تلاش می کنم به این حوزه مسلط تر شوم و اطلاعاتم را به شکل کاربردی برای علاقه مندان در وب به اشتراک بگذارم. اگر نیاز به برنامه نویس برای انجام پروژه و نوشتن اسکریپت های سمت وب, اپلیکیشن های اندروید و ios, پیدا کردن راه حل توسعه و غیره داشتید حتما از طریق تماس با ما/ واتساپ/ تلگرام بهم پیام بدید. برایتهیه هاست مطمین و پرسرعت کلیک کنید
مطالب زیر را حتما بخوانید
دیدگاه کاربران (۲۴)

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

  1. mostafa hasani ۸ بهمن ۱۴۰۱

    سلام تشکر بابت زحماتت جهت آموزش
    من یک سوال دارم
    من یک جدول دارم ۳ فیلد داره برند ،نوع و مدل
    حالا من جستجو زدم که برند=سامسونگ ونوع =گوشی و مدل = s10
    حالا این شرط رو میاره
    من چطوری جستجو بزنم برند سامسونگ باشه مدل s10 ولی نوع مهم نباشه همه گوش یا تبلت و…
    که البته با php نوشتم
    مرسی متشکر

    پاسخ
    1. حسن شفیعی ۹ بهمن ۱۴۰۱

      سلام.
      اولین کار اینه که داخل خود phpmyadmin با mysql کدش رو بنویسید و تست کنید اگر درست بود بعد روی php قرار بدید اینطوری خیلی سریعتر به نتیجه میرسید
      اگه میخواید مثلا نام باشه بقیه مهم نباشه شرط های where رو باید or بزارید

      پاسخ
  2. نازنین رضای ۲ مهر ۱۴۰۰

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

    پاسخ
    1. حسن شفیعی ۴ مهر ۱۴۰۰

      سلام. ممنون. خوشحالیم که مفید واقع شده.
      دستور like در sql رو کامل باید یاد بگیرید

      پاسخ
  3. علی ۲۱ فروردین ۱۴۰۰

    سلام چگونه کلمات کلیدی (کلمات اصلی یا مهم) که کاربر سرچ می کنه رو بگیریم مثلا کاربر سرچ می کنه
    ساخت لیست tdo با php در اینجا tdo مهمه و php و کمی هم لیست
    با و … مهم نیس

    پاسخ
    1. حسن شفیعی ۲۱ فروردین ۱۴۰۰

      سلام.
      در اینصورت باید در جدول مطالب در دیتابیس یک فیلد به نام کلمات کلیدی تعریف کنید و کویری sql رو بر اساس این اینجام بدید

      پاسخ
  4. نیلوفر ۱۲ مرداد ۱۳۹۹

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

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

      اینو دیگه باید بر اساس منطق و نیاز خودتون بنویسید ولی بهتره که با explode فقط کلمات رو با فاصله از هم جدا کنید و نیاز نیست حرف به حرف جدا کنید. مثلا explode(‘ ‘,$search) پس سعی کنید کلمات رو با فاصله جدا کنید و داخل دیتابیس جستجو کنید

      پاسخ
      1. نیلوفر ۱۲ مرداد ۱۳۹۹

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

        پاسخ
  5. نیلوفر ۱۱ مرداد ۱۳۹۹

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

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

      سلام. نتایج رو که از پایگاه داده می خونید. حالا آدرس اون نتایج چی هستند اگر مثلا پست بلاگ هست آدرسش به چه صورته اگر مثلا بصورت site.com/post.php?id=1 هست که شما باید فقط اون آیدی که از دیتابیس برگشته رو با همین الگو داخل تگ a قرار بدید.

      پاسخ
      1. نیلوفر ۱۱ مرداد ۱۳۹۹

        اون نتایج محصولات هستن. توی دیتابیس یه رکورد به نام url دارم از نوع text که آدرس صفحه تک تک محصولات هست. حالا تایتل نتایجم رو میاره ولی نمی دونم اگه بخام لینک بدم توی قسمت href چی بزارم که کاربر بتونه علاوه بر مشاهده نتیجه به اون صفحه منتقل بشه.
        ادرس رو هم به صورت زیر نوشتم
        http://site.com/mypage.php قرار دادم که الان که توی لوکال هست به جای site.com لوکال هاست نوشتم.

        پاسخ
      2. حسن شفیعی ۱۱ مرداد ۱۳۹۹

        همانطوری که تایتل رو قرار میدید مقدار url هم قرار بدید کار سختی نیست. اگر تونستید تایتل رو بزارید دیگه url رو هم میتونید بزارید به اینصورت TITLE

        پاسخ
      3. نیلوفر ۱۱ مرداد ۱۳۹۹

        متاسفانه نمیشه.
        برای نمایش نتایج از for استفاده کردم. قبل echo نمایش محصولات هم تگ a قرار دادم. آدرس اون صفحات رو چطوری توی href قرار بدم. یعنی باز از حلقه استفاده کنم؟

        پاسخ
      4. حسن شفیعی ۱۱ مرداد ۱۳۹۹

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

        پاسخ
      5. نیلوفر ۱۲ مرداد ۱۳۹۹

        ممنون. مشکلم حل شد. لطف کردین.

        پاسخ
  6. امین ۱۷ مهر ۱۳۹۸

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

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

      سلام ممنون
      دقیقا در این مطلب هم موردی که میخواید آموزش داده شده.
      اون صفحه ای که میخواید رو میتونید از بخش action در form کد html تغییر بدید
      موفق باشید.

      پاسخ
  7. امیر نجفی انامقی ۲۵ تیر ۱۳۹۸

    سلام در فروشگاه اینترنتی که نوشتم منو و زیر منو دارم لیست اصلی منو شامل برندهاست و زیر مجموعه ها شامل یک دسته بندی دیگر است
    خواستم ببینم چطور می تونم جستجو رو بر اساس منو و زیر منو انجام بدم
    مثلا اگر فقط روی سامسونگ کلیک کردم از پایگاه داده تمام برندهای سامسونگ رو برام بیاره و اگر روی سامسونگ>دیجیتال کلیک کردم ابزارهای دیجیتال مربوط به سامسونگ رو برام بیاره
    به عبارت ساده تر چطور بر اساس دو یا چند آی دی از پایگاه داده جستجو کنم

    پاسخ
    1. حسن شفیعی ۲۶ تیر ۱۳۹۸

      سلام. از دستور شرطی where استفاده کنید و چندین شرط رو بصورت or یا and بکار ببرید.
      موفق باشید.

      پاسخ
  8. رضا ۱۶ دی ۱۳۹۷

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

    SELECT * FROM NEWS WHERE
    news_subject=’$user_favorit_subject’ AND news_title LIKE ‘%$user_input_title%’

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

      سلام. ابتدا سعی کنید بعد از مقدار دهی شدن متغییر ها در کویری sql اون رو چاپ کنید و عینا همان رو ببرید داخل phpmyadmin اجرا کنید تا ببینید چه مشکلی وجود دارد.

      $sql = SELECT * FROM NEWS WHERE
      news_subject=’$user_favorit_subject’ AND news_title LIKE ‘%$user_input_title%’

      echo $sql;

      همچنین داخل خود phpmyadmin در بخش جستجو میتونید یکبار دیگر امتحان کنید و اگر اوکی بود کویری ساخته شده توسط phpmyadmin رو داخل برنامه خودتون استفاده کنید.

      موفق باشید.

      پاسخ
  9. ali ۲۹ آذر ۱۳۹۷

    عالللی دمتون گرم مخصوصا قرار دادن دانلود pdf

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

      خوشحالم که مفید واقع شده. موفق و پیروز باشید.

      پاسخ
دوره های آموزشی