搜索表单php/sql多输入

搜索表单php/sql多输入,php,html,sql,forms,search,Php,Html,Sql,Forms,Search,我对搜索表单有问题。只有当我使用所有4个字段时,它才有效,但如果一个字段为空,while循环将回荡出表中的所有记录 有人能帮我吗 这是我的搜索函数的php代码 <?php if (isset($_POST['cerca'])){ $cerca_tt = $_POST['tt_carrier']; $cerca_risorsa = $_POST['risorsa_cerca']; $cerca_team = $_POST['team_cerca']; $

我对搜索表单有问题。只有当我使用所有4个字段时,它才有效,但如果一个字段为空,while循环将回荡出表中的所有记录

有人能帮我吗

这是我的搜索函数的php代码

<?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); ?>

如果POST为空,则变量为空,因此所有内容都将匹配,如“%”

例如,如果$cerca_tt为空。你的问题是

   "SELECT * FROM normal WHERE tt like '%%'"
这一切都很相配

根据POST响应创建查询

 $sel = "SELECT * from normal";
//您将需要处理查询的WHERE部分

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

etc..//

如果只提供一个搜索参数,其余为空字符串(用%包装),则实际上是在搜索所有内容。您需要建立您的查询。例如(简单):


while循环在哪里?这是
if($sql\u cerca){
是多余的。它只是一个字符串,你知道,你应该看一看并解决它,我在上面的代码中使用了4个输入字段,现在我用1个字段搜索我需要的所有值。解决了,我在上面的代码中使用了4个输入字段,现在我用1个字段搜索我需要的所有值。解决了,我在上面的代码中使用了4个输入字段,现在我只需搜索一个字段,就可以找到我需要的所有值。
$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);
}