使用PHP获取选项值

时间:2015-05-05 20:23:12

标签: php sql

我想使用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));

}

任何有或没有提交按钮的建议都会有所帮助。

2 个答案:

答案 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上的众多帖子,以了解其他用户已经完成的内容!