我有一个带有编辑链接的记录列表。当我单击链接时,它会将我带到一个包含数据库结果的编辑页面。
我可以成功检索所有文本框的数据。
我正在尝试通过一个无法工作的数组来实现这一点。
这是我在代码片段中的实现:
# $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>