如何使用另一个MySQL表中的现有数据填充预先选择的下拉字段?

时间:2017-10-12 08:08:19

标签: php jquery mysql forms

在我的数据库中,我有2个表:

tabels 为了插入数据,我有一个表单,用于填充表formulation中的下拉选项。这就是配方下拉列表的插入形式:

<?php
$formulation = '';
$query = "SELECT * FROM formulation";
$result = mysqli_query($connect, $query);
while ($row = mysqli_fetch_array($result)) {
    $formulation .= '<option value="' . $row["formulationID"] . '">' . $row["formulation_name"] . '</option>';
}
?>

<select>
    <option value="">Select formulation</option>
    <?php echo $formulation; ?>
</select>

现在我正在处理'更新'表单。但我的问题是如何使用formulation表中的数据填充“配方”字段下拉列表(如插入表单),但预先选择formulation的{​​{1}}值来自name表?如下图所示: UpdateForm

我对如何构建表单有疑问。我该如何处理此表格?

items

提前感谢您的建议。

3 个答案:

答案 0 :(得分:2)

注意: 我不是mysqli的用户,所以可能会出现一些错误,但您会明白这一点。这不会解决更新部分,只是填充部分

由于您正在编辑某个项目,我会假设您有一些东西可以获得该项目的itemID

<?php
$sql = "SELECT * FROM items WHERE itemID = ?";
$query = $connect->prepare($sql);
$query->bind_param("s", $yourItemID);
$query->execute();
$result = $query->fetch_assoc();
$itemName = $result['name'];
$itemFormulation = $result['formulation_fk'];

//now you have the name and the formulation of that certain item
?>

<form action=" " method="POST">
    <div>
        <label>Name</label>
        <input type="text" value="<?php echo $itemName; ?>"><br>
        <label>Formulation</label>
        <select >
            <?php
                $query = "SELECT * FROM formulation";
                $result = mysqli_query($connect, $query);
                while ($row = mysqli_fetch_array($result)) {
            ?>
                <option value="<?php echo $row['formulationID']; ?>" <?php echo ($row['formulationID'] == $itemFormulation) ? 'selected' : ''; ?>>
                    <?php echo $row['formulation_name']; ?>
                </option>
            <?php
                }
            ?>
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>

我更改了代码以更好地适应问题,可能存在拼写错误,只是评论澄清

答案 1 :(得分:0)

如果我理解了您的问题......您必须将结果放入字符串中。例如:

<?php
$output = array('data' => array());
$sql = "SELECT * FROM items";
$query = $connect->query($sql);

$option = '';
while ($row = $query->fetch_assoc()) {
     $name=$row['name'],
    $option.='<option value="$name">$name</option>'
}
echo json_encode($output);
?>

<form action=" " method="POST">
    <div>
        <label>Name</label>
        <input type="text"><br>
        <label>Formulation</label>
        <select >
            <?=$option?>
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>

我希望能得到帮助

答案 2 :(得分:0)

This should do the trick:

<?php
$itemsSql = "SELECT * FROM items WHERE itemId = 5";
$itemQuery = $connect->query($sql);
$item = $itemQuery->fetch_assoc();

$formulationsSql = "SELECT * FROM formulation";
$formulationsQuery = $connect->query($sql);
$formulations = $itemQuery->fetch_assoc();
?>

<form action="updateItem" method="POST">
    <div>
        <label>Item Name</label>
        <input type="text" value="<?= $item[0]['name']; ?>"><br>
        <label>Formulation</label>
        <select>
            <?php foreach($formulations as $formulation){
            echo '<option value="'. $formulation['formulationId'].'">' .
                   $formulation['formulation_name'] . '</option>';
            } ?>
        </select>
    </div>
    <button type = "submit">Save changes</button>
</form>