以下代码是否有错?
我有一个三个选项选择框,用于显示数据的不同选择查询。我似乎无法让它发挥作用。 提交表单时带有一个提交按钮,其名称和值为submit。 我是否还需要检查选择框名称?
if(isset($_POST['submit'])) {
if($_POST['value']=='all_records') {
$sql = "SELECT *
FROM contact_list
";
}
elseif($_POST['value']=='surname_desc') {
$sql = "SELECT *
FROM contact_list
ORDER BY Surname DESC";
}
else{
$sql = "SELECT *
FROM contact_list
ORDER BY FirstName ASC";
}
$results = mysqli_query($dblink, $sql) or die (mysqli_error());
}
我的表格:
<form class="filteroption" action="" method="post">
<select class="select" name="select">
<option value ="all_records" selected="selected">All records</option>
<option value ="surname_desc" selected="selected">Surname Desc</option>
<option value ="firstname_asc" selected="selected">First Name Asc</option>
</select>
<input class="" type="submit" name="submit" value="submit">
</form>
查询无法正常工作并更改了我的表格内容。我使用foreach等从$ results汇总到thr表中,这似乎与页面的默认预查询视图一起工作...
答案 0 :(得分:2)
在所有条件下,将$_POST['value']
替换为$_POST['select']
。
您应该使用select标记的名称来比较值。
此外,我看到您为选择框中的所有选项添加了selected="selected"
。它应该只添加一个选项。
答案 1 :(得分:2)
您的选择名称不是“值”,而是“选择”:
if(isset($_POST['submit'])) {
if($_POST['select']=='all_records') { //<=========== 'select'
$sql = "SELECT *
FROM contact_list
";
}
elseif($_POST['select']=='surname_desc') { //<=========== 'select'
$sql = "SELECT *
FROM contact_list
ORDER BY Surname DESC";
}
else{
$sql = "SELECT *
FROM contact_list
ORDER BY FirstName ASC";
}
$results = mysqli_query($dblink, $sql) or die (mysqli_error());
}