الدرس الثاني عشر: تصميم صفحة البحث وعرض النتائج search_result.asp
افتح صفحة search.asp وقم بحفظها باسم search_result.asp. ستجد الـ Code كالتالي:
كود PHP:
<%@ 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 للقيام بهذه المهمة. لذا قم بمسح هذه الأسطر:
كود PHP:
<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>
واكتب بدلا منها:
كود PHP:
<%
keyword=request.querystring("keyword")
%>
والآن سنقوم بالبحث عن الكلمة في الجدول بعد استقبالها من صفحة البحث باستخدام أمر
Select:
كود PHP:
<%@ 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 تغني عن علامة (
= ). ويمكن أن تعبر عن مساواة كلية أو جزئية. ولتوضيح ذلك، لنفترض المثال التالي: إن قمنا باستخدام المساواة الكلية وبحثنا عن "خالد" فستظهر لنا النتائج التي تحتوي على كلمة "خالد". أما إن استخدما المساواة الجزئية فستظهر لنا النتائج التي تحتوي على: خالد، خالدا، الخالد، الخالدون، خالدون .. الخ
- <LI dir=rtl>للتعبير عن المساواة الكلية نكتب Like وبعدها اسم المتغير .. في مثالنا هو Keyword فنكتبه بالصيغة التالية:
- "&keyword&"
- للتعبير عن المساواة الجزئية نكتب Like وبعدها اسم المتغير بين علامات النسبة المؤوية .. في مثالنا هو Keyword فنكتبه بالصيغة التالية: '%"&keyword&"%'
والمقصود في عبارة
Select في هذا المثال هو: اختر أي شي من جدول
Tech عندما تكون القيمة في العمود
Subject مساوية أو مشابهة للقيمة في المتغير
Keyword . للتوضيح لنفترض المثال التالي:
لديك في القاعدة العناوين الثلاثة التالية:
- <LI dir=rtl>لغة ASP متطورة وسهلة.
<LI dir=rtl>لغة PHP سهلة ومتطورة. - البرمجة بـ C++ ممتعة.
عند إدخال كلمة "لغة" للبحث عنها، سيظهر لنا أول عنوانين كنتائج للبحث. حيث أن أمرنا يبحث في العنوان.
إن كنا نود تغيير حقل البحث، فبإمكاننا تغيير اسم العمود الذي يتم البحث فيه.. كأن نكتب
"select * from tech where body like '%"&keyword&"%' " في حال رغبتنا بالبحث في نص الموضوع وليس عنوانه. أما إن أردنا البحث في كافة الحقول، فعلينا كتابتها جميعا والربط بينها باستخدام أحد دوال الربط المنطقيةوهي
Or . لنعد كتابة
SelectTechSQL مرة باسخدام
Or :
SelectTechSQL="select * from tech_news where subject like '%"&keyword&"%' or body like '%"&keyword&"%' "
في هذه الحالة سيتم عرض النتائج الذي توجد بها كلمة البحث في:- <LI dir=rtl>العنوان.
<LI dir=rtl>المحتوى. - العنوان والمحتوى.
الأمر السابق سيبحث عن الكلمة في جدول Tech_news وللبحث في كلا الجدولين ( Tech_news و General_news ) بإمكاننا كتابة أمر لكل جدول، كالتالي:
كود PHP:
<%@ 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)
' أوامر البحث في جدول الأخبار العامة
SelectGeneralSQL="select * from tech_news where subject like '%"&keyword&"%' or body like '%"&keyword&"%' "
set rsGeneral=ADO.execute(SelectGeneralSQL)
%>
<!--#include file="pagefooter.txt" -->
لا تنسى أن تضع ملف الربط بقاعدة البيانات، وذلك لأننا سنحتاج لقراءة بعض البيانات منها. بعد كتابة أوامر Select علينا كتابة أوامر عرض النتائج. وهي بسيطة قمنا بكتابتها سابقا في الدرسين السابع والثامن. سنكتب واحدة لـ SelectTechSQL وأخرى لـ SelectGeneralSQL .
كود PHP:
<%@ 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)
' أوامر البحث في جدول الأخبار العامة
SelectGeneralSQL="select * from general_news where subject like '%"&keyword&"%' or body like '%"&keyword&"%' "
set rsGeneral=ADO.execute(SelectGeneralSQL)
%>
[left]<p align="center"><font face="Simplified Arabic" size="3">نتائج البحث</font></p>[/left]
<%
' أوامر عرض نتائج الأخبار التقنية
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" -->
بذلك نكون قد انتهينا من تصميم محرك البحث. وسنشرح في الدرس التالي إن شاء الله كيفية تصميم سجل الزوار.
إعداد: خالد الحر __________________

يقول الامام مالك رحمه الله:
إنما هؤلاء أقوام أرادوا القدح في
النبي صلى الله عليه وسلم فلم يمكنهم ذلك، فقدحوا في أصحابه حتى يقال رجل سوء ولو كان
رجلاً صالحاً لكان أصحابه صالحين.
وقال أبو الوفا بن عقيل رحمه الله:
انظر كيف اختار
لمرضه بيت البنت، واختار
لموضعه من الصلاة الأب، فما هذه الغفلة المستحوذة على قلوب الرافضة عن هذا الفضل والمنزلة التي لا تكاد تخفى عن البهيم فضلا عن الناطق.
وحيد القرن، كسرنا قرنه، ودككنا حصنه، وهدمنا برجه، فخرج يتبختر بعتاده مزهواً بعدده ففللنا حدّه، وقتلنا جنده، وفرقنا صحبه، والفضل لله وحدهولئن أبيد أبناء دولة الإسلام عن بكرة أبيهم خيرٌ لهم من أن يحكمهم رافضيٌّ خبيث أو أن تستظلّ بغداد برايات الصفويين يوما واحداً.
