سلام دوستان کوئری جستجو (search) چطوری میتونم بنویسم که تو چند جدول همزمان جستجو کنه
مثلا من میخوام وقتی پزشکی رو سرچ کرد اون شخص بره 5 تیبل منو جستجو کنه هرچی مربوط بود بیاره و نشون بده
حالا اگه تو هر پنج جدول بود که هیچ نبود مثلا نتیجه جستجو بقیه رو نشون بده
تابع زیر رو به کدهات اضافه کن:
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 هم استفاده کرد و در نهایت کد رو بهینه تر کرد.
ببخشید خوب متوجه نشدم
خب شما همینطوری عادی کوئری بزنید برای هر جدول
یه آرایه از نتایج درست کنین
بعدش نتایج هر جدول رو بریزن تو آرایه
از آخر همون آرایه رو برگردونین به کاربر نشون بدین
اگه منظور خاصی دارین بیشتر توضیح بدین
سلام
سال نو مبارک
یکم توضیحش سخته که بخوام بنویسم ولی
من 5 تا جدول دارم به نام های news_tbl - podcast_tbl - video_bl - needs_tbl - advertise_tbl
حالا من میخوام کوئری بنویسم با pdo که وقتی مثلا تو باکس سرچ تایپ میکنم بازار - پزشکی یا هرچیز دیگه ای
بره داخل این 5 تا جدول بگرده و نتایج رو بهم برگردونه حالا یا تو همه جدول ها هست یا نه مثلا یک یا دو جدول
از این 5 تا جدول هم سه تا فیلد میخوام بکشم بیرون که دو تا تو همشون مشترکه اسماشون یکسانه
id و title
سومی هم عکسه که متفاوته یه جا img هست یه جا picture یه جا آیکن
حالا من میخوام ببینم چطوری این کوئری رو بزنم
یه پارامتر get ارسالی دارم با 5 تا جدول و 5 تا دستور like
تابع زیر رو به کدهات اضافه کن:
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 هم استفاده کرد و در نهایت کد رو بهینه تر کرد.
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟