2017-04-26 109 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个字段搜索所有需要的值。 –