0

我做了一個學校項目的網頁,我有一系列選擇框(有些是獨立的,有些依賴另一個)進行選擇,然後應用過濾器進行查詢。它仍然處於測試模式,並且對單個選擇工作正常。你可以在這裏找到的網頁:http://gorevler.awardspace.biz/realdeal03.html在選擇框中選擇多個選項並從數據庫獲取結果?

例如,當我從地區,奧地利從國家,塑料的行業,從產品子行業和聚塑料原料選擇歐洲,然後點擊應用過濾器它給出來的結果。

,當我從國家選擇歐洲國家和地區北美,奧地利,從行業,從產品子行業和聚塑料原料,塑料,然後單擊應用過濾器,它提供了只有一個結果。但在數據庫中有兩個匹配此過濾器的記錄。所以它不承認我的多重選擇。任何關於如何使其工作的建議,以便當我在一個盒子上進行多個選擇並應用過濾器時,它會提供包括所有選擇的所有結果?

我想這是關於PHP編碼,我嘗試了不同的東西,但沒有成功。由於我不是程序員,我似乎不明白問題出在哪裏。任何關於編碼的建議將不勝感激。

回答

0

是因爲當您選擇兩個區域時,您的查詢變爲: SELECT ... FROM ... WHERE region ='North America'AND region ='Europe',這意味着您永遠不會從數據庫獲得任何結果該地區不能兼得?如果是這樣,你需要做到這一點,所以你使用「OR」語句選擇多個區域。

有很多方法來完成這個。首先,您需要一種處理您所在地區的多個輸入的方法,而不是僅僅在您的php代碼中定義一個輸入。基本上,一旦你捕獲了多個區域,那麼你的查詢行就是唯一需要改變的行。這可以成爲:

$sql = mysql_query("SELECT * from gorevler WHERE region IN ('%$bolge%','%$bolge2%','%bolge3%') AND country LIKE '%$ulke%' AND sector LIKE '%$sektor%' AND sub_sector LIKE '%$altsektor%' AND product LIKE '%$urun%'"); 

或者

$sql = mysql_query("SELECT * from gorevler WHERE (region = '$bolge' OR region = '$bolge2' OR region = '$bolge3) AND country LIKE '%$ulke%' AND sector LIKE '%$sektor%' AND sub_sector LIKE '%$altsektor%' AND product LIKE '%$urun%'"); 

編輯與你的最後一個問題有些指針:

它只需要來自你的HTML。所以如果你選擇多個區域,那麼它會將這些發佈到你的PHP頁面。例如:

<option value="" data-filter-type="" selected="selected" id="europe">Europe</option> 

<option value="" data-filter-type="" selected="selected" id="usa">USA</option> 

然後在你的PHP

$bolge=$_POST['europe]; 
$bolge2=$_POST['usa']; 

這可能是快速和骯髒的方法呢。

+0

是的你是對的。當我在框中選擇歐洲和北美時,我希望結果顯示所有記錄,包括歐洲或北美。那麼我應該在下面的PHP代碼上做一些修改嗎?:'$ bolge = $ _ POST ['filtre_region']; $ sql = mysql_query(「SELECT * from gorevler WHERE region LIKE'%$ bolge%'AND country LIKE'%$ ulke%'​​AND sector LIKE'%$ sektor%'AND sub_sector LIKE'%$ altsektor%'AND product LIKE' %$ urun%'「);' – barutto

+0

在這種情況下,您需要動態構建您的查詢,因此如果選擇了更多的區域,則會添加更多的子句。因此,如果地區是美國或歐洲,那麼查詢應該是select ... from ... where(region ='europe'或region ='usa')和...;那種查詢。 – d1ll1nger

+0

那麼你認爲我應該嘗試sql IN操作符嗎?或者是其他東西?如果你能給我編碼提示,我會非常感激。 – barutto

相關問題