使用PHP函数使用数组创建动态下拉菜单:下拉列表不会填充

时间:2012-07-14 01:31:38

标签: php arrays function drop-down-menu

我正在尝试使用PHP动态构建下拉菜单。这个想法是:元素是由一个调用和数组的循环组成的。如果数组元素与会话中保存的数据匹配,则它将“selected”属性添加到标记,这意味着该页面显示先前选择的选项。

我试图在这里包含一整套代码,从定义会话数据中的变量到回显表单元素的HTML。

它目前无效 - 下拉菜单出现,但是空白,没有选项。我用ideone调试它,它似乎运行成功,我可以'看看我哪里出错了,但这是我的第一个PHP功能!所以我确定我以某种方式搞砸了它。)

任何帮助都非常感激。

    <?php
    session_start();
    //if the session data has been set, then the variable $sv_02 is defined 
    //as the data held in the session under that name, otherwise it is blank
    if (isset($_SESSION['sv_02'])) {$sv_02=$_SESSION['sv_02'];} else {$sv_02="";}

    //define the array
    $dm_sv_02 = array('-Year','-2012','-2011','-2010','-2009');

    //create the function 
    function dropdown($dropdownoptions, $session_data) 
    { 
    foreach($dropdownoptions as $dropdownoption){
           if($session_data == $dropdownoption){
            echo '<option value="' . $dropdownoption . '" selected>' . $dropdownoption . '</option>';
           } else {
            echo '<option value="' . $dropdownoption . '">' . $dropdownoption . '</option>';
           }
          }

    }
    //echo the HTML needed to create a drop down, and populate it with 
    //the function which should create the <option> elements
    echo '<select name="sv_02">';
    dropdown($dm_sv_02, $sv_02);
    echo '</select>';
    ?>

2 个答案:

答案 0 :(得分:0)

试试这个:

foreach ($dropdownoptions as $dropdownoption) {
  echo ($dropdownoption == $sv_02) ? "<option selected=\"selected\" value=\"$dropdownoption\">$dropdownoption</option>" : "<option value=\"$dropdownoption\">$dropdownoption</option>";}

答案 1 :(得分:0)

事实证明这是因为我使用{smarty}标签来构建我的php,代码是按照书面编写的,但只有当它全部包含在一个smarty标签中时才有用,我不确定我理解为什么会出现这种情况,但无论如何都是通过将其全部包含在一个标签中来解决的。