الدرس الثاني عشر: تصميم صفحة البحث وعرض النتائج search_result.asp

الدرس الثاني عشر: تصميم صفحة البحث وعرض النتائج search_result.asp

افتح صفحة search.asp وقم بحفظها باسم search_result.asp. ستجد الـ Code كالتالي:

<%@ Language=VBScript CodePage = “1256”%><html dir=rtl>

<!–#include file=”pageheader.txt” –>

<form method=>”GET” action=“search_result.asp”>
<p align=
“center”>
<input type=
“text” name=“keyword” size=“20”></p>
<p align=
“center”><input type=“submit” value=“ابحث” name=“B1”></p>
</form>

<!–#include file=”pagefooter.txt” –>

والآن.. لنقم بالتغييرات المطلوبة. أولى هذه التغييرات هو إعلام البرنامج أن هنالك (متغير) يجب أخذ قيمته من الصفحة السابقة serach.asp هذا المتغير هو keyword والذي يحتوي على الكلمة المطلوب البحث عنها. وكما فعلنا في الدرس التاسع، سنستخدم Request.QueryString للقيام بهذه المهمة. لذا قم بمسح هذه الأسطر:

<form method=“GET” action=“search_result.asp”>
<p align=
“center”>
<input type=
“text” name=“keyword” size=“20”></p>
<p align=
“center”><input type=“submit” value=“ابحث” name=“B1”></p>
</form>

واكتب بدلا منها:

<%
keyword
=request.querystring(“keyword“)
%>

والآن سنقوم بالبحث عن الكلمة في الجدول بعد استقبالها من صفحة البحث باستخدام أمر Select:

<%@ Language=VBScript CodePage = “1256”%><html dir=rtl>

<!–#include file=”pageheader.txt” –> <!–#include file=”connection.txt” –>
<%
keyword=request.querystring(“keyword”)

SelectTechSQL=”select * from tech_news where subject like ‘%”&keyword&”%’ ”
set rs=ADO.execute(
SelectTechSQL)
%><!–#include file=”pagefooter.txt” –>

الملاحظ في أمر Select هنا أننا أضفنا كلمة Like . كلمة Like تغني عن علامة ( = ). ويمكن أن تعبر عن مساواة كلية أو جزئية. ولتوضيح ذلك، لنفترض المثال التالي: إن قمنا باستخدام المساواة الكلية وبحثنا عن “خالد” فستظهر لنا النتائج التي تحتوي على كلمة “خالد”. أما إن استخدما المساواة الجزئية فستظهر لنا النتائج التي تحتوي على: خالد، خالدا، الخالد، الخالدون، خالدون .. الخ

  • للتعبير عن المساواة الكلية نكتب Like وبعدها اسم المتغير .. في مثالنا هو Keyword فنكتبه بالصيغة التالية: “&keyword&”
  • للتعبير عن المساواة الجزئية نكتب Like وبعدها اسم المتغير بين علامات النسبة المؤوية .. في مثالنا هو Keyword فنكتبه بالصيغة التالية: ‘%”&keyword&”%’

والمقصود في عبارة Select في هذا المثال هو: اختر أي شي من جدول Tech عندما تكون القيمة في العمود Subject مساوية أو مشابهة للقيمة في المتغير Keyword . للتوضيح لنفترض المثال التالي:
لديك في القاعدة العناوين الثلاثة التالية:

  1. لغة ASP متطورة وسهلة.
  2. لغة PHP سهلة ومتطورة.
  3. البرمجة بـ C++ ممتعة.

عند إدخال كلمة “لغة” للبحث عنها، سيظهر لنا أول عنوانين كنتائج للبحث. حيث أن أمرنا يبحث في العنوان.
إن كنا نود تغيير حقل البحث، فبإمكاننا تغيير اسم العمود الذي يتم البحث فيه.. كأن نكتب “select * from tech where body like ‘%”&keyword&”%’ ” في حال رغبتنا بالبحث في نص الموضوع وليس عنوانه. أما إن أردنا البحث في كافة الحقول، فعلينا كتابتها جميعا والربط بينها باستخدام أحد دوال الربط المنطقيةوهي Or . لنعد كتابة SelectTechSQL مرة باسخدام Or :

SelectTechSQL=”select * from tech_news where subject like ‘%”&keyword&”%’ or body like ‘%”&keyword&”%’ “

في هذه الحالة سيتم عرض النتائج الذي توجد بها كلمة البحث في:

  1. العنوان.
  2. المحتوى.
  3. العنوان والمحتوى.

الأمر السابق سيبحث عن الكلمة في جدول Tech_news وللبحث في كلا الجدولين ( Tech_news و General_news ) بإمكاننا كتابة أمر لكل جدول، كالتالي:

<%@ Language=VBScript CodePage = “1256”%><html dir=rtl>

<!–#include file=”pageheader.txt” –> <!–#include file=”connection.txt” –>
<%
keyword=request.querystring(“keyword”)
‘ أوامر البحث في جدول الأخبار التقنية
SelectTechSQL=”select * from tech_news where subject like ‘%”&keyword&”%’ or body like ‘%”&keyword&”%’ “
set rsTech=ADO.execute(
SelectTechSQL)
‘ أوامر البحث في جدول الأخبار العامة
S
electGeneralSQL=”select * from tech_news where subject like ‘%”&keyword&”%’ or body like ‘%”&keyword&”%’ ”
set rs
General=ADO.execute(SelectGeneralSQL)
%><!–#include file=”pagefooter.txt” –>

لا تنسى أن تضع ملف الربط بقاعدة البيانات، وذلك لأننا سنحتاج لقراءة بعض البيانات منها. بعد كتابة أوامر Select علينا كتابة أوامر عرض النتائج. وهي بسيطة قمنا بكتابتها سابقا في الدرسين السابع والثامن. سنكتب واحدة لـ SelectTechSQL وأخرى لـ SelectGeneralSQL .

<%@ Language=VBScript CodePage = “1256”%><html dir=rtl>

<!–#include file=”pageheader.txt” –> <!–#include file=”connection.txt” –>
<%
keyword=request.querystring(“keyword”)
‘ أوامر البحث في جدول الأخبار التقنية
SelectTechSQL=”select * from tech_news where subject like ‘%”&keyword&”%’ or body like ‘%”&keyword&”%’ “
set rsTech=ADO.execute(
SelectTechSQL)
‘ أوامر البحث في جدول الأخبار العامة
S
electGeneralSQL=”select * from general_news where subject like ‘%”&keyword&”%’ or body like ‘%”&keyword&”%’ ”
set rs
General=ADO.execute(SelectGeneralSQL)
%>

<p align=“center”><font face=“Simplified Arabic” size=“3”>نتائج البحث</font></p>

<%
‘ أوامر عرض نتائج الأخبار التقنية do while not rsTech.eof 
%>
<p><b><a href=”body.asp?field=tech_news&id=<%=rsTech(“id”)%>“><%response.write rsTech(“subject”)%></a></b></p>
<% 
rsTech.movenext
loop
‘ أوامر عرض نتائج الأخبار العامة
do while not rsGeneral.eof

%>
<p><b><a href=”body.asp?field=general_news&id=<%=rsGeneral(“id”)%>“><%response.write rsGeneral(“subject”)%></a></b></p>
<%
rsGeneral.movenext
loop
ADO.close
%>
<!–#include file=”pagefooter.txt” –>

بذلك نكون قد انتهينا من تصميم محرك البحث. وسنشرح في الدرس التالي إن شاء الله كيفية تصميم سجل الزوار.

  • يمكنك مشاهدة الصفحة التي قمنا بتصميمها في هذا الدرس من خلال هذا الرابط: بحث
  • لسحب الصفحات: الدرس الثاني عشر

إعداد: خالد الحر 

الكاتب ayman

ayman

مواضيع متعلقة

التعليقات مغلقة