下拉列表未加载使用PHP数组的编辑表单上的选项


drop down list not loading option on editform using PHP array

我有一个带有编辑链接的记录列表。当我单击链接时,它会将我带到一个包含数据库结果的编辑页面。

我可以成功检索所有文本框的数据。

我正在尝试通过一个无法工作的数组来实现这一点。

这是我在代码片段中的实现:

        # $data is from $data=mysqli_fetch_array($result)

                        $product=$data['product'];
                        echo $product.'<br />';
        #initializing array to empty
           $product_list=array("Remote"=>" ","TV"=>" ","Box"=>" ");
        if (array_key_exists($product,$product_list)){

            $product_list["'$product'"] =  'selected="selected" ';

            }
                            print_r($product_list);

        #combo box 
              <select name="products">
                        <option value="select">Select</option>
                        <option value="Remote"<?php echo @$product_list["'$product'"] ?>>Remote</option>
                        <option value="TV" <?php echo @$product_list["'$product'"] ?>> TV</option>
                        <option value="Box" <?php echo @$product_list["'$product'"] ?>> Box</option>
                    </select>

在显示所有记录的页面中,如果我在具有产品"远程"的记录上点击编辑,我会得到以下输出(根据上面的 echo 语句):

Remote
Array ( [Remote] => [TV] => [Box] => ['Remote'] => selected="selected" ) 

HTML 表单显示:

 <select name="products">                   
    <option value="select">Select</option>
        <option selected="selected" value="Remote">Remote</option>
        <option selected="selected" value="TV"> TV</option>
        <option selected="selected" value="Box"> Box</option>
</select>

在编辑页面中,如果我选择具有产品"TV"的记录,我会得到以下输出:

 TV
 Array ( [Remote] => [TV] => [Box] => ['TV'] => selected="selected" ) 

HTML 输出与上述相同。它始终将选项设置为最后一个产品,即"Box"。

有人可以建议我如何解决这个问题吗? 谢谢!

这个:

$product_list["'$product'"] =  'selected="selected" ';

应该是

$product_list[$product] =  'selected="selected" ';

在有$product_list["'$product'"]的其他地方,您也应该删除引号。

编辑:

这里

<select name="products">
    <option value="select">Select</option>
    <option value="Remote"<?php echo @$product_list["'$product'"] ?>>Remote</option>
    <option value="TV" <?php echo @$product_list["'$product'"] ?>> TV</option>
    <option value="Box" <?php echo @$product_list["'$product'"] ?>> Box</option>
</select>

您没有使用任何循环并尝试在每个项目中获取 $product_list[$product] 的值 - $product每行中始终相同,并且等于从 MySQL 获取的最后一个值。

您必须在每行中使用正确的索引(即。 <?php echo $product_list['TV']; ?> ) 或正确的方式 - 使用循环:

<select name="products">
    <option value="select">Select</option>
    <?php foreach($product_list as $product_name => $selected): ?>
    <option value="<?= $product_name ?>" <?= $selected ?>><?= $product_name ?></option>
    <?php endforeach; ?>
</select>