我有一个包含以下代码的下拉列表
$result = $conn->query("select province, town FROM areas");
echo "<html>";
echo "<body>";
echo "<select name='town'>";
while ($row = $result->fetch_assoc()) {
unset($province, $town);
$province = $row['province'];
$town = $row['town'];
echo '<option value="'.$town.'">'.$town.'</option>';
}
echo "</select>";
echo "</body>";
echo "</html>";
我的表格结构有两个我需要从表格中记录的字段,镇和省。我已经创建了如上所示的价值城镇,我想要做的是我的代码将上传到数据库的两个值
在我的第二个PHP文件中,我将_POST信息如下。
$town = $_POST['town'];
$province = $_POST['province'];
如何使用下拉列表
捕获多个值我已将代码更改为:
$result = $conn->query("select province, town FROM areas");
echo "<html>";
echo "<body>";
echo "<select name='prov_town'>";
while ($row = $result->fetch_assoc()) {
unset($province, $town);
$province = $row['province'];
$town = $row['town'];
echo '<option value="'.$town.'_'.$province.'">'.$town.'</option>'; // I had extra "" in here that was not to be used
}
echo "</select>";
echo "</body>";
echo "</html>";
行动方:
$prov_town = filter_input(INPUT_POST, 'prov_town');
$parts = explode('_', $prov_town);
$town = $parts[0];
$province = $parts[1];
它插入了Town但没有插入省我得到了这个错误
未定义的偏移量:
中的1错误出现在我的代码额外的值部分&#34;&#34;在不需要的地方添加了上面的注释
答案 0 :(得分:0)
无法从一个选择输入字段传递两个不同的属性。
您需要有两个不同的选择。一个用于省,一个用于城镇。或者,您可以使用分隔符将两者串在一起,并在处理POST参数的脚本上展开值。
例1:
<select name="province">
<option value="detroit">Detroit</option>
</select>
<select name="town">
<option value="new york">New York</option>
</select>
例2:
<select name="province_and_town">
<option value="provincename_townname">Province - Town</option>
</select>
$province_and_town = filter_input(INPUT_POST, 'province_and_town');
$parts = explode('_', $province_and_town);
$province = $parts[0];
$town = $parts[1];
在上面的例子中,它预期省和镇由_分隔。然后,您在该分隔符上展开输入字符串,并获取这两个值的数组。这不是一个完美编写的代码,并且如果任何值包含_,或者如果缺少其中一个值,则可能会失败,但它应该让您了解解决方案。
修改强>
使用单个查询的结果将数据填充到多个选择中是没有问题的。例如:
$result = $conn->query("select province, town FROM areas");
$areas = $result->fetch_all(MYSQLI_ASSOC);
if(!empty($areas)){
echo "<select name=\"town\">";
foreach( $areas AS $area ){
echo "<option value=\"{$area['town']}\">{$area['town']}</option>";
}
echo "</select>";
echo "<select name=\"province\">";
foreach( $areas AS $area ){
echo "<option value=\"{$area['province']}\">{$area['province']}</option>";
}
echo "</select>";
}