变量作为表单下拉列表中的默认值?

时间:2013-01-02 17:41:05

标签: php html forms drop-down-menu selected

我有一个解析器,它将信息提取到array $ item中。从我的数据库中,我将所有结果拉到我将“类型”存储到数组$ getFormats中。

然后我将$ item显示为一个用户可以修改的大表单(以修复解析器中的任何错误)。在partiular中,我讨论$ item [3],它包含解析器提取的“类型”。

我的表单在我的下拉列表旁边显示$ item [3],其中包含数据库中包含的可能“类型”。这里的目标是允许用户匹配或更改解析器找到的“类型”与数据库中包含的“类型”。

显然,我希望默认下拉值是一个与数据库中已有的值相匹配的值。如果没有匹配,则默认为空,供用户自己选择合适的类型。

下面的代码演示了我拥有的内容。显然,我错了,因为它不起作用。

<form>
    <?php
    foreach($articles as $item) {
     ?>

     Type: <input type="text" name="typeparsed" value="<?php echo $item[3]; ?>">
           <select name="typechoose" value="<?php echo $value; ?>">
                <?php 
                        foreach ($getFormats as $format) {
                            $selected = '';
                            if($item[3] == 'entry form' && $format->name == 'Entry Form'){ 
                                $selected = 'selected';
                            }
                            echo "<option value='".$format->name."' ".$selected.">".$format->name."</option>";
                        }
                    ?>
           </select>
    <?php }?>
</form>

$ item [3]是包含解析器提取的“type”的数组。

$ format-&gt; name是包含从数据库中提取的下拉选项的数组。

上面的代码有效但我的问题是$ format-&gt; name包含两个相同值的实例。

我的数据库有以下“类型”:

Entry Form
Facebook
Entry Form

这是因为wordpress存储分层选项的方式。在我的网站上,这些值实际上如下:

Entry Form
Facebook
  - Entry Form

正如您所看到的,这是因为Entry Form是顶级菜单项和Facebook的子菜单。

因此,当我尝试将一种类型的条目表单与条目表单匹配时,我在尝试确定哪个条目表单是正确的选择时遇到了问题。

正如我的代码目前,选择了第二个输入表格实例。

我如何调整代码,以便如果$ item [3] =='报名表'(目前为止),那么将选择FIRST报名表?

2 个答案:

答案 0 :(得分:1)

首先,我不明白为什么要使用它:

<?php
foreach($articles as $item) {
    if ($item[3] == 'entry form') {
        $value = 'entry form';
    } else {
        $value = $item[3];
    }
 ?>

你可以简单地使用下面的代码,它会做得非常相似:

<?php
foreach($articles as $item) {
   $value = $item[3];
 ?>

要匹配所选元素,请执行以下操作:

Type: <input type="text" name="typeparsed" value="<?php echo $item[3]; ?>">
       <select name="typechoose" value="<?php echo $value; ?>">
          <?php 
           foreach ($getFormats as $format) {
               $selected = '';
               if($value == $format->name){ $selected = ' selected="selected" '; }
               echo "<option value='".$format->name."' ."$selected".>".$format->name."</option>";
           }
          ?>
       </select>
<?php }?>

答案 1 :(得分:0)

贝克斯你已经改变了你的问题我将另外给出一个简单的回答:只要两个“报名表”具有相同的名称,你就不会确定。如果您可以检查它们的数据库ID,请尝试使用它,否则请更改它们的名称。

<?php // $value is actualy ID of the element; ?>
Type: <input type="text" name="typeparsed" value="<?php echo $item[3]; ?>">
   <select name="typechoose" value="<?php echo $value; ?>">
      <?php 
       foreach ($getFormats as $format) {
           $selected = '';
           if($value == $format->id){ $selected = ' selected="selected" '; }
           echo "<option value='".$format->id."' ."$selected".>".$format->name."</option>";
       }
      ?>
   </select>

作为所选元素的值传递ID。