我有一个用于添加和编辑的表单。我的目标是在添加表单上预先选择count(items)+1值。在编辑表单上,我需要它在数据库匹配for循环的增量时从数据库中预先选择它。现在,$ selected值无效,我不知道如何为添加表单实现该部分。有什么想法吗?
<?php for($x = 1; $x <= count($items)+1; $x++)
{
if (isset($item_data))
{
$selected = $item_data->item_sort_order === $x ? ' selected="selected"' : '';
}
echo '<option value="'.$x.'"';
if (isset($selected)) { echo $selected; }
echo '>'.$x.'</option>';
}
?>
答案 0 :(得分:1)
我认为您每次都需要重置$selected
变量。一旦设定,它仍然如此。试试这个:
for($x = 1; $x <= count($items) + 1; $x++) {
echo '<option value="' . $x . '"';
if ((isset($item_data) && $item_data->item_sort_order === $x)
echo ' selected="selected";
echo '>' . $x . '</option>';
}
修改强>
for($x = 1; $x <= count($items) + 1; $x++) {
echo '<option value="' . $x . '"';
if ((isset($item_data) && (int)$item_data->item_sort_order == $x)
echo ' selected="selected";
echo '>' . $x . '</option>';
}
答案 1 :(得分:0)
只有几个可能的问题:
您永远不会重置变量$selected
。这意味着从正确的项目开始,每个项目都将设置属性“已选择”。
您使用我认可的严格===
运算符,但如果$item_data->item_sort_order
不包含int值,则此比较将不匹配。您可以使用var_dump
检查该属性的值和类型。
如果您的排序顺序中存在“漏洞”,$x
可能永远不会与排序顺序匹配。
永远不会在您的循环中设置$item_data
。
答案 2 :(得分:0)
它会改变什么吗?
for($x = 1, $length = count($items) + 1; $x <= $length; $x++) {
echo '<option value="' . $x . '"' .
(isset($item_data) && ($item_data->item_sort_order === $x) ? ' selected="selected"' : '') .
'>' . $x . '</option>';
}