Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 变量作为表单下拉列表中的默认值?_Php_Html_Forms_Drop Down Menu_Selected - Fatal编程技术网

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

Php 变量作为表单下拉列表中的默认值?,php,html,forms,drop-down-menu,selected,Php,Html,Forms,Drop Down Menu,Selected,我有一个解析器,它将信息提取到数组$item中。从我的数据库中,我将所有结果存储到数组$getFormats中 然后,我将$item显示为一个大表单,用户可以修改它(以修复解析器中的任何错误)。在第二部分中,我将重点讨论$item[3],它包含由解析器提取的“类型” 我的表单在包含数据库中可能包含的“类型”的下拉列表旁边显示$item[3]。这里的目标是允许用户将解析器找到的“类型”与数据库中包含的“类型”进行匹配或更改 显然,我希望默认下拉列表值与数据库中已有的值相匹配。如果没有匹配项,则默认

我有一个解析器,它将信息提取到数组$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>
这是因为wordpress存储分层选项的方式。在我的网站上,这些值实际上如下所示:

Entry Form
Facebook
  - Entry Form
正如你所看到的,这是因为条目表单是Facebook的一个顶部菜单项和一个子菜单

因此,当我试图将一种类型的报名表与报名表进行匹配时,我在试图确定哪种报名表是正确的选择时遇到了一个问题

由于我的代码是当前的,所以选择了第二个输入表单实例


我如何调整代码,以便如果$item[3]=='entry form'(当前状态),那么将选择第一个entry form?

首先,我不理解您为什么使用此选项:

<?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 }?>

键入:因为您已经更改了您的问题,所以我将给出另一个答案,答案很简单:只要两个“报名表”的名称相同,您就不会确定。如果您可以检查他们的数据库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>


类型:if($item[3]='entry form'){$value='entry form';}的可能重复项{$value=$item[3];}将始终将$value设置为'entry form'。原因是if语句将展开并检查$item是否[3}等于其他值,并根据这些值执行不同的操作。显然,在它工作之前,我不会展开它。啊,好吧。你检查了顺序代码了吗?它会为你的问题提供解决方案。它不工作。原因是$format->name包含的是条目表单而不是条目表单。代码会破坏整个表单,将所有字段洗牌那么,如果($value==strtolower($format->name))的话,为什么不使用PHP
strtolower()
您的解决方案被证明是正确的,但现在我需要解决修改后的问题。这是我的问题。由于我的数据库来自wordpress,我受到wordpress实现其信息的方式的限制。因此,ID是数字,并且由于我使用的是包含文本字符串的解析器,我无法匹配它们。此外,用户可以修改其名称ID保持不变时的类型,因此尝试按ID进行匹配将不起作用。我必须使用$format->name进行匹配。因此,也许您将添加自己的选项卡,在其中存储anmes和ID,以便与用户选择的anmes和ID进行比较。正如您所说,您不能延迟名称,因为字符串可以轻松更改。我的意思是,我宁愿依赖名称而不是ID,因为如果用户更改名称,则下拉列表将不会有默认值(除非用户读取名称),这很好。但是如果我依赖ID,并且用户更改名称,则我的表单将默认为不正确的名称(更改的名称),而不是找到正确的名称(如果读取为新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>