我的情况是,我有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的代码
答案 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">
在您的情况下,它将是:(并为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."'");
}
}
?>