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

时间:2014-05-11 14:17:40

标签: php mysql html-form

我是初学者,试图从数据库中删除下拉菜单的值。我已经自动从数据库生成值,但我遇到的问题是我想要显示正在选择的值。 理想情况下,我试图更新我希望数据显示在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>

1 个答案:

答案 0 :(得分:0)

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

我通常建议使用foreach循环而不是for循环,因为它往往会简化代码(你不必担心维护计数器,或者创建fence post错误等)。 #39;一个简短的例子 - 我猜测你可以获得的实际数据是什么,希望你能把它推断到你实际拥有的数据。

<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>';
    }