下面的代码是错误的吗?
对于显示数据的不同选择查询,我有三个选项选择框。我似乎不能使它工作。表单是通过一个名称和值为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回显到表中,这似乎与页面的默认预查询视图一起工作得很好…
将$_POST['value']
替换为$_POST['select']
。您应该使用选择标签的名称来比较这些值。
我还看到你在选择框中为所有选项添加了selected="selected"
。
选择的名称不是"value"而是"select":
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());
}