【问题标题】:PHP not display all drop down boxesPHP不显示所有下拉框
【发布时间】:2013-04-29 13:50:52
【问题描述】:

我有四个显示数据库信息的下拉框,但它只显示四个中的两个。 http://www.cupboard2stomach.com/php/get.php?dropdown1=bread&dropdown3=chicken&Submit=Submit 这是目前的样子。

我的代码有问题吗?

Ingredient 1:<select name= "dropdown1" id = "drop1"/>
    <?php
    while ($line = mysql_fetch_array($result1, MYSQL_ASSOC)) {
    ?> 
    <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
    <?php
    }
    ?>

    Ingredient 2:<select name = "dropdown2" id = "drop2"/>
    <?php
    while ($line = mysql_fetch_array($result2, MYSQL_ASSOC)) {
    ?> 
    <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
    <?php
    }
    ?>

    Ingredient 3:<select name = "dropdown3" id = "drop3"/>
    <?php
    while ($line = mysql_fetch_array($result3, MYSQL_ASSOC)) {
    ?> 
    <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
    <?php
    }
    ?>


    Ingredient 4:<select name = "dropdown4" id = "drop4"/>
    <?php
    while ($line = mysql_fetch_array($result4, MYSQL_ASSOC)) {
    ?> 
    <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
    <?php
    }
    ?>

【问题讨论】:

标签: php


【解决方案1】:

您正在尝试对您的选择元素 (&lt;select /&gt;) 使用 XML 样式的自闭合标记语法,这是错误的,浏览器将通过忽略 / 来执行错误恢复。

因此,您的所有选择元素都缺少结束标记 (&lt;/select&gt;)。所以你试图将你的子序列选择元素放在第一个元素中。

即使您可以在任意元素上使用自闭合标记语法,选项元素也必须是它们所属的选择元素的后代!

validator 会为您挑选这个。

【讨论】:

    【解决方案2】:

    这是因为您没有关闭 select

    比如改成这样:

    Ingredient 1:<select name= "dropdown1" id = "drop1"/>
        <?php
        while ($line = mysql_fetch_array($result1, MYSQL_ASSOC)) {
        ?> 
        <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
        <?php
        }
        ?>
    </select>
    

    【讨论】:

      【解决方案3】:

      关闭您的选择标签

          Ingredient 1:<select name= "dropdown1" id = "drop1"/>
              <?php
              while ($line = mysql_fetch_array($result1, MYSQL_ASSOC)) {
              ?> 
              <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
              <?php
              }
              ?>
             </select>
              Ingredient 2:<select name = "dropdown2" id = "drop2"/>
              <?php
              while ($line = mysql_fetch_array($result2, MYSQL_ASSOC)) {
              ?> 
              <option value="<?php echo $line['ingredientname'];?>"> <?php echo $line['ingredientname'];?> </option>
              <?php
              }
              ?>
      </select>
      

      【讨论】:

      • 选择必须以&gt;结尾,而不是/&gt;
      • @HarshitTailor 如果我希望我的下拉框在顶部有一个空白行,这样一开始它们什么都不显示,那么你知道我需要改变什么吗?我知道我可以在数据库表中创建一个空行,但这是不好的做法。
      【解决方案4】:

      这是因为选择它以/>结束它应该以>结束

      w3c 验证器报错

       self-closing syntax (/>) used on a non-void HTML element. Ignoring the slash and treating as a start tag.
      

      下次您应该使用http://validator.w3.org/ 来检查您的代码。

      【讨论】:

      • 并非如此。这是因为 &lt;/select&gt; 丢失(这可能是因为 OP 试图使用 /&gt; 语法代替)
      猜你喜欢
      • 2010-09-27
      • 2017-07-16
      • 1970-01-01
      • 2012-07-14
      • 2020-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多