2014-05-11 89 views
1

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

这里是我的代码:

<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

他有两个以上的行,它只是没有标记为“代码”,所以HTML被丢弃。 – TML

+0

你可以在循环前做一个'echo $ sel_subject ['position'];'看看你得到的值吗? –

+0

是的,我做到了。它确实显示数字。唯一不起作用的是选定的主题位置。 – Babangida

回答

0

你似乎依靠$count是一些内部的ID保持不变;鉴于它只是一个单调递增的整数,这似乎是一个冒险的命题。但是,如果您对此感到满意,则只需将最后一个echo语句中的值更改为主题名称而不是$ count。相反,我会鼓励你使用对数据库有意义的东西 - 例如,一些人创建了一个名为subject_id的auto_increment字段,并将其键入;其他人喜欢使用UUID s。

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

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

谢谢。真正的问题是表单是从数据库自动生成的,它显示了主题的位置,如1,2,3,4,5。在这种情况下,我需要的是能够选择主题的位置选择。例如,如果选择位置2,则要显示位置的值应为2。 – Babangida