下拉列表不发送POST数据

时间:2014-02-21 19:33:04

标签: javascript php html html.dropdownlistfor

我的情况是,我有2个下拉列表,其中一个下拉列表中只有一个数据将被发送到第二页。这意味着,不会发送来自另一个下拉列表的数据。因此,我选择使用单选按钮显示下拉列表。如果我选择第一个按钮,它将只显示第一个下拉列表,反之亦然。

问题是,当我选择第一个下拉列表时,它不会将下拉列表中的任何POST数据发送到第二页,只是空白。但是,如果我选择第二个下拉列表,它会正确发送数据!我认为第一个下拉列表代码中存在错误(即使两个代码实际上都相同)。所以,我添加了另一个列表,这次只发送第3个下拉列表的数据。第1和第2列表不发送任何内容。

我意识到我的问题是我的代码只从最后一个下拉列表发送数据,而不是两者。我只需从下拉列表中获取1个数据,但我需要两个才能运行。如果我只能选择一个列表,我甚至不需要制作2个下拉列表。

这是我的代码,但不是完整的代码。其他数据工作正常,只有下拉列表有问题。

<form name="list" action="index.php?site=11" method="post">
<script>
function check(){
if(document.getElementById('1H').checked) {
    document.getElementById('D1H').style.display = 'block';
    document.getElementById('D2H').style.display = 'none';
}
else {
    document.getElementById('D1H').style.display = 'none';
    document.getElementById('D2H').style.display = 'block';
}}
</script>
Choose:
<input type="radio" onclick="javascript:check();" name="duration" id="1H">1 Hour
<input type="radio" onclick="javascript:check();" name="duration" id="2H">2 Hour

Choose time slot:
<div id="D1H" style="display:none">
    <select name="time1" >
     <option value="">---Choose---</option>
     <option value="8-9">8:00am-9:00am</option>
    </select>
</div>
<div id="D2H" style="display:none">
    <select name="time2" >
     <option value="">---Choose---</option>
     <option value="8-10">8:00am-10:00am</option>
    </select>
</div>
<input type="submit" name="submit" value="Next">

这是用于显示我如何收到POST数据的php代码,直到查询。

include('../include/dbconnect.php');
$user = $_SESSION['username'];

if(isset($_POST['submit'])){

if(isset($_POST['time'])){
$lab=$_POST['lab'];
$day=$_POST['day'];
$month=$_POST['month'];
$year=$_POST['year'];
$time=$_POST['time'];

echo "1:".$time;

$results = mysql_query("SELECT COUNT(*) FROM `booking` WHERE `lab` = '".$lab."' AND `day` = '".$day."' AND `month` = '".$month."' AND `year` = '".$year."' AND `time` = '".$time."'");
}

if(isset($_POST['time2'])){
$lab=$_POST['lab'];
$day=$_POST['day'];
$month=$_POST['month'];
$year=$_POST['year'];
$time=$_POST['time2'];

echo "2:".$time;

$results = mysql_query("SELECT COUNT(*) FROM `booking` WHERE `lab` = '".$lab."' AND `day` = '".$day."' AND `month` = '".$month."' AND `year` = '".$year."' AND `time` = '".$time."'");
}
}

echo "3:".$time;

我该如何解决这个问题?我需要确保两个下拉列表都可以将POST数据发送到另一个页面,而不仅仅是一个页面。我希望你能理解我的问题。

编辑:我已经更改了两个选择框的名称。 第二次编辑:我添加Fred的代码

2 个答案:

答案 0 :(得分:3)

选择框的名称相同。您需要为两个选择选项设置不同的名称属性。

修改

问题是,即使没有明确设置,选择框也会发布数据。因此每个isset()将始终返回true。

只要您的默认选项具有空值属性,您就可以检查以下内容:

if(!empty($_POST['time']))

或者设置默认值以进行测试,如下所示:

<option value="0">---Choose---</option>

<?php if($_POST['time'] != '0') ?>

最初的问题是,即使您只选择了第一个选项,表单也会始终发布最后一个选择。现在的问题是两个if(isset条款都是true

答案 1 :(得分:0)

关于两个同名的选项,已经说了什么,仍然有效。

旁注:(我将第二个选择重命名为time2

但是,为了从单选按钮/下拉列表选择中使用时间,您需要使用isset条件语句,然后将该变量用于数据库插入。

将提交按钮命名为我自己的自检并在同一文件中进行测试,如下所示。你可以修改它以适应。

场景:正在(设置)传递给您的数据库的$time变量将被设置,具体取决于选择的时间选择。

<?php
if(isset($_POST['submit'])){

    if(isset($_POST['time'])){
    $time=$_POST['time'];
    echo $time;
    }

    if(isset($_POST['time2'])){
    $time=$_POST['time2'];
    echo $time;
    }
}

?>

<form name="list" action="" method="post">
<script>
function check(){
if(document.getElementById('1H').checked) {
    document.getElementById('D1H').style.display = 'block';
    document.getElementById('D2H').style.display = 'none';
}
else {
    document.getElementById('D1H').style.display = 'none';
    document.getElementById('D2H').style.display = 'block';
}}
</script>
Choose:
<input type="radio" onclick="javascript:check();" name="duration" id="1H">1 Hour
<input type="radio" onclick="javascript:check();" name="duration" id="2H">2 Hour

Choose time slot:
<div id="D1H" style="display:none">
    <select name="time" >
     <option value="">---Choose---</option>
     <option value="8-9">8:00am-9:00am</option>
    </select>
</div>
<div id="D2H" style="display:none">
    <select name="time2" >
     <option value="">---Choose---</option>
     <option value="8-10">8:00am-10:00am</option>
    </select>
</div>
<input type="submit" name="submit" value="Next">

编辑(与DB相关)

在您的情况下,它将是:(并为name="submit"命名您的提交按钮):

<?php
if(isset($_POST['submit'])){

    if(isset($_POST['time'])){
    $lab=$_POST['lab'];
    $day=$_POST['day'];
    $month=$_POST['month'];
    $year=$_POST['year'];
    $time=$_POST['time'];

    $results = mysql_query("SELECT COUNT(*) FROM `booking` WHERE `lab` = '".$lab."' AND `day` = '".$day."' AND `month` = '".$month."' AND `year` = '".$year."' AND `time` = '".$time."'");

    }

    if(isset($_POST['time2'])){
    $lab=$_POST['lab'];
    $day=$_POST['day'];
    $month=$_POST['month'];
    $year=$_POST['year'];
    $time=$_POST['time2'];
    $results = mysql_query("SELECT COUNT(*) FROM `booking` WHERE `lab` = '".$lab."' AND `day` = '".$day."' AND `month` = '".$month."' AND `year` = '".$year."' AND `time` = '".$time."'");

    }
}

?>