2012-07-14 44 views
0

我想动态地使用PHP构建下拉菜单。这个想法是:元素是从一个调用和数组的循环中形成的。如果数组元素与会话中保存的数据相匹配,那么它会将“selected”属性添加到标记,这意味着该页面显示先前选择的选项。使用PHP函数使用数组创建动态下拉菜单:下拉不填充

我试图在这里包含一组完整的代码,从定义会话数据的变量到回应表单元素的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>'; 
    ?> 
+0

我猜这只是代码的一部分,但你有session_start();在原始代码中的<?php之后? – 2012-07-14 01:41:10

+0

啊是的 - 好点,应该提到的是:我有我的所有页面作为一个包括的PHP。谢谢!我将编辑我的帖子 – Gideon 2012-07-14 06:37:49

+0

如果您查看生成的页面的来源,您会得到什么? – 2012-07-14 07:32:11

回答

0

事实证明,这是我使用{智者}标签来建立我的PHP事实的结果,代码是书面,但只有当它是工作全都包含在一个smarty标签中,我不确定我是否理解为什么应该这样,但无论如何它通过将其全部包含在一个标签中来解决它。

0

试试这个:

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

不幸的是,它产生了和以前一样的结果。谢谢你的想法。任何其他想法? – Gideon 2012-07-14 06:57:21

+0

也许你可以创建一个小提琴或包括你的代码的其余部分... – Drewness 2012-07-14 16:36:53