簡體   English   中英

搜索表單php / sql多個輸入

[英]search form php/sql multiple inputs

我的搜索表有問題。 僅當我使用所有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."'";
 }

等等....///

如果僅提供一個搜索參數,其余為空字符串(用%換行),則可以有效地搜索所有內容。 您需要建立查詢。 例如(簡單):

$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);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM