根据所选数据库记录设置下拉列表的值

时间:2018-07-20 16:48:25

标签: php jquery mysql dropdown

我正在使用HTML和PHP在页面上的mysql数据库中选择和显示记录。当我单击一条记录时,它将打开一个编辑窗口。此新窗口显示所选一个记录的所有内容,并且可以更新所有内容。然后将更新保存到该记录的数据库中。

我的问题是:字段之一在编辑窗口中显示为下拉列表。使用页面上的选择填充下拉列表(类似于以下内容)。单击特定记录以打开编辑窗口时,我总是在下拉菜单中看到第一个选项,而不是与记录相关的选项。
我需要能够从下拉列表中看到与我正在编辑的记录相关的选项。

例如,如果我打开一条记录进行编辑,并且表中保存的值为“ 3”,则我希望“ 3”出现在下拉列表中。无论保存到表中的实际值是多少,还是始终显示为“ 1”(在下面的示例中选择),我总是会看到第一个选项。有人可以给我一些指示吗?我想使用jquery来做到这一点。

<select name="itemst" id="itemst">
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
</select>

选择从表中获取必要的字段 其中i.item_description = d.id和i.id ='“。$ _ GET ['id']。”'“;

这很好。如果我想单独显示与该下拉列表相关的特定记录/行的字段内容,则可以。例如,echo $ r_item ['item_status']。这很好。我只需要能够在编辑表单打开并显示下拉菜单时从db显示中获取该值。

3 个答案:

答案 0 :(得分:1)

您必须在HTML中设置所选属性。

在PHP中,您可以执行此操作(在for / foreach循环内部):

<option value="1" <?=$row['yourData'] == '1' ? ' selected="selected"' : '';?> >1</option>

答案 1 :(得分:0)

我使用以下方法使其工作。感谢您的建议。

               $status = $r_item['item_status'];

               <select id="item_status" name="item_status">
                   <option value="" <?php if (!empty($status) && $status == '' ) echo 'selected = "selected"'; ?>></option>
                   <option value="1" <?php if (!empty($status) && $status == '1')  echo 'selected = "selected"'; ?>>1</option>
                   <option value="2" <?php if (!empty($status) && $status == '2')  echo 'selected = "selected"'; ?>>2</option>
                   <option value="3" <?php if (!empty($status) && $status == '3')  echo 'selected = "selected"'; ?>>3</option>
               </select>

另一种解决方案

以上方法有效,但此后我对其进行了以下更新:

               $status = $r_item['item_status'];

               <select name="item_status" id="item_status">
                   <option value="1">1</option>
                   <option value="2">2</option>
                   <option value="3">3</option>
               </select>

使用JQuery的以下行:

$('#item_status').val('<?=$r_item['item_status'];?>');

并且在我的标头中包含了jquery引用。

答案 2 :(得分:-1)

如果我正确理解您正在使用的是编辑表单,并且您正在编写 n ,则此字段需要显示数据库中记录(行)的特定列的值<option>用于<select>标签,您可以这样做。

在示例中,该字段将被称为“ numeric_field”(在数据库中)

$options = [1,2,3,4,5,6];  // i guess your options are hardcoded or from a table
                           // with the different options for a record
$dbRecord = function_that_returns_the_data_of_the_row_with_the_id($id);
echo "<form action="#"...>";
echo "<input.....>";    //Guess your record has other values
echo "<input.....>";    //

echo '<select name="itemst" id="itemst">'; //select
//for the options
foreach($options as $option){
    if($dbRecord["numeric_field"] == $option){
         echo '<option value="$option" selected>$option</option>';
         //this is the selected option for the db record 
   } else {
         echo '<option value="$option">$option</option>';
   }
}
echo '</select>';

//add any other input you need
echo '<input...>';
echo '</form>';

希望我的回答对您有所帮助。