2016-10-04 6 views
2

2つのドロップダウンボックスを使用してデータベースを検索しようとしています。 ($ k)サービスと($ t)しかし、この用語のうちの1つだけが動作しています。私は新しいPHPです。私はmysqliを使用して知っている知っている私はちょうどそれを働かせ、後でこれを更新したい。PHP - 2つのドロップダウンメニューから2つの検索語を使用して検索する

$k = $_GET['k']; 
$t = $_GET['t']; 

$i = 0; 
$term1 = explode(" ", $k); 
$term2 = explode(" ", $t); 

$result = array_merge($term1, $term2); 

$query ="SELECT * FROM clients WHERE "; 

foreach ($result as $each) { 
    $i++; 
    if ($i == 1) 
     $query .= "company_services LIKE '%$each%'" . "OR town LIKE '%$each%'"; 
} 
[email protected]_connect($mysql_host, $mysql_user, $mysql_password); 
$db = mysql_select_db('db_name'); 

$query = mysql_query($query) or die(mysql_error());; 
$numrows = mysql_num_rows($query); 
if ($numrows > 0){ 

    while ($row = mysql_fetch_assoc($query)) { 
+0

あなたが直接 '使用することができます '%の$のTERM1の%' "" OR町LIKE '%の$のTERM2の%''の代わりに、それは一度だけループしているようだとのforeachで複雑な作りLIKE company_services – jitendrapurohit

答えて

3

おそらくこのような何かがうまくいくかもしれませんか?

if(isset($_GET['k'], $_GET['t'])){ 

    $term1 = explode(" ", $_GET['k']); 
    $term2 = explode(" ", $_GET['t']); 

    $result = array_merge($term1, $term2); 
    $clauses=array(); 

    $query ="select * from `clients`"; 

    foreach($result as $word) { 
     $clauses[]="(`company_services` like '%$word%' OR `town` like '%$word%')"; 
    } 

    $query = !empty($clauses) ? $query . ' where ' . implode(' or ',$clauses) : $query; 


    [email protected]_connect($mysql_host, $mysql_user, $mysql_password); 
    $db = mysql_select_db('db_name'); 

    $query = mysql_query($query) or die(mysql_error()); 
    $numrows = mysql_num_rows($query); 


    if ($numrows > 0){ 
     while ($row = mysql_fetch_assoc($query)) { 
      /* do stuff*/ 
     } 
    } 
} 
0

$result = array_merge($term1, $term2);
これは、値の配列に$結果を設定します。現時点では、$ result-arrayの最初の値を使用しています。すべての値を使用するには、このにあなたのforeachループを変更します。

foreach ($result as $each) { 
 
    $query .= "company_services LIKE '%$each%' OR town LIKE '%$each%' "; 
 
}

関連する問題