从具有多个值的Mysql填充的下拉列表

时间:2017-10-27 07:38:17

标签: php mysql

我有一个包含以下代码的下拉列表

$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;在不需要的地方添加了上面的注释

1 个答案:

答案 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>";
}