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

الموضوع: [استفسار] حول محرك بحث على قاعدة البيانات

  1. #1
    عضو سوبر نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    700

    [استفسار] حول محرك بحث على قاعدة البيانات



    السلام عليكم

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

    بان يبحث عن الدولة او الجنس (ذكر ، انثى )

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

    وهذا ملف مرفوق

    وفيه ايظا تعدد الصفحات لكن فيه مشاكل لو اذهب للصفحة الاخرى يوقف

    والـ option للدول هو

    كود PHP:
    <select size="1" name="country" dir="rtl">
        <
    option selected value="all">الكـل</option>
        <
    option value="جنسية اخرى">جنسية اخرى</option>
        <
    option value="الكويت">الكويت</option>
        <
    option value="الامارات العربيه المتحدة">الامارات العربيه المتحدة</option>
        <
    option value="المملكة العربيه السعوديه">المملكة العربيه السعوديه</option>
        <
    option value="مملكة البحرين">مملكة البحرين</option>
        <
    option value="سوريا">سوريا</option>
        <
    option value="مصر">مصر</option>
        <
    option value="المغرب">المغرب</option>
        <
    option value="تونس">تونس</option>
        <
    option value="الجزائر">الجزائر</option>
        <
    option value="الصومال">الصومال</option>
        <
    option value="جيبوتي">جيبوتي</option>
        <
    option value="السودان">السودان</option>
        <
    option value="قطر">قطر</option>
        <
    option value="ليبيا">ليبيا</option>
        <
    option value="سلطنة عمان">سلطنة عمان</option>
        <
    option value="العراق">العراق</option>
        <
    option value="ايران">ايران</option>
        <
    option value="لبنان">لبنان</option>
        <
    option value="فلسطين">فلسطين</option>
        <
    option value="الاردن">الاردن</option>

        </
    select
    انه يبحث على نفس اسم الدولة السعوديه = السعوديه وليس السعوديه = 1

    شاكر لكم





    الملفات المرفقة الملفات المرفقة


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


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

    مبدأيا ، لا ادري هل هناك مغزى معين انه يبحث عن السعودية = السعودية وليس السعودية = 1 ؟
    علما بانه لو بحث بنظام السعودية = 1 سيكون الاستعلام اسرع بكثير واقل في الاستهلاك !


    عملية البحث المركبة مثل هذه تعتمد على اضافة شروط معينة او عدم اضافتها إلى الاستعلام الرئيسي

    بمعنى

    للاستعلام عن عن الجنس ( انثى ) في السعودية يكون كالتالي :
    كود PHP:
    mysql_query("select * from users where country = 'السعودية' AND sx = 'female'"); 
    للاستعلام عن الجنس ( ذكر ) فقط بدون النظر إلى دولته :
    كود PHP:
    mysql_query("select * from users where sx = 'male'"); 
    في الكويري السابق تلاحظ انه لم يتم تحديد اي دولة ولم يتم ذكرها في الاستعلام ، وبهذا لن تكون للدولة اي دور في الموضوع .. ولكن الحكم هو انه يكون male

    آخر مثال
    كود PHP:
    mysql_query("select * from users"); 
    ويقوم بجلب جميع الاعضاء ( ذكر او انثى ) من جميع الدول



    لذلك ما تريده هو
    كود PHP:
    $inject "where 1=1 ";
    if (
    $_POST['country'] != "all"){
    $inject .= "AND country = '$_POST[country]' ";
    }
    if (
    $_POST['sx'] != "all"){
    $inject .= "AND sx = '$_POST[sx]' ";
    }

    mysql_query("select * from users $inject "); 

    عبارتين IF
    لو لم يتم تحديد الاولى في الفورم ، لن يتم اضافة اي شيء وسيتم اعتبارها جميع الدول
    لو لم يتم تحديد الثانية في الفورم ، لن يتم اضافة اي شيء وسيتم اعتبارها ذكر او انثى


    عبارة where 1=1 اضيفت فقط عشان ماتحصلش اي مشاكل Syntax وهي لا تؤثر باي شكل

    تحياتي





    __________________
    SWF Thumbnail - tweet me

  3. #3
    عضو سوبر نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    700


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

    لكن في اعتقد مشكله الان لو قمنا بتحديد دوله يقوم بالبحث لكن في كل من
    --------
    if ($_POST['country'] != "all"){
    $inject .= "AND country = '$_POST[country]' ";
    }
    if ($_POST['sx'] != "all"){
    $inject .= "AND sx = '$_POST[sx]' ";
    }
    -------------

    انه فيهم AND في البحث
    select * users where and ما يعمل
    لازم يكون where countery بعدين يكون and صح !

    فا مادري شلون






  4. #4
    عضو سوبر نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    700


    حاولت احل المشكله بنفسي وبطريقه اخرى

    لكن في مشكله

    شوف الطلب هذا من القاعده البيانات
    كود PHP:
    $country "الكويت";
    $resulte mysql_query("SELECT * FROM users where country='$country' and sex='boy' order by id desc "); 
    لا يقوم بالحث هل السبب اللغه العربيه لا يفهما ؟ او في طرق اخرى


    وفي شي اخرى لو حولت الدول الى ارقام مثال

    الكويت = 1
    السعوديه = 2

    طيب اعتقد راح يسهل امور كثيره علينا

    لكن كيف ممكن اخي في option الاختيار الدول لو دخل لوحة التحكم انه يختار الدوله التي مسجل بها تظهر

    هل اعمل للكل
    كود PHP:
    if ($country 1) {
    $selected1 seclected
    }
    if (
    $country 2) {
    $selected2 seclected

    وفي الخيارات option

    يكون في

    كود PHP:
    <option value="1" <? echo $selected1?> style="font-size: 9pt; font-family: Tahoma">
                    الكويت</option>
                    <option value="2" <? echo $selected2?> style="font-size: 9pt; font-family: Tahoma">
                    السعوديه</option>
    بالطريقه هذي او يوجد طريقه افضل منها ؟






  5. #5
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    انه فيهم AND في البحث
    select * users where and ما يعمل
    لازم يكون where countery بعدين يكون and صح !

    فا مادري شلون
    لهذا قمنا في ردي السابق باضافة عبارة where 1 = 1 في البداية حتى لا يظهر خطأ



    بالنسبة لتحويل الدول إلى ارقام

    من المفترض ان يكون لديك في الداتا بيز على الاقل 2 جداول

    users :
    ويجب ان يحتوي على حقل ( country ) و حقل ( sex )

    countries :
    id - country

    بحيث تكون الدول في جدول countires
    مصر - 1
    السعودية - 2
    قطر - 3
    الامارات - 4

    وهكذا

    ويتم ادارج الرقم الخاص بالدولة في حقل country في سجل العضو في جدول users


    ثم
    كود PHP:
    <select name="cont">
    <
    option value="0" selected>All</option>
    <
    option value="1">مصر</option>
    <
    option value="2">السعودية</option>
    .....
    </
    select

    وعند الضغط على submit يقوم بتطبيق الكود في ردي السابق ، تأكد ان كل شيء لديك صحيح ، لأن الكود في ردي السابق سليم 100% ويعمل بنجاح ..


    تحياتي





    __________________
    SWF Thumbnail - tweet me

  6. #6
    عضو سوبر نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    700


    حليت المشكله لكن بتعديلات كثيره

    وهذا الناتج

    كود PHP:
    <?
    /////// limit a page of friends
    $limit 20
    if (empty(
    $safha)) {
        
    $safha=0;
    }
    //////////////////

    if ($country != "all" && $sex == "all") {
    $result mysql_query("SELECT * FROM users where country='$country' order by id desc Limit $safha,$limit");
    $cs "where country='$country'";
    }
    elseif (
    $country == "all" && $sex != all) {
    $result mysql_query("SELECT * FROM users where sex='$sex' order by id desc Limit $safha,$limit");
    $cs "where sex='$sex'";
    }
    elseif (
    $country == "all" && $sex == "all") {
    $result mysql_query("SELECT * FROM users order by id desc Limit $safha,$limit");

    }
    else {
    $result mysql_query("SELECT * FROM users where country='$country' and sex='$sex' order by id desc Limit $safha,$limit");
    }



    $count=mysql_num_rows($result); 

    echo 
    "<table border=0 width=390 align=center valign=top  class=table><tr>";
    $cols=1;
    while(
    $row mysql_fetch_array($result))
      {
      
    $userid $row['id'];
      
    $username $row['username'];
      
    $picture $row['picture'];
     if (
    $picture == none) {
      
    $picture "images/none.jpg";
      }
      else {
       
    $picture "upload/$picture";
      }
      
      echo 
    "<td width=15% height=10 valign=top style=\"font-family:tahoma;font-size:11px;border-style:solid;border-width:0;border-color:$border1\" >
              <p align=\"right\" dir=\"rtl\" > "
    ;
      include(
    "template/search.html");
      echo 
    "</td >";
        if(
    $cols%5==0){echo "</tr>";}
        
    $cols++;
      }
    echo
    "</table>";

    //// page numbers start 2 ////
    $waleedk mysql_query("SELECT * FROM users $cs");
    $wk=mysql_num_rows($waleedk);
    $first_record $safha 1;
    $pages=intval($wk/$limit);
    if (
    $wk%$limit) {
        
    $pages++;
    }

    if (
    $safha != 0) { 
    $prevsafha=$safha-$limit;
    echo 
    "<a href=?page=search&country=$country&sex=$sex&safha=$prevsafha><font face=\"tahoma\" ><b><font face='Tahoma' color='#FF6600'>السابق</font></b></a> &nbsp; \n";
    }

    if (
    $pages != ) {
    for (
    $o=1;$o<=$pages;$o++) {
    $newsafha=$limit*($o-1);
    if ( (((
    $safha)/$limit)==($o-1)) ) {
    echo 
    "<font face=\"tahoma\" dir=rtl style='font-family:tahoma;font-size:11;color:bleu'><b><font face='Tahoma' color='#FF6600'>$o</font></b> </font>&nbsp; \n";
            } 
    else {
    echo 
    "<a href=?page=search&country=$country&sex=$sex&safha=$newsafha><font face=\"tahoma\" dir=rtl style='font-family:tahoma;font-size:11;color:bleu'><b><font face='Tahoma' color='#FF6600'>[$o]</font></b></font></a> &nbsp; \n";
            }
        }
    }

    if (!(((
    $safha)/$limit)+1==$pages) && $pages!= 1) {
    $newsafha=$safha+$limit;
    if (
    $newsafha $wk) {
    }
    else {
        echo 
    "<a href=?page=search&country=$country&sex=$sex&safha=$newsafha><b><font face='Tahoma' color='#FF6600'>التالي</font></b></a><p>\n";
        }
    }
     
    //// page numbers end 2 ////





    ?>







  7. #7
    عضو فعال
    تاريخ التسجيل
    Jul 2003
    المشاركات
    1,576


    جميل

    قم باستبدال هذا الجزء
    كود PHP:
    <?php

    if ($country != "all" && $sex == "all") { 
    $result mysql_query("SELECT * FROM users where country='$country' order by id desc Limit $safha,$limit"); 
    $cs "where country='$country'"

    elseif (
    $country == "all" && $sex != all) { 
    $result mysql_query("SELECT * FROM users where sex='$sex' order by id desc Limit $safha,$limit"); 
    $cs "where sex='$sex'"

    elseif (
    $country == "all" && $sex == "all") { 
    $result mysql_query("SELECT * FROM users order by id desc Limit $safha,$limit"); 


    else { 
    $result mysql_query("SELECT * FROM users where country='$country' and sex='$sex' order by id desc Limit $safha,$limit"); 
    }
    بهذا
    كود PHP:

    $cs 
    "where 1=1 ";
    if (
    $country != "all"){
        
    $cs .= "AND country = '$country' ";
    }
    if (
    $sex != "all"){
        
    $cs .= "AND sex = '$sex' ";
    }
    $result mysql_query("select * from users $cs order by id desc limit $safha$limit"); 






    __________________
    SWF Thumbnail - tweet me

  8. #8
    عضو سوبر نشيط
    تاريخ التسجيل
    Sep 2006
    المشاركات
    700


    مشكور كلامك عدل واخف الكود


    شاكر لك

    انحلت المشكله










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

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

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