الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

كيف أبرمج محرك بحث صغير Or أو And ?

بدأه aladawi في 24 سبتمبر 2008 · 4 رد · 766 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

برمجت سكريبت عقاري

وو اجهتني مشكلة في محرك البحث

كما في الصورة

post-144852-1222236460_thumb.gif

إستخدمت في الإستعلام OR و AND

وماشي فايده

فكرة البحث

إن الزائر يختار بعض الخيارات (كما في الصورة) أو كل الخيارات أو لايختار أي خيار حتى يكون البحث شامل

فكيف يكون الإستعلام إختياري؟

  $SQL=mysql_query("SELECT * FROM real_estate WHERE BINARY location LIKE '$location' and type LIKE '$type' and forx LIKE '$forx' and numbathrooms LIKE '$numbathrooms' and numbedrooms LIKE '$numbedrooms' ORDER BY sort") or die (mysql_error());

المتغيرات

$location= $HTTP_POST_VARS['location'];
$type= $HTTP_POST_VARS['type'];
$forx= $HTTP_POST_VARS['forx'];
$numbathrooms= $HTTP_POST_VARS['numbathrooms'];
$numbedrooms= $HTTP_POST_VARS['numbedrooms'];

تم تعديل هذه المشاركة بواسطة aladawi في 24 سبتمبر 2008 في 09:12

#2

...................up

#3

...................up

#4

السلام عليكم ،،

الاخ العزيز كل ماعليك هو ان تظيف ال like عندما يكون هناك قيمه للبحث اما اذا لم يختر المستخدم اي قيمه فلا تظيف ال like لهذا المتغير

او ان تستخدم ال % في ال like وترتاح سواءا اختار قيمه ام لم يختر بحيث يكون شكل ال like كالتالي

like '%$var%'

لكن عليك الانتباة لشيء واحد هنا يجب ان لا يحتو $var على اي قيمه اذا لم يختر المستخدم اي شيء

والا سوف لن يظهر اي بيان الا اذا كان مساوي لقيمه محتوى المتغير var

سبحان الله وبحمده *** سبحان الله العظيم

www.quraany.com

www.arabcs.com

#5

اولا ...

$sql = "select * from real_estate where ";

العبارة السابقة تعني قم بإسترجاع جميع البيانات بالجدول بشروط ... هنا الشروط ستكون القيم التي قمت بإختيارها من الـ Drop Down لاحظ الكود التالي :

ثانياً ....

if ( (!empty($location)) && ($location != 'Select') )
   {
	 $sql .= " location like '%$location%' and ";
   }

   if ( (!empty($type)) && ($type != 'Select') )
   {
	 $sql .= " type like '%$type%' and ";
   }

   if ( (!empty($forx)) && ($forx != 'Select') )
   {
	 $sql .= " forx like '%$forx%' and ";
   }

   if ( (!empty($numbathrooms)) && ($numbathrooms != 'Select') )
   {
	 $sql .= " numbathrooms' like '%$numbathrooms%' and ";
   }

   if ( (!empty($numbedrooms)) && ($numbedrooms != 'Select') )
   {
	 $sql .= " numbedrooms like '%$numbedrooms%'";
   }

لكل متغير قمنا بإختباره اولا هل يحمل قيمة ام لا أو ليس به القيمة Select ( هذه الكلمة عبارة عن اول قيمة لديك في الـ dropdown )

الخطوه هذه تحددها حسب ماترى .

بعد ذلك اذا كان هنالك قيمة بالمتغير ندمجه في عبارة الـ Query ونضع نهايتها and ماعدا المتغير الأخير.

ثالثاً ....

if (substr($sql, -3) == "and")
	 $sql = substr($sql, 0, -3);
   else	
   if (substr($sql, -5) == "where")
	 $sql = substr($sql, 0, -5);

في هذه الجزئية نختبر المتغير sql وبه 3 حالات يمكن ان تكون :

  1. إما أن لا يكون نهاية المتغير كلمة and .
  2. إما أن تكون نهاية المتغير كلمة and .
  3. إما أن تكون نهاية المتغير كلمة where

هنا تمت معالجة الحالتين 2 و 3 بإستخدام الدالة Substr

الكود كاملا ..

$sql = "select * from real_estate where ";

   if ( (!empty($location)) && ($location != 'Select') )
   {
	 $sql .= " location like '%$location%' and ";
   }

   if ( (!empty($type)) && ($type != 'Select') )
   {
	 $sql .= " type like '%$type%' and ";
   }

   if ( (!empty($forx)) && ($forx != 'Select') )
   {
	 $sql .= " forx like '%$forx%' and ";
   }

   if ( (!empty($numbathrooms)) && ($numbathrooms != 'Select') )
   {
	 $sql .= " numbathrooms' like '%$numbathrooms%' and ";
   }

   if ( (!empty($numbedrooms)) && ($numbedrooms != 'Select') )
   {
	 $sql .= " numbedrooms like '%$numbedrooms%'";
   } 

   if (substr($sql, -3) == "and")
	 $sql = substr($sql, 0, -3);
   else	
   if (substr($sql, -5) == "where")
	 $sql = substr($sql, 0, -5); 

   $result=mysql_query($sql);

اتمنى يكون طلبك ....

تم تعديل هذه المشاركة بواسطة mana80 في 4 أكتوبر 2008 في 23:28

I Say Nothing

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…