PHP从数据库填充下拉菜单值

PHP从数据库填充下拉菜单值,php,mysql,forms,Php,Mysql,Forms,我是一个试图从数据库中输出下拉菜单值的初学者。我已经从数据库自动生成了值,但我遇到的问题是我希望显示所选的值。 理想情况下,我尝试更新一个主题,我希望在HTML页面中显示每个项目都可以更新的数据。我需要的是能够选择被选中的主题的“位置” 这是我的密码: <p>Position: <select name="position"> <?php $sel_s

我是一个试图从数据库中输出下拉菜单值的初学者。我已经从数据库自动生成了值,但我遇到的问题是我希望显示所选的值。 理想情况下,我尝试更新一个主题,我希望在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>
您似乎依赖于$count作为某种保持静态的内部ID;考虑到它只是一个单调推进的整数,这似乎是一个危险的命题。但是,如果您对此感到满意,那么只需将最后一条echo语句中的值更改为subject name,而不是$count。相反,我鼓励您使用对数据库有意义的内容-例如,有些人创建一个名为subject_id的自动增量字段,并将其设置为key off;其他人喜欢使用s

我通常也会建议使用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>';
    }

他不止两行,只是没有标记为代码,所以HTML被删除了;在循环之前,看到你得到的值了吗?是的,我看到了。它确实显示了数字。唯一不起作用的是选择的主题位置。谢谢你们的帮助!我刚刚意识到我犯了一个错误。我有一个函数get_all_subject,它包含一个数组,数组中有一个名为$sel_subject的变量。在使用新变量命名函数时,比如$subject\u set捕获函数get\u all\u subjects,而不是使用不同的名称,我仍然将其命名为$sel\u subject,它已经包含在函数中。这就是它不起作用的原因。谢谢。真正的问题是表单是从数据库自动生成的,在数据库中它显示主题的位置,如1、2、3、4、5。在这种情况下,我所需要的只是能够选择所选对象的位置。例如,如果选择位置2,则要显示的位置的值应为2。