2017-08-01 30 views
1

我發現只有第一個條件在其內部存在相同變量時才被讀取,如果條件存在,則跳過另一個條件。如何解決它?如果條件變量存在於第一個條件,則跳過另一個條件

<select name='selectcriteria' class="form-control" multiple> 
<option value="education">Education</option> 
<option value="orphan">Orphan</option> 
<option value="madrasah">Madrasah</option> 
<option value="scholarship">Scholarship</option> 
<option value="socialwalfare">Social Walfare</option> 
</select> 

If(isset($_GET['selectcriteria'])){ 
$criteria=$_GET['selectcriteria']; 



if($criteria=='education'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria ='education'"; 
} 
else if($criteria=='madrasah'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah'"; 
} 
else if($criteria=='orphan'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'orphan'"; 
} 
else if($criteria=='scholarship'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'scholarship'"; 
} 
else if($criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'socialwalfare'"; 
} 
else if($criteria=='education'&&$criteria=='madrasah'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria ='education' OR criteria = 'madrasah'"; 
} 
else if($criteria=='education'&&$criteria=='orphan'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria= 'orphan'"; 
} 
else if($criteria=='education'&&$criteria=='scholarship'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria = 'scholarship'"; 
} 
else if($criteria=='education'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria = 'socialwalfare'"; 
} 
else if($criteria=='education'&&$criteria=='madrasah'&&$criteria=='orphan'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria = 'madrasah' OR criteria = 'orphan'"; 
} 
else if($criteria=='education'&&$criteria=='madrasah'&&$criteria=='scholarship'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria = 'madrasah' OR criteria = 'scholarship'"; 
} 
else if($criteria=='education'&&$criteria=='madrasah'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria = 'madrasah' OR criteria = 'socialwalfare'"; 
} 
else if($criteria=='education'&&$criteria=='madrasah'&&$criteria=='socialwalfare'&&$criteria=='orphan'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'education' OR criteria = 'madrasah' OR criteria = 'socialwalfare' OR criteria= 'orphan'"; 
} 
else if($criteria=='madrasah'&&$criteria=='orphan'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah' OR criteria = 'orphan'"; 
} 
else if($criteria=='madrasah'&&$criteria=='scholarship'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah' OR criteria = 'scholarship'"; 
} 
else if($criteria=='madrasah'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah' OR citeria = 'socialwalfare'"; 
} 
else if($criteria=='madrasah'&&$criteria=='orphan'&&$criteria=='scholarship'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah' OR criteria = 'orphan' OR criteria = 'scholarship'"; 
} 
else if($criteria=='madrasah'&&$criteria=='orphan'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah' OR criteria = 'orphan' OR criteria ='socialwalfare'"; 
} 
else if($criteria=='madrasah'&&$criteria=='scholarship'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'madrasah' OR criteria = 'scholarship' OR criteria='socialwalfare'"; 
} 
else if($criteria=='orphan'&&$criteria=='scholarship'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'orphan' OR criteria = 'scholarship'"; 
} 
else if($criteria=='orphan'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'orphan' or criteria = 'socialwalfare'"; 
} 
else if($criteria=='orphan'&&$criteria=='scholarship'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'orphan' OR criteria = 'scholarship' OR criteria = 'socialwalfare'"; 
} 
else if($criteria=='scholarship'&&$criteria=='socialwalfare'){ 
$sqlselect="SELECT * FROM criteria WHERE criteria = 'scholarship' OR criteria = 'socialwalfare'"; 
} 

$resultselect = mysqli_query($conn, $sqlselect); 

當在顯示狀態的同時,僅與任何第一條件相匹配的數據出現了,而其它值被跳過,不讀出。例如,如果我多選教育和獎學金,url中的變量應該執行selectcriteria = education & selectcriteria =獎學金。但是,隨着另一個值與條件匹配,一個值會被跳過。

+0

這是怎麼回事IFS工作在每一個語言,而不是隻是PHP - 只有第一個在鏈中匹配。您可能需要將對方內部的陳述嵌套在一起 - 儘管目前還不清楚您要實現的目標。我猜「標準」不能是「教育」和「madrasah」,這就是'&&'操作員正在做的事情。 – theFunkyEngineer

+0

您正在複製很多東西。通過簡單地陳述(僞代碼),你可以擺脫很多這些:'if($ criteria){$ sqlselect =「SELECT ... WHERE criteria = $ criteria}'只需確保轉義這些變量(嘗試防止sql注入) – Kyrre

回答

1

既然你會得到多個值,因爲它是一個多選,你可以使用它像這樣:

$selected = $_GET['selectcriteria']; 
$values = explode(',', $selected); 
foreach($values as $criteria) { 
    $sqlselect[] = "criteria ='" . $criteria . "'"; 
} 

$sqlselect = implode(' OR ', $sqlselect); 

$query = "SELECT * FROM criteria WHERE 1 AND ($sqlselect); 

選項2:

我相信,你可以使用IN條款了。

$selected = $_GET['selectcriteria']; 
$values = explode(',', $selected); 
$joinValues implode("' ", $values); 
$query = "SELECT * FROM criteria WHERE criteria in ('" . $joinValues . "'); 
1

我不熟悉PHP的語法,但像下面可以做:

有一個字符串,它說:=「SELECT * FROM標準其中(標準」

那麼無論值在「選擇」菜單中選擇您可以用它們來追加到上面,並最終定義字符串正確地關閉SQL字符串。

如果(==的SelectedValue ABC){ 追加到字符串「ABC」 }

如果(的SelectedValue == XYZ){ 追加到字符串 'XYZ' }

到底

與追加它 ')'

相關問題