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

البحث المتعدد

مغلق
بدأه أحمد عدلي في 21 يناير 2003 · 4 رد · 456 مشاهدة · في منتدى تصميم صفحات الويب
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

الاخوة الأعزاء تواجهني مشكلة في تصميم صفحة بحث مت عدد و هي كالتالي

عندي جدول لطلاب من ثلاث دول واربع صفوف و ذكور و اناث

وبالتالي اعمدة الجدول كالتالي :

الاسم و البلد و الجنس والصف

وبالطبع هناك جداول صغيرة مرتبطة بهذا الجدول عن طريق ال id لكل تصنيف والidهو نفسه قيمة الoption في كل كومبو

واقوم بعمل صفحة بحث حسب التصنيفات السابقة و قد قمت بعمل 3 كومبو بوكس لكل من البلد والصف والجنس كالتالي :

<SELECT size=1 name="gender"> 

<OPTION selected value="all" >all</OPTION> 

<OPTION value="1" >boy</OPTION> 

<OPTION value="2" >girl</OPTION> 

</select> 





<SELECT size=1 name="section"> 

<OPTION selected value="all" >all</OPTION> 

<OPTION value="1" >1st</OPTION> 

<OPTION value="2" >2nd</OPTION> 

<OPTION value="3" >3rd</OPTION> 

<OPTION value="4" >4th</OPTION> 

</SELECT> 





<SELECT size=1 name="country"> 

<OPTION selected value="all" >all</OPTION> 

<OPTION value="1" >egypt</OPTION> 

<OPTION value="2" >canada</OPTION> 

<OPTION value="19" >usa</OPTION> 

</SELECT>

وقمت بوضع تكست بوكس من اجل الاسم والان انا اريد البحث في الاسماء كالتالي :

اريد البحث عن ولد اسمه احمد في كل الصفوف ومن مصر

او بنت اسمها سارة في الصف الأول من كل البلاد

او ولد او بنت من اي بلد او أي صف

و جزاكم الله خيرا (f)

#2

هذا مثال اولا لتوضيح الفكرة :

<%

 search=request("search")

 key=Trim(request("key"))

 page=request("page")

 if page="" or page<1 then page=1



 set rs=createObject("ADODB.recordset")

 keyValue=key

' اذ1ا كان ما في مفتاح للبحث يرجع لصفحة البحث

 if key="" then

   write "<b><center>


There isn't a key for search."

   response.addHeader "refresh","3;url=search.asp"

   response.end

  else 

 ' في حال وجود مفتاح للبحث يدخل هنا 







 if search="code" then 

    ' هنا المفتاح يأخذ من القيمة الخامسة لان في هذا المثال

   ' كان ياتي مع كل مفتاح كود رباعي لا نحتاجه بل نحتاج رقم القسم المضاف للكود

    key=mid(key,5)

    if key="" then 

     write "<center>

<b>Error Input .. Check it."

     response.addHeader "refresh","3;url=search.asp"

     response.end

     end if

    SQL="Select * from products where productId="&key

 end if



 if search="name" then 

    SQL="Select * from products where productName like '%"&key&"%'"

 end if



 if search="color" then 

    SQL="Select * from products where color like '%"&key&"%'"

 end if



 if search="price" then 

    key=replace(key,"$"," ")

    key=trim(key)

    if isNumeric(key) then

    keyNo=key+1

    

    SQL="Select * from products where price<"&keyNo-1

    

   else

     write "<center>

<b>Error Input .. Check it."

     response.addHeader "refresh","3;url=search.asp"

    response.end

    end if 

   end if



 if search="desc" then 

    SQL="Select * from products where fullDesc like '%"&key&"%'"

 end if

 %>

  

 <%







 rs.open SQL,cn,3,3 





 if  rs.EOF then

  write "<center><b>
Product not found." 

  response.addHeader "refresh","3;url=search.asp"

 else 



' قم بكتابة عرض نتائج البحث هنا

اعتقد الكود واضح .. نستلم مفتاح البحث key و نضعه ضمن شروط ..

طبعا كل شرك من الواضح له استعلام منفصل و لا يمكن الدخول لأكثر من شرط

وبالأخير ينتج عندنا جملة SQL وحدة .. لاننا لم ندخل في باقي الشروط ..

نسند الاستعلام لكائن مجموعة السجلات rs عن طريق ال ADO ..

و الان كل شيء تمام و كإنك عملت كود اظهار لجملة استعلام وحدة

و كمل .....

You can fly while you can touch the sky

#3

طبعا في المثال الاستعلام كان لشرط واحد .. من أجل أكثر من شرط :

 con1=request("combo1")

 con2=request("combo2")

 con3=request("combo3")



 if con1="" and con2="" and con3="" then

    'اعده للصفحة السابقة 

 end if

 if con1<>"" and con2<>"" and con3="" then

  ' ابحث في أول شرطين

 end if

 if con1<>"" and con2="" and con3<> then 

' ابحث في الأول و الثالث 

 end if

طبعا ممكن تخلي الشروط 3 أو 4 ..

من السابق تكون عندك SQL خاصة بكل شرط و طبعا سيتم الدخول لشرط واحد

و بالتالي يكون عندنا SQL مهيئة للاستعمال ..

و الباقي تعرفه ..

You can fly while you can touch the sky

#4

طبعا استخدمت الطريقة السابقة و هي فصل كل شرط عن الاخر حتى لا تتوه في متاهات ال else ...

في الكود اللي أعلى شيء كلمة keyValue و اللي بتساوي key فقط تستخدم في عرض الكلمة التي كنت تبحث عنها لان key ممكن تتغير خلال عملية الفلترة كما في الشروط مثل ازالة الكود او غيره ..

بالتوفيق..

You can fly while you can touch the sky

#5

مشكور أخ محمد والله ما قصرت شرحك تفصيلي و جميل (F)

هذا الموضوع مغلق.

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