السلام عليكم ورحمة الله وبركاته
انا كثير شاهدت مشاكل تواجه الاعضاء في البحث او كيفية برمجته بان يكون دقيق قليلا
نبدا ببسم الله :
في الاول نحتاج نموذج بسيط للتطبيق عليه بعدين نستخدم في الاخير css ساشرحه بعدين
النموذج :
كود PHP:
<?php
echo("
<div align='center'>
<H1>SEARCH ENGINE<H1>
<form action='".$_SERVER['PHP_SELF']."' method='get'>
<input type='text' name='search' />
<input type='submit' value='search' />
<input type='hidden' name='do' value='query' />
</form>
</div>
");
?>
نلاحظ ان الـ action موجه الى نفس الصفحة (PHP_SELF)
الشكل :
قبل css وبالاخير نجمله
الان عند كتابة العبارة المراد البحث عنها لن يبحث لاننا نحتاج الى عمل قاعدة بيانات mysql
ليبحث في جدول معين عن العبارات
ماشي حننشا قاعدة بيانات باسم مثلا test
كما هو موضح في الصورة
ماشي خلصنا لان ننشئ جدول باسم users يعني العضويات
يعني حنعمله يبحث عن الاعضاء مثلا و 3 حقول
كما في صورة
بعد ماتنشا الجدول يطلعلك ثلاث خانات
الاول الـ id قيمة رقمية int و auto incrument وهو للرقم يضيف الرقم تلقائي
والثاني username قيمة نصية 255 حرف للاسم
والثالث userpass قيمة نصية 255 حرف للباسورد
بعد ماتنشئ الحقول بيطلعلك الحقول المنشئة
و امر sql
وهو
كود PHP:
CREATE TABLE `users` ( `user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`userpass` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM ;
وتضعه في ملف النموذج بين /* */ لتعطيله
هكذا يصبح الكود بعد التحديث البسيط جدا
كود PHP:
<?php
/*
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`userpass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
*/
echo("
<div align='center'>
<H1>SEARCH ENGINE<H1>
<form action='".$_SERVER['PHP_SELF']."' method='get'>
<input type='text' name='search' />
<input type='submit' value='search' />
<input type='hidden' name='do' value='query' />
</form>
</div>
");
?>
نلاحظ ان كود الحقول معطل
لازم
وانا حطيته لتسهيل عليك وضع القيم (الـ row)
ماشي منكون خلصنا من انشاء قاعدة البيانات والجدول والحقول
الان ناتي للاتصال بقاعدة البيانات
الكود :
كود PHP:
$con = mysql_connect('localhost','root','root') or die("Not Connect");
$sel = mysql_select_db("test",$con) or die ("Not Select");
طبعا تستبدل البيانات الى معلومات تناسب موقعك
تحط كود الاتصال فوق النموذج ليصبح هكذا
كود PHP:
<?php
/*
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`userpass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
*/
$con = mysql_connect('localhost','root','root') or die("Not Connect");
$sel = mysql_select_db("test",$con) or die ("Not Select");
echo("
<div align='center'>
<H1>SEARCH ENGINE<H1>
<form action='".$_SERVER['PHP_SELF']."' method='get'>
<input type='text' name='search' />
<input type='submit' value='search' />
<input type='hidden' name='do' value='query' />
</form>
</div>
");
?>
الان نضع قيمة get ونطه بمتغير اسمه search والقيمة اسمها search
الكود للتوضيح :
كود PHP:
$search = $_GET['search'];
للحماية تصبح هكذا
كود PHP:
$search = mysql_real_escape_string(trim($_GET['search']));
اصبح الكود هكذا
كود PHP:
<?php
/*
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`userpass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
*/
$con = mysql_connect('localhost','root','root') or die("Not Connect");
$sel = mysql_select_db("test",$con) or die ("Not Select");
$search = mysql_real_escape_string(trim($_GET['search']));
echo("
<div align='center'>
<H1>SEARCH ENGINE<H1>
<form action='".$_SERVER['PHP_SELF']."' method='get'>
<input type='text' name='search' />
<input type='submit' value='search' />
<input type='hidden' name='do' value='query' />
</form>
</div>
");
?>
الان اخر شي نضع الشروط
الاول : اذا ضغط المستخدم الزر search
هذا الشرط الاساسي يعني نضع في داخله الشروط الباقية
كود PHP:
if(isset($_GET['do']) and $_GET['do'] == 'query')
{
}
الان بعد مايضغط المستخدم search يجب ان نتححق من اشياء وهي
طبعا كلها شروط بسيطة
1 - اذا كان الحقل خالي
2 - اذا كانت الحروف اقل من 3 احرف او اكبر من 30 حرف
واذا ماتحققت الشروط
فاذا نبدا بالاستعلام ونشوف اذا الحقل صفر يعني مافي نتيجة
واذا ماتحقق الشرط ايضا نعمل حلقة while ونخرج المعلومات من داخل الحقول عن طريق دالة mysql_fetch_assoc
واذا حققنا هذه الاشياء
يصبح الكود هكذ ا:
كود PHP:
if(isset($_GET['do']) and $_GET['do'] == 'query')
{
if(empty($search))
{
echo("يرجى ملئ حقل البحث");
}
elseif(strlen($search) <= 3 and strlen($search) >= 30)
{
echo("العبارة التي ادخلتها حروفها تتجاوز الثلاثي احرف او اصغر من ثلاثة احرف");
} else
{
$users = mysql_query("select * from users where username LIKE '%$search%' ")
or die(mysql_error());
$nums = mysql_num_rows($users);
if($nums < 1)
{
echo("لم يتم العثور على اي نتيجة ");
}
else
{
echo("
نتائج البحث <br>
نتيجة ".$nums." تم العثور على <br/>
");
while($rows = mysql_fetch_assoc($users))
{
echo("
".$rows['user_id']." - username : ".$rows['username']." userpass : ".$rows['userpass']." <br>
");
}
}
}
}
وعند كتابة اسم غير موجود
يقول لم يتم العثور على اي نتيجة
وينتهي الكود ويصبح هكذا :
كود PHP:
<?php
/*
CREATE TABLE `users` (
`user_id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`username` VARCHAR( 255 ) NOT NULL ,
`userpass` VARCHAR( 255 ) NOT NULL
) ENGINE = MYISAM ;
*/
$con = mysql_connect('localhost','root','root') or die("Not Connect");
$sel = mysql_select_db("test",$con) or die ("Not Select");
$search = mysql_real_escape_string(trim($_GET['search']));
echo("
<div align='center'>
<H1>SEARCH ENGINE<H1>
<form action='".$_SERVER['PHP_SELF']."' method='get'>
<input type='text' name='search' />
<input type='submit' value='search' />
<input type='hidden' name='do' value='query' />
</form>
</div>
");
echo("<center>");
if(isset($_GET['do']) and $_GET['do'] == 'query')
{
if(empty($search))
{
echo("يرجى ملئ حقل البحث");
}
elseif(strlen($search) <= 3 and strlen($search) >= 30)
{
echo("العبارة التي ادخلتها حروفها تتجاوز الثلاثي احرف او اصغر من ثلاثة احرف");
} else
{
$users = mysql_query("select * from users where username LIKE '%$search%' ")
or die(mysql_error());
$nums = mysql_num_rows($users);
if($nums < 1)
{
echo("لم يتم العثور على اي نتيجة ");
}
else
{
echo("
نتائج البحث <br>
نتيجة ".$nums." تم العثور على <br/>
");
while($rows = mysql_fetch_assoc($users))
{
echo("
".$rows['user_id']." - username : ".$rows['username']." userpass : ".$rows['userpass']." <br>
");
}
}
}
}
echo("</center>");
?>
وعند كتابة اسم موجود يظهر النتائج كما في الصورة
ومبروك عليك محرك البحث
بالنسبة في الـ css في المشاكرة الثانية ان شاء الله :app:
والسلام عليكم
ارجو ان يعجبكم الدرس