النتائج 1 إلى 10 من 10

الموضوع: شرح برمجة محرك بحث داخلي بسيط للمتقدمين فقط

  1. #1
    عضو نشيط
    تاريخ التسجيل
    Apr 2011
    المشاركات
    51

    شرح برمجة محرك بحث داخلي بسيط للمتقدمين فقط



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

    انا كثير شاهدت مشاكل تواجه الاعضاء في البحث او كيفية برمجته بان يكون دقيق قليلا

    نبدا ببسم الله :

    في الاول نحتاج نموذج بسيط للتطبيق عليه بعدين نستخدم في الاخير 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_idINT NOT  NULL  AUTO_INCREMENT  PRIMARY  KEY ,
     `
    usernameVARCHAR255  )  NOT  NULL ,
     `
    userpassVARCHAR255  )  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) <= 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) <= 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:

    والسلام عليكم

    ارجو ان يعجبكم الدرس





    الصور المرفقة الصور المرفقة    
    التعديل الأخير تم بواسطة حسام الذهبي ; 01-09-2011 الساعة 08:39 PM
    __________________
    الحمد لله اتقنت لغة PHP


  2. #2
    عضو سوبر نشيط
    تاريخ التسجيل
    Apr 2010
    المشاركات
    709


    أخي الكريم شكراً لك على هذا الدرس ... هل لديك فكرة على هذه المشكلة
    http://www.swalif.net/softs/swalif45/softs304438






  3. #3
    عضو نشيط
    تاريخ التسجيل
    Apr 2011
    المشاركات
    51


    أخي الكريم شكراً لك على هذا الدرس ... هل لديك فكرة على هذه المشكلة
    http://www.swalif.net/softs/swalif45/softs304438
    شكرا على المرور

    بالنسبة للمشكلة يجب ان تضع ترميز utf-8





    __________________
    الحمد لله اتقنت لغة PHP

  4. #4
    عضو فعال
    تاريخ التسجيل
    Apr 2010
    المشاركات
    1,095


    اعتقد ان لديك خطأ هنا

    كود PHP:
       elseif(strlen($search) <= and strlen($search) >= 30
    or وليس and

    صحح لي اذا كنت خاطئ





    التعديل الأخير تم بواسطة hussein.shy ; 02-09-2011 الساعة 08:26 PM
    __________________
    قال صلى الله عليه وسلم : كلمتان خفيفتان على اللسان ثقيلتان في الميزان (سبحان الله وبحمده ** سبحان الله العظيم)

  5. #5
    عضو نشيط
    تاريخ التسجيل
    Apr 2011
    المشاركات
    51


    اعتقد ان لديك خطأ هنا

    كود PHP:
       elseif(strlen($search) <= and strlen($search) >= 30
    or وليس and

    صحح لي اذا كنت خاطئ
    اسف اخوي انا اخطات في الطباعة اسف

    لا or صحيحة 100%

    شكرا





    __________________
    الحمد لله اتقنت لغة PHP

  6. #6
    عضو فعال
    تاريخ التسجيل
    Feb 2008
    المشاركات
    1,759


    جزاك الله كل خير اخوى حسام الذهبي
    مافى Like كنت سويتها لموضوعك << متأثر بالفيسبوك حبتين





    __________________
    FaceBook Application Developer
    تعلم برمجة سكريبت جلب المحتوى خطوة بخطوة
    مشروعى داخل معرض الاتصالات
    لمراسلتي إضغط هنا
    سبحان الله وبحمده سبحان الله العظيم

  7. #7
    عضو نشيط
    تاريخ التسجيل
    Apr 2011
    المشاركات
    51


    شكر على المرور





    __________________
    الحمد لله اتقنت لغة PHP

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    Oct 2003
    المشاركات
    641


    شكراً لك أخي حسام على هذ الشرح ممكن أن تفيدني هنا:

    http://www.swalif.net/softs/swalif45/softs304836






  9. #9
    عضو نشيط
    تاريخ التسجيل
    Apr 2011
    المشاركات
    51


    upupupupup





    __________________
    الحمد لله اتقنت لغة PHP

  10. #10
    عضو نشيط
    تاريخ التسجيل
    Apr 2011
    المشاركات
    51


    للرفع للافادة





    __________________
    الحمد لله اتقنت لغة PHP





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

أضف موقعك هنا| اخبار السيارات | حراج | شقق للايجار في الكويت | بيوت للبيع في الكويت | دليل الكويت العقاري | مقروء | شركة كشف تسربات المياه | شركة عزل اسطح بالرياض | عزل فوم بالرياض| عزل اسطح بالرياض | كشف تسربات المياة بالرياض | شركة عزل اسطح بالرياض