使用select元素添加Edit Form

时间:2012-11-06 18:27:07

标签: php

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

3 个答案:

答案 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)

只有几个可能的问题:

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

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

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

  4. 永远不会在您的循环中设置$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>';
}