0

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

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

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

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

        # $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>

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

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 输出与上面相同。它总是将选项设置为最后一个产品“盒子”。

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

4

1 回答 1

1

这:

$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>
于 2012-05-13T08:10:41.300 回答