2017-04-26 111 views
0

我遇到了搜索表單的問題。它只在我使用所有4個字段時才起作用,但如果將字段留空,則while循環會回顯所有表的記錄。搜索表單php/sql多個輸入

有人可以幫我嗎?

這是我對搜索功能

<?php 

if (isset($_POST['cerca'])){ 


    $cerca_tt = $_POST['tt_carrier']; 
    $cerca_risorsa = $_POST['risorsa_cerca']; 
    $cerca_team = $_POST['team_cerca']; 
    $cerca_linea = $_POST['linea_cerca']; 


    $sql_cerca = "SELECT * FROM normal WHERE 
       tt LIKE '%".$cerca_tt."%' 
       OR risorsa LIKE '%".$cerca_risorsa."%' 
       OR team LIKE '%".$cerca_team."%' 
       OR linea LIKE '%".$cerca_linea."%'"; 

     if($sql_cerca) { 

      $trovati = mysql_query($sql_cerca); ?> 
+0

先謝謝你 –

+0

while循環在哪裏? – Akintunde007

+0

這個'if($ sql_cerca){'是多餘的。它只是一個字符串,你知道 – Akintunde007

回答

0

PHP代碼如果該信息是空白,則該變量爲空因此一切都將匹配像「%%」

例如,如果$ cerca_tt是空白。您的查詢將是

"SELECT * FROM normal WHERE tt like '%%'" 

匹配的一切。

根據POST響應創建查詢。

$sel = "SELECT * from normal"; 

//您將需要處理查詢的WHERE部分。

if (!empty($cerca_tt)){ 
    $sel .= " OR tt like '%".$cerca_tt."'"; 
} 

等... ///

+0

解決了,我在上面的代碼中使用了4個輸入字段,現在我只用1個字段搜索所有需要的值。 –

0

如果你只提供一個搜索參數,其餘都是空字符串,這與你包裹%,您實際上搜索一切。你需要建立你的查詢。例如(簡單):

$sqlParts = []; 

if(isset($_POST['tt_carrier'])) { 
    $sqlParts[] = "tt LIKE '%".$cerca_tt."%'"; 
} 
if(isset($_POST['risorsa_cerca'])) { 
    $sqlParts[] = "risorsa LIKE '%".$cerca_risorsa."%'"; 
} 
if(isset($_POST['team_cerca'])) { 
    $sqlParts[] = "team LIKE '%".$cerca_team."%'"; 
} 
if(isset($_POST['team_cerca'])) { 
    $sqlParts[] = "linea LIKE '%".$linea_cerca."%'"; 
} 

if(!empty($sqlParts)) { 
    $sql = "SELECT * FROM normal WHERE " . implode(' OR ', $sqlParts); 
} 
+0

解決了,我在上面的代碼中使用了4個輸入字段,現在我只用1個字段搜索所有需要的值。 –