1

我有一种用于添加和编辑的表单。我的目标是在添加表单上预先选择 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>';
}
?>
4

3 回答 3

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>';
}
于 2012-11-06T18:34:57.260 回答
0

只是几个可能的问题:

  1. 您永远不会重置变量$selected。这意味着从正确的项目开始,每个项目都将设置属性“已选择”。

  2. 您使用我认可的严格===运算符,但如果$item_data->item_sort_order不包含 int 值,则此比较将不匹配。您可以使用var_dump来检查该属性的值类型。

  3. 如果您的排序顺序中有“漏洞”,$x则可能永远不会匹配排序顺序。

  4. $item_data永远不会在你的循环中设置。

于 2012-11-06T18:31:53.957 回答
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>';
}
于 2012-11-06T18:37:53.237 回答