【问题标题】:Dynamically populating two <select> list from SQL database从 SQL 数据库中动态填充两个 <select> 列表
【发布时间】:2014-10-02 19:51:47
【问题描述】:

我有一个关于如何从 SQL 数据库中填充两个单独列表的查询,我的数据库如下所示;

shoe_id      shoe_type       shoe_color
_________________________________________
001          Hi-Top          Blue
002          Loafer          Black
003          Brogue          Brown
004          Brogue          Black
005          Loafer          Brown
006          Loafer          Red
007          Hi-Top          Yellow

我想知道如何创建一个选择列表来显示 shoe_type 和第二个根据 shoe_type 动态变化来显示 shoe_color。

例如,在第一个选择列表中选择了“Brogue”,然后在第二个选择列表中同时显示“Brown”和“Black”。

提前谢谢你。

【问题讨论】:

  • AJAX 会产生这种动态负载。
  • 您可以在shoe_type更改时重新加载页面,然后加载shoe_color,或者您需要使用客户端,即。 javascript,可能还有 ajax,将更改为 shoe_color

标签: php sql select


【解决方案1】:

如果是预取的,你可以根据你的数据库生成这个结构:

shoes array(3) {
    ['Hi-Top'] => array(2) {
        [1] => 'Blue',
        [7] => 'Yellow'
    }
    ['Loafer'] => array(3) {
        [2] => 'Black',
        [5] => 'Brown',
        [6] => 'Red',
    }
    ['Brogue'] => array(2) {
        [3] => 'Brown',
        [4] => 'Black'
    }
}

在 HTML 生成器中:

<select name="type">
    <?php foreach($shoes as $shoeType => $shoeColors): ?>
        <option value="<?= $shoeType ?>" <?php if(isset($_POST['type']) && $_POST['type'] == $shoeType) echo 'selected="selected"'?>><?= $shoeType?></option>
    <?php endforeach; ?>
</select>
<select name="color">
    <?php if (isset($_POST['type']) foreach($shoes[$_POST['type']] as $k => $v): ?>
        <option value="<?= $k ?>" <?php if(isset($_POST['color']) && $_POST['color'] == $k) echo 'selected="selected"'?>><?= $v ?></option>
    <?php endforeach; ?>
</select>

现在,如果您可以在会话中保存 $_POST['type'] 和 $_POST['color'] 以供以后使用,那么您根本不需要 JS,即使 JS 在浏览器。

但是如果你喜欢,你可以使用 JS。 Json 对其进行编码并在您的 javascript 中使用它。而不是唯一的方法是使用 AJAX。

var shoes = <?= json_encode($shoes) ?>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-08-02
    • 2013-07-27
    • 1970-01-01
    • 2021-10-29
    • 1970-01-01
    • 2016-02-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多