gpt4 book ai didi

php - jQuery/PHP/MySQL 提交隐藏的选择下拉列表

转载 作者:行者123 更新时间:2023-11-29 08:48:31 26 4
gpt4 key购买 nike

我有以下代码,用于在选择第一个下拉框后填充第二个下拉框(实际上它们都已经制作完成,它只是根据您的第一个下拉列表显示正确的一个:

<tr><th>Customer</th><td>
<select name='customer_id' id='customer_id'>
<option value=''>-- Select Customer --</option>
<?php
$results = Misc::customerDropDown();
while ($row = mysql_fetch_array($results)) {
echo "<option value='" . $row['customer_id'] . "'>" . $row['customer_name'] . "</option>";
}
?>
</select><span class='error'>&nbsp;*&nbsp;<?php echo $errors['customer_id']; ?></span>
</td></tr>
<?php
$results = Misc::customerDropDown();
$num_customers = mysql_num_rows($results);
$n = 1;
while ($row = mysql_fetch_array($results)) {
?>
<tr class='locations' id='locations<?= $row['customer_id'] ?>'><th>Customer Location</th><td>
<select name='customer_location<?= $n ?>'>
<option value=''>-- Customer Locations --</option>
<?
$location_results = Misc::locationDropDown($row['customer_id']);
while ($option = mysql_fetch_array($location_results)) {
echo "<option value='" . $option['location_id'] . "'>" . $option['location_name'] . "</option>";
}
?>
</select><span class='error'>&nbsp;*&nbsp;<?php echo $errors['customer_location']; ?></span></td></tr>
<? $n++;
} ?>

我遇到的问题是,无论我尝试什么,最后一个“customer_location”下拉列表总是会被使用,因为当它提交时,它(我相信)会覆盖其他两个。

我尝试将 customer_location 设为数组 (customer_location[]),但这只会让它认为有(例如)3 个数组,而不是具有 3 个元素的数组。我还尝试(如图所示)通过在每个位置的末尾添加 $n 来命名位置,但是当我去引用该帖子时,我不知道如何命名,因为我无法引用 $_POST[' customer_location$n']

想法?

最佳答案

无论下拉菜单是否可见,它们仍然是表单的一部分。它们的值将在提交时发布回服务器。由于您在客户端使用逻辑来确定将显示哪个下拉列表,因此您必须在服务器端使用相同的逻辑来确定要获取哪个下拉列表的值。

您可以引用$_POST['customer_location1']、或$_POST['customer_location2']等。

我还注意到一个错字。最后一部分应该如下所示。

<?php
$results = Misc::customerDropDown();
$num_customers = mysql_num_rows($results);
$n=1;
while($row = mysql_fetch_array($results)){
?>
<tr class='locations' id='locations<?=$row['customer_id']?>'>
<th>Customer Location</th>
<td>
<select name='customer_location<?=$n?>'>
<option value=''>-- Customer Locations --</option>
<?
$location_results = Misc::locationDropDown($row['customer_id']);
while($option = mysql_fetch_array($location_results)){
echo "<option value='".$option['location_id']."'>".$option['location_name']."</option>";
}
?>
</select>
<span class='error'>&nbsp;*&nbsp;<?php echo $errors['customer_location'.$n]; ?></span>
</td>
</tr>
<?
$n++;
}
?>

结束的tdtr需要在循环中。并且 $errors 可能应该包括 $n

编辑

例如,下拉菜单 1 如下所示:

<select id='dd'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>

在你的jquery中,你有一个显示正确下拉列表的更改处理程序(这部分实际上只在这个确切的示例中工作,但你说你已经让这部分工作了,所以我掩盖了它......基本上是“执行逻辑以显示正确的下拉菜单”)。

$("#dd").change(function() {
var dd = $(this).val();
$("#dd1").hide();
$("#dd2").hide();
$("#dd3").hide();
$("#dd" + val).show();
});

然后您就得到了隐藏的三个下拉菜单:

<select id='dd1' style='display: none;'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<select id='dd2' style='display: none;'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>
<select id='dd3' style='display: none;'>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
</select>

然后您在#dd 中选择选项 2。显示 #dd2,然后选择选项 1,然后单击“提交”。然后在你的php代码中(我的php可能有点生疏):

$val = $_POST['dd'];
$ddval = '';

if ($val == '1') {
$ddval = $_POST['dd1'];
} else if ($val == '2') {
$ddval = $_POST['dd2'];
} else if ($val == '3') {
$ddval = $_POST['dd3'];
}

关于php - jQuery/PHP/MySQL 提交隐藏的选择下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11919515/

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