我想像这样进行多选
<form method="POST" action="">
<select name="age">
<option value="">Any</option>
<option value="0">18-20</option>
<option value="1">21-23</option>
<option value="2">24-27</option>
<option value="3">28-32</option>
<option value="4">33-39</option>
<option value="5">40-49</option>
<option value="6">50+</option>
</select>
<select name="gender">
<option value="">Any</option>
<option value="male">Male</option>
<option value="female">Female</option>
</select>
<input type="submit" name="filtrer" value="Submit">
</form>
我的查询是这样的
$retour_messages = mysql_query('SELECT * FROM users ORDER BY id DESC LIMIT '. mysql_real_escape_string ($premiereEntree) .', '. mysql_real_escape_string ($messagesParPage) .'');
如果有人可以帮助我,我需要制作多个位置以根据我的选择对结果进行排序。
谢谢
最佳答案
您需要构建一个动态查询来执行此操作。从一个基本的 stub 开始
$sql = "SELECT * FROM users ";
然后您需要将初始子句设置为 WHERE。
$clause = " WHERE ";//Initial clause
检查是否设置了$_POST['filtrer']
if(isset($_POST['filtrer'])){//to run PHP script on submit
然后开始使用 switch case 构建查询
//age
if(!empty($_POST['age'])){
switch ($_POST['age']) {
case 1:
$sql .= "$clause (age >18 AND <20)";
break;
case 2:
$sql .= "$clause (age >21 AND <23)";
break;
case 3:
$sql .= "$clause (age >24 AND <27)";
break;
case 4:
$sql .= "$clause (age >28 AND <32)";
break;
case 5:
$sql .= "$clause (age >33 AND <39)";
break;
case 6:
$sql .= "$clause (age >40 AND <49)";
break;
case 7:
$sql .= "$clause age >50";
break;
}
将子句设置为 AND
$clause = " AND ";// Set clause to AND
}
//gender
if(!empty($_POST['gender'])){
switch ($_POST['gender']) {
case 'male':
$sql .= "$clause gender = male";
break;
case 'female':
$sql .= "$clause gender = female";
break;
}
}
$sql .=" ORDER BY id DESC LIMIT";//. mysql_real_escape_string ($premiereEntree) .", ";
echo $sql;
}
您将需要重新编号年龄选项
<form method="POST" action="#">
<select name="age">
<option value="">Any</option>
<option value="0">18-20</option>
<option value="2">21-23</option>
<option value="3">24-27</option>
<option value="4">28-32</option>
<option value="5">33-39</option>
<option value="6">40-49</option>
<option value="7">50+</option>
</select>
建议使用 PDO 或 Mysqli,因为 mysql_ 函数已弃用
关于php - 查询中带有选择选项的多处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27427002/