شبكة تيمورنت
خش ومتخفش مش هنموتك لو مسجلتش
شكرا لزيارتكم
ادارة المنتدى
شبكة تيمور نت

شبكة تيمورنت

 
الرئيسيةالرئيسية  البوابةالبوابة  المنشوراتالمنشورات  التسجيلالتسجيل  دخولدخول  

شاطر | 
 

 حصريـــا : دورة إحتراف برمجة المواقع التفاعلية ج-ب البحث المتقدم

اذهب الى الأسفل 
كاتب الموضوعرسالة
ابو الفتوح

avatar

الدوله : دولتى
ذكر الحمل الأبراج الصينية الثعبان
عدد المساهمات : 38
نقاط : 4564
تاريخ الميلاد : 16/04/1977
تاريخ التسجيل : 02/05/2012
العمر : 41
العمل/الترفيه : ip

مُساهمةموضوع: حصريـــا : دورة إحتراف برمجة المواقع التفاعلية ج-ب البحث المتقدم   الجمعة مايو 11, 2012 5:57 pm

بإسم الله الرحمان الرحيم
زَعَمَ
الَّذِينَ كَفَرُوا أَن لَّن يُبْعَثُوا قُلْ بَلَى وَرَبِّي لَتُبْعَثُنَّ
ثُمَّ لَتُنَبَّؤُنَّ بِمَا عَمِلْتُمْ وَذَلِكَ عَلَى اللَّهِ يَسِيرٌ



سورة التغبن – الآية 7


السلام عليكم و رحمة الله و بركاته


و بدون الإطالة في المقدمات ننتقل إلى الجزئ التاني من دورتنا .





عنوان هدا الدرس : البحث المتقدم في قاعدة البيانات




يمكن إجراء عملية البحت في قاعدة البيانات أو غيرها على تلاثة طرق أساسية :

1. البحت عن الجملة بالضبط
2. البحت عن أي كلمة
3. البحث عن جميع الكلمات



يمكن كدلك تصنيف البحث حسب نطاقه
متلا:
البحث في العناوين فقط – البحث في مواضيع تتضمن ملف مرفق – مواضيع تم طرحها مند كدا يوم – البحث في قسم أو منتدى معين


في موضوعنا هدا سنقتصر على التالي :
1. طرق البحث الثلاثة الآنفة الدكر
2. البحث في العناوين فقط أو البحت في كامل الموضوع




و حتى يكون الدرس واضحا لابد من تمريره على أمثلة عملية
و قبل الشروع في البرمجة ينبغي كدلك أن تكون لدينا قاعدة بيانات للبحت فيها
لننشئ قاعدة البيانات أولا :

سنحتاج إلى جدول واحد فقط
و بما أن المشروع المزمع إنجازه تجريبي فلن نحتاج أكتر من ثلاث حقول / أعمدة

Id
رقم أو معرف الموضوع

Title
العنوان

Subject
الموضوع

إليك هده الصور لمساعدتك على تكوين الجدول

















لابد أيضا من إدخال محتويات لقاعدة البيانات هده من أجل إختبار البحت إد لا يمكن البحت في مكان فارغ










ضع أي عنوان و أي موضوع فكل ما تقوم به الآن لإختبار البرمجة عليه لا أكتر

ملاحضة : لست في حاجة إلى تعيين قيمة الحقل id لكن ينبغي أن يكون auto_increment







__________________________________





لتحميل بنية القاعدة مع المحتويات الإفتراضية للبحث
http://up.x50.cc/?_&C7qu


بعد تجهيز القاعدة نمر إلى تصميم نمودج البحث
و لن نحتاج لأكتر من لغة html
لنعمل على أن يكون النمودج خاليا من الجافا و أي تعقيد و لنركز فقط على خيارات البحت المتقدم

و كما دكرت انفا : البحث على محورين اساسيين

طريقة البحث
مكان البحث

النمودج :





الحقل الأول لعبارة البحث

التاني لمكان أو نطاق البحث

الثالث لصنف البحث

و من هنا يمكنك الحصول على كود النمودج كاملا

http://up.x50.cc/?_&CgK6

من المهم جدا تفحص الكود قبل الشروع في البرمجة و دلك لتكون على معرفة بأسماء الحقول و الخيارات




__________________________


لنأخد نفسا عميقا قبل الشروع في البرمجة




الإتصال بقاعدة البيانات أولا من خلال الدالتين




كود PHP:




mysql_connect('', '', '')or die("cannot connect");
mysql_select_db('')or die("cannot select DB");







المتغير الأول و الآتي من عبارة البحث



كود PHP:




$_POST['search_word']






لابد من ترشيحه عن طريق الدوال الأمنية

htmlspecialchars _ منع البحث في وسوم html
trim إزالة الفراغات في أول النص و اخره

كما سنحتاج لحدف الفراغات المتكررة لنحصل على جملة البحث بالشكل التالي




كود PHP:




$search_phrase=preg_replace('/[\s]{2,}/', ' ', htmlspecialchars(trim($_POST['search_word'])));







هناك دوال كثيرة قد تحتاجها و تختلف حسب برنامجك ( كتحديد عدد الحروف الأدنى لكلمة البحث _ عدد الكلمات القصوى للبحث )


المتغير $search_phrase هو جملة البحث
لكن سنحتاجه فقط إدا كان نوع البحث "عن الجملة بالضبط "

للحصول على مصفوفة بجميع كلمات البحث نستخدم دالة explode و طبعا هي دالة بسيطة و معروفة




كود PHP:




$search_words = explode(' ', $search_phrase);








تذكر :
$search_phrase : جملة البحث
$search_words : كلمات البحث



قبل المواصلة دعونا نلقي نظرة خاطفة على إستعلام البحث






كود PHP:




$do=mysql_query("select `id`,`title`,`subject` from `table_searche` where (`title` LIKE '%$search_phrase%') OR (`subject` LIKE '%$search_phrase%')");






هده صيغة إفتراضية فقط و ستختلف حسب نوع البحث و نطاقه
لدا دعونا نركز على الجزئ الأخير من الإستعلام مباشرة بعدة "where"






A1 : منطقة البحث في العنوان

A2 : منطقة البحث في الموضوع ( لا يتم تظمين هدا الجزء من الإستعلام عند إختيار "البحث في العناوين فقط" )

B1 : البحث عن الجملة ( إدا كان البحت عن جميع الكلمات تتكرر العبارة لكل كلمة و يفصل بين العبارات بــ AND )


B2 : نفس قصة b1 بخصوص البحت في الموضوع




هدا هو الإستعلام بشيئ من التفصيل
و على اساس هدا التفصيل سنكمل البرمجة




سيكون لدينا شرط ثلاتي :


1 الجملة بالضبط
2 جميع الكلمات
3 اي كلمة






كود PHP:




if($_POST['search_type']=='phrase'){

//__-1-__

}elseif($_POST['search_type']=='all_word'){

//__-2-__

}elseif($_POST['search_type']=='any_word'){

//__-3-__

}








لا تسألني عن المتغيرات الموجود في الكود

إرجع إلى نمودج البحث إدا لم تعرف من اين أتيت بها

_____________________


داخل هده الشروط سنبرمج الجزئ الاخير من الإستعلام الدي رأيناه موضحا في الصورة

بما أن الشروط الثلاثة لا تتطرق لمكان البحث يجب أن نتعامل مع حقل البحث على اساس أنه متغير

الآن ندخل منطقة الشرط الأول

و هي للجملة




كود PHP:




$search_f="`__-where-__` LIKE '%$search_phrase%'";







بالنسبة للشرط التاني

ستتكرر عبارة البحث حسب عدد الكلمات تم يجمع بينها بــ and

لهدا الغرض نستخدم الدالتين foreach و implode


الدالة foreach ستوزع كلمات البحث على الإستعلام




كود PHP:




foreach($search_words as $word){
$search_f[]="`__-where-__` LIKE '%$word%'";
}






الدالة implode ستصل أجزاء الإستعلام بعبارة and





كود PHP:




$search_f = implode(" and ", $search_f);







الشرط الثالت لا يختلف عن التاني إلا في عبارة and الممررة للدالة implode حيت سيحل محلها or





كود PHP:




foreach($search_words as $word){
$search_f[]="`__-where-__` LIKE '%$word%'";
}
$search_f = implode(" or ", $search_f);









_________________________________


مدا بخصوص مكان البحث؟؟؟

سهلة جدا

بالنسبة للبحث في العنوان فهده مسألة لا بد منها إد لا يمكن إغفال هدا الحقل من البحث

لدا نستبدل المتغير __-where-__ بــ title





كود PHP:




$search_sql=str_replace('__-where-__','title',"($search_f)");







أما الموضوع فسيشمله البحث في حال تم التأشير على خيار : كامل الموضوع

لدا سيوضع داخل حلقة الشرط





كود PHP:




if($_POST['where'] == 'full'){


$search_sql.=str_replace('__-where-__','subject'," or ($search_f)");



}








و سنخرج في النهاية بإستعلام واحد يمرر إليه المتغير الدي مر بالشروط السابقة






كود PHP:




$do=mysql_query("select `id`,`title`,`subject` from `table_searche` where $search_sql");









هدا هو الجزئ الأهم

بالنسبة لطريقة عرض النتائج فسأتركها لكم قبل أن أطرح السكربت للتحميل

أعتدر عن القصور في الشرح و على الـتاخير الخارج عن إرادتي و في أمان الله
الرجوع الى أعلى الصفحة اذهب الى الأسفل
 
حصريـــا : دورة إحتراف برمجة المواقع التفاعلية ج-ب البحث المتقدم
الرجوع الى أعلى الصفحة 
صفحة 1 من اصل 1

صلاحيات هذا المنتدى:لاتستطيع الرد على المواضيع في هذا المنتدى
شبكة تيمورنت :: خاص لاصحاب المواقع :: تطوير المواقع والمنتديات-
انتقل الى: