【问题标题】:PHP Populate dropdown menu values from databasePHP 从数据库中填充下拉菜单值
【发布时间】:2014-05-11 22:39:12
【问题描述】:

我是一名初学者,试图从数据库中输出下拉菜单的值。我已经从数据库中自动生成了值,但我遇到的问题是我希望显示正在选择的值。 理想情况下,我正在尝试更新我希望将数据显示在可以更新每个项目的 HTML 页面中的主题。我需要的是能够选择正在选择的主题的“位置”。

这是我的代码:

<p>Position: 
                  <select name="position">
                  <?php 
                    $sel_subject = get_all_subjects();
                    $subject_count = mysql_num_rows($sel_subject);
                    //$subject_count+1 because we are adding a subject
                    for($count=1; $count <= $subject_count+1; $count++) {
                      echo "<option value=\"{$count}\"";
                      if($sel_subject['position'] == $count) {
                        echo " selected='selected'";
                      }
                      echo ">{$count}</option>";  
                    }
                  ?>
                  </select>

【问题讨论】:

  • 他有两行以上,只是没有标记为“代码”,所以 HTML 被丢弃了。
  • 你能在循环之前做一个echo $sel_subject['position']; 看看你得到的值吗?
  • 是的,我做到了。它确实显示了数字。唯一不起作用的是所选的主题位置。
  • 谢谢大家的帮助!我才意识到我在哪里犯了错误。我有函数 get_all_subjects(),它包含一个带有名为 $sel_subject 的变量的数组。在使用 $subject_set 之类的新变量来捕获函数 get_all_subjects 来命名函数时,我没有使用不同的名称,而是将其命名为 $sel_subject,它已经包含在函数中。这就是它不起作用的原因。

标签: php mysql forms


【解决方案1】:

您似乎依赖$count 作为一些保持静态的内部ID;鉴于它只是一个单调前进的整数,这似乎是一个冒险的提议。但是,如果您对此感到满意,您需要做的就是将最后一个 echo 语句中的值更改为主题名称而不是 $count。相反,我会鼓励你使用对数据库有意义的东西——例如,有些人创建一个名为 subject_id 的 auto_increment 字段并关闭它;其他人喜欢使用UUIDs。

我通常还建议使用 foreach 循环而不是 for 循环,因为它倾向于简化代码(您不必担心维护计数器或创建栅栏发布错误等)这里有一个简短的示例 - 我猜测您可以使用的实际数据是什么,希望您可以将其推断为您实际拥有的数据。

<p>Position: 
    <select name="position">
<?php 
    $sel_subject = get_all_subjects();
    foreach($sel_subject as $subject_num => $subject) {
        echo '<option value="', $subject_num, '"';
        if ($subject['selected']) {
             echo 'selected="selected"';
        }
        echo '>', $subject['subject_name'], '</option>';
    }

【讨论】:

  • 谢谢。真正的问题是表单是从数据库中自动生成的,它显示主题的位置,如 1、2、3、4、5。在这种情况下,我所需要的只是能够选择主题的位置选择。例如,如果选择位置 2,则要显示的位置的值应该是 2。
猜你喜欢
  • 1970-01-01
  • 2015-07-04
  • 1970-01-01
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 2015-01-01
  • 2013-08-12
  • 2023-03-07
相关资源
最近更新 更多