我想使用PHP获取该选项的值,并且根据所选的选项,我希望页面根据他们的选择显示不同的结果。
我没有提交按钮,因为我想在用户点击下拉列表中的选项时更改数据。
这是我的表格:
<form action="#" name="viewall" id="viewall" method="post">
<label for="date" id="date">Select a decade:</label>
<select name="date">
<option value="all" id="all">View All</option>
<option value="1920" id="1920">1920's</option>
<option value="1930" id="1930">1930's</option>
<option value="1940" id="1940">1940's</option>
<option value="1950" id="1950">1950's</option>
<option value="1960" id="1960">1960's</option>
<option value="1970" id="1970">1970's</option>
<option value="1980" id="1980">1980's</option>
<option value="1990" id="1990">1990's</option>
</select>
我想如果用户选择1920年仅显示该十年的记录,如果用户没有选择任何内容,它将自动显示所有记录。
我一直在尝试使用以下代码,并使用提交按钮使其工作,但它只会显示1920年代或1970年代,并且不会发生变化。
if(isset($_POST['submit'])){
//sel_val stores selected value in a variable
//mysqli_real_escape_string() function escapes special characters in a string for use in an SQL statement.
$sel_val = mysqli_real_escape_string($con, $_POST['1920']);
$sql = mysqli_query($con, "SELECT * FROM details
WHERE year < '1930' AND year > '1919' ORDER BY year ASC;");
}
elseif(isset($_POST['submit'])){
//sel_val stores selected value in a variable
//mysqli_real_escape_string() function escapes special characters in a string for use in an SQL statement.
$sel_val = mysqli_real_escape_string($con, $_POST['1970']);
$sql = mysqli_query($con, "SELECT * FROM details
WHERE year < '1980' AND year > '1969' ORDER BY year ASC;");
}
else
{
$sel_val = mysqli_real_escape_string($con, $_POST['all']);
$sql = mysqli_query($con, "SELECT * FROM details ORDER BY year ASC;") or die(mysqli_error($con));
}
任何有或没有提交按钮的建议都会有所帮助。
答案 0 :(得分:1)
if (isset($_POST['submit'])) {
if (is_numeric($_POST['date']) {
$sel_val = mysqli_real_escape_string($con, $_POST['date']);
$sql = mysqli_query($con, "SELECT * FROM details WHERE year = " . $sel_val);
} elseif ($_POST['date'] === 'all') {
$sql = mysqli_query($con, "SELECT * FROM details ORDER BY year ASC");
}
} else {
$sql = mysqli_query($con, "SELECT * FROM details ORDER BY year ASC;") or die(mysqli_error($con));
}
答案 1 :(得分:0)
你只得到20或70的原因是因为这是在case语句中编码的所有内容。如果那些实际工作,你只需要编写一些条件。将每个日期值更改10年,直到几十年为止。
如果没有提交,您将需要AJAX。要了解有关AJAX的更多信息,请参阅jQuery's AJAX或如果您愿意Javascript and Mozilla Documentation您还可以搜索StackOverflow上的众多帖子,以了解其他用户已经完成的内容!