0

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

然后我将 $item 显示为用户可以修改的大表单(以修复解析器中的任何错误)。特别是,我将重点放在包含解析器提取的“类型”的 $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] 是包含解析器提取的“类型”的数组。

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

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

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

Entry Form
Facebook
Entry Form

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

Entry Form
Facebook
  - Entry Form

如您所见,这是因为 Entry Form 是 Facebook 的顶部菜单项和子菜单。

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

由于我的代码目前是,选择了条目表单的第二个实例。

我如何调整代码,以便如果 $item[3] == 'entry form' (目前如此),那么将选择 FIRST Entry Form?

4

2 回答 2

1

首先是我不明白你为什么使用这个:

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

您可以简单地使用代码 brlowe,它的作用完全相同:

<?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 }?>
于 2013-01-02T18:05:43.900 回答
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。

于 2013-01-02T18:40:04.860 回答