السبت، 9 مارس 2013

شرح عمل بحث فى قاعدة البيانات عبر PHP & MySQLi

بسم الله الرحمن الرحيم،
سنتعرف فى هذه التدوينة سريعًا على كيفية برمجة نظام بحث فى قاعدة البيانات، حيث أن كثير من المبرمجين لا يعرفون طريقة القيام بالبحث فى قاعدة البيانات سوى عن طريق مطابقة كلمة البحث لمحتوى العمود فى قاعدة البيانات، أما عبر درسنا هذا فسنتعرف على كيفية القيام بعمل بحث فى قاعدة البيانات بشكل متقدم نوعًا ما بإذن الله، فكل الموضوع يتلخص فى كلمة واحدة فى لغة SQL للقيام بتلك العملية !! وسنعرف كيف الآن.
فنفترض ان لدينا صفحة بإسم search.php وهي الصفحة المسئولة عن عرض نتائج البحث، وفى صفحتنا الرئيسية نموذج للبحث شيفرته كالتالى:
<form method="get"
id="searchform" action="search.php">
<div>
<input type="text"
value="" name="s" id="s" /> <input type="submit"
id="searchsubmit" value="Search" class="submit" /> </div>
</form>
الآن سننتقل إلى ملف search.php ونقوم بأخذ النص الذي قام المستخدم بالبحث عنه كما بالسطر التالي:
$s = $_GET['s'];
والآن نقوم بالتحقق من إذا كان نص البحث لا يحتوى على شيء لإظهار رسالة خطأ:
if($s == ""){
echo "You Didn't enter a text to search for !";
}
والآن نقوم بإضافة else حيث أنه إذا كان نص البحث يحتوى على شيء فسيتم عملية البحث، وستكون عملية البحث عبر إدخال أمر SQL وهو مسئول عن البحث كما في الشيفرة التالية:
$search = $db->query("SELECT * FROM `blogs` WHERE `title` LIKE '%$s%'");
حيث أن blogs اسم الجدول المراد البحث فيه، و title هو اسم العمود المراد البحث فيه، و $s هو اسم المتغير الموجود به نص البحث.
الآن سنقوم بإخراج عدد الصفوف التى تم استخراجها ومقارنتها ما إذا كانت تساوى صفر أو لأ، فإذا كانت تساوى صفر فسيتم عرض رسالة عدم وجود نتائج بحث، وإن كانت لا تساوى صفر فسيتم عرض نتائج البحث ليصبح شيفرة الصفحة كاملة كالتالي:
$s = $_GET['s'];
if($s == ""){
echo "You Didn't enter a text to search for !";
}else{
$search = $db->query("SELECT * FROM `blogs` WHERE `title` LIKE '%$s%'");
$num = $search->num_rows;
if($num != 0){
$row = $search->fetch_object();
?>
<li><a href="blog.php?id=<?php echo $row->id; ?>"><?php
echo $row->title; ?></a></li> <?php
}else{
echo "There is no results for this seach !!!<br>Try Another Search Words
"; }
}
بالتوفيق :)

المزيد من المواضيع:

1 التعليقات: