راکت
حل شده

جستجو در چند جدول با php mvc

5 پاسخ

سلام دوستان کوئری جستجو (search) چطوری میتونم بنویسم که تو چند جدول همزمان جستجو کنه
مثلا من میخوام وقتی پزشکی رو سرچ کرد اون شخص بره 5 تیبل منو جستجو کنه هرچی مربوط بود بیاره و نشون بده
حالا اگه تو هر پنج جدول بود که هیچ نبود مثلا نتیجه جستجو بقیه رو نشون بده

@hesammousavi
@ali.bayat

Davood
Davood
@dfardabasi
ثبت پرسش جدید

پاسخ‌ها

5
علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

بهترین پاسخ

تابع زیر رو به کدهات اضافه کن:

function php_search_tables($search_keyword,$table_ass_array){

    global $conn;

    $db_hostname = 'DATABASE HOST NAME';                // database hostname (default value: localhost)
    $db_username = 'DATABASE USERNAME';                 // database username (default value: root)
    $db_password = 'DATABASE PASSWORD';                 // database password (default value: password)
    $db_database_name = 'DATABASE NAME';                // database name

    $conn = mysqli_connect($db_hostname, $db_username, $db_password, $db_database_name);

        if(mysqli_connect_errno()){     // Check connection
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        $rt = $table_ass_array;
        echo "<b>Given Keyword :</b> ".$search_keyword . '<br>';
        echo "<b>Given tables :</b> " . implode($rt,', ') . '<br>';

        if(count($rt) > 0){                             // check weather table column is not empty
            foreach($rt as $k=>$v){                         // iterate column name table
                echo $table = $k;
                echo $v;
                foreach($v as $r2){ // fetch data from respective column name

                    $colum = $r2;   //[0];
                    $sql_search_fields = $colum . " LIKE ('%" . $search_keyword . "%')";
                    $sql_search = "SELECT * FROM " . $table . " WHERE " . $sql_search_fields;
                    $rs3 = $conn->query($sql_search);

                    if($rs3->num_rows > 0){                 // check weather 'keyword' found or not

                        echo "<ul><u>Table :" . $table . '</u>';
                        while($r3 = $rs3->fetch_array()){   // fetch result from respective data
                            $count++;
                            echo "<li> Column Name : " . $colum . "</li>";
                            echo "<li> Row  : " . $r3['ROW ID'] . "</li>";  // primary key column name
                            echo "<li> Value : " . $r3[$colum] . "</li><br>";

                        }   // while loop close

                    }   // table data count close
                    echo "</ul>";

                }   //foreach close

                echo $table." Searching End's Here<hr>";

            }   //foreach close

        }   // Table count close
}

بعد میتونی اسم جدول ها و فیلدهاشون رو توی یه آرایه ذخیره کنی:

$tables_array = array( 
            'news_tbl' => array(            // TABLENAME 1 to search in
                        'title',            // Column Name A to search in
                        'img'           // Column Name B to search in
                        ),
            'needs_tbl' => array(           // TABLENAME 2 to search in
                        'title',            // Column Name A to search in
                        'picture'           // Column Name B to search in
                        )
            );

و به شکل زیر ازش استفاده کن:

php_search_tables($keyword, $tables_array);

البته میشه از PDO هم استفاده کرد و در نهایت کد رو بهینه تر کرد.

الیاس سخاوتی نیا
الیاس سخاوتی نیا
@elyassir

تخصص: علاقه‌مند به برنامه‌‎نویسی

ببخشید خوب متوجه نشدم
خب شما همینطوری عادی کوئری بزنید برای هر جدول
یه آرایه از نتایج درست کنین
بعدش نتایج هر جدول رو بریزن تو آرایه
از آخر همون آرایه رو برگردونین به کاربر نشون بدین
اگه منظور خاصی دارین بیشتر توضیح بدین

Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

سلام
سال نو مبارک
یکم توضیحش سخته که بخوام بنویسم ولی
من 5 تا جدول دارم به نام های news_tbl - podcast_tbl - video_bl - needs_tbl - advertise_tbl
حالا من میخوام کوئری بنویسم با pdo که وقتی مثلا تو باکس سرچ تایپ میکنم بازار - پزشکی یا هرچیز دیگه ای
بره داخل این 5 تا جدول بگرده و نتایج رو بهم برگردونه حالا یا تو همه جدول ها هست یا نه مثلا یک یا دو جدول

از این 5 تا جدول هم سه تا فیلد میخوام بکشم بیرون که دو تا تو همشون مشترکه اسماشون یکسانه
id و title
سومی هم عکسه که متفاوته یه جا img هست یه جا picture یه جا آیکن

حالا من میخوام ببینم چطوری این کوئری رو بزنم

یه پارامتر get ارسالی دارم با 5 تا جدول و 5 تا دستور like

@elyasbeshkani
@hesammousavi
@ali.bayat

شاید پاسخ شما همین‌جا باشد

Davood
Davood
@dfardabasi

تخصص: PHP - Laravel

@ali.bayat
ممنونم از شما استاد
مشکلم حل شد
کدی که برام گذاشتید
کاملا کاربردی بود برام

علی بیات
علی بیات
@ali.bayat

تخصص: توسعه دهنده ارشد وب

خواهش میکنم
موفق باشید

برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام