Reputation: 11
I figured out that only the first if condition has been read when there are the same variable inside it and skipping another else if condition. How to solve it?
<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);
When it display in while condition, only data that match with any first condition is showed up while other value is skipped and not read. For example if I multiselect education and scholarship, the variable in url should carried selectcriteria=education&selectcriteria=scholarship . But then one value is skipped as another one matched with condition.
Upvotes: 1
Views: 45
Reputation: 172
I am not familiar with syntax of php but something like following can be done:
Have a string which says = "select * from criteria where criteria in ("
Then whatever values were selected in the 'select' menu you can use them to append to the string defined above and in the end close the SQL string properly.
if (selectedvalue == abc) { append to string 'abc' }
if (selectedvalue == xyz) { append to string ,'xyz' }
in the end append it with ')'
Upvotes: 1
Reputation: 8249
Since you are going to get multiple values because its a multiselect, you can use it like this:
$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);
Option 2:
I believe, you can use IN
clause too.
$selected = $_GET['selectcriteria'];
$values = explode(',', $selected);
$joinValues implode("' ", $values);
$query = "SELECT * FROM criteria WHERE criteria in ('" . $joinValues . "');
Upvotes: 1