[英]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.