gpt4 book ai didi

javascript - 下拉列表不发送POST数据

转载 作者:行者123 更新时间:2023-11-28 19:59:17 25 4
gpt4 key购买 nike

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

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

我意识到我的问题是我的代码仅发送最后一个下拉列表中的数据,而不是两者。我只需要任一下拉列表中的 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">

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

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 的代码

最佳答案

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

编辑

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

只要您的默认选项具有空值属性,您就可以像这样检查:

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

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

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

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

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

关于javascript - 下拉列表不发送POST数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21943564/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com