如何设置<select>的选中选项

How to set the selected option of <select>

我正在尝试让我的 select 选项在下拉列表中显示来自我的数据库的 selected 类别。当我点击提交按钮时,我只能让它显示出来。

<?php

    (isset($_POST["kategori"])) ? $kategori = $_POST["kategori"] : $kategori=1;
    $sql = "SELECT * FROM kategori" 
    $result = mysqli_query($db, $sql);
    while($produkt = mysqli_fetch_array($result)) {

?>

 <option <?php if ($kategori == $produkt['kategori_id'] ) echo 'selected'; ?> 
 value="<? echo $produkt['kategori_id']; ?>">
 <? echo $produkt['kategori_navn']; ?></option>

<?php
}
?>

显然我是从 POST 获取值的,这就是为什么当我点击提交时它首先显示类别的原因。

我需要用产品的产品 ID 从我的数据库中创建一个 select,并使用它的 ID 来标记设置的类别。

我不知道该怎么做。

试一试

$sql = "SELECT * FROM kategori" 
$result = mysqli_query($db, $sql);

while($produkt = mysqli_fetch_array($result)) {

     if ( $kategori == $produkt['kategori_id']  ) : ?>
        <option selected="selected" value="<?=$produkt['kategori_id']; ?>"><?=$produkt['kategori_navn']; ?></option>
     <?php else: ?>
        <option value="<?=$produkt['kategori_id']; ?>"><?=$produkt['kategori_navn']; ?></option>
     <?php endif; ?>

<?php } ?>

其中 $kategori 是具有先前选择的选项值的变量。

只需尝试这样添加:

  <option <?php if ($kategori == $produkt['kategori_id'] ) ?> value="<? echo $produkt['kategori_id']; ?>" selected="selected"><? echo $produkt['kategori_navn']; ?></option>

试试这样的查询: $sql="select * from kategori where kategori_id IN ($kategori)";

您将自动获得匹配的类别,您可以 select 无需使用 while 循环