[英]How can I pre-select an option in a select menu based on a value stored in the database?
I have a number of dropdown lists, which update a database, however once updated the first object on the list is displayed, rather than the actual object selected. 我有许多下拉列表,它们会更新数据库,但是一旦更新,就会显示列表上的第一个对象,而不是所选的实际对象。 What is the best way to fix this?
解决此问题的最佳方法是什么?
Code sample: HTML code sample 代码示例:HTML代码示例
<select name="sleeps">
<option value="0">Sleeps</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4'>4</option>
</select>
This is generated using: 这是使用以下命令生成的:
<?php
for ($x = 1; $x <=10; $x++) {
echo "<option value='$x'>$x</option>";
}
?>
Desired result 所需结果
<select name="sleeps">
<option value="0">Sleeps</option>
<option value='1'>1</option>
<option value='2'>2</option>
<option value='3'>3</option>
<option value='4' selected>4</option>
</select>
for ($x = 1; $x <=10; $x++) {
$sel = ($x == $the_value) ? " selected='selected'" : "";
echo "<option value='$x'$sel>$x</option>";
}
For the record, mixing your PHP and HTML like this is very messy and not easily maintained. 记录下来,像这样将PHP和HTML混合使用非常混乱并且不容易维护。
Edit: Since you're likely new to PHP, I should mention this is called the ternary operator which is just a shorthand way of writing an if statement. 编辑:由于您可能不熟悉PHP,因此我应该提到这称为三元运算符 ,这只是编写if语句的一种简便方法。
Figured it out :) 弄清楚了 :)
Note - $echo and $title are there to allow changes in order to allow flexibility. 注意-可以通过$ echo和$ title进行更改,以实现灵活性。
function select_dropdown($sql, $echo, $title) {
include 'connect.php';
$id = $_GET['id'];
$select = $conn->prepare($sql);
$select->bind_param('s', $id);
$select->execute();
$select->store_result();
if ($select->num_rows > 0) {
$meta = $select->result_metadata();
echo "<select name='$title'>
<option value='0'>$title</option>\n";
while ($field = $meta->fetch_field()) {
$params[] = &$row[$field->name];
}
call_user_func_array(array($select, 'bind_result'), $params);
while ($select->fetch()) {
for ($x = 1; $x <=10; $x++) {
if ($row[$echo] == $x) {
echo "<option value='$row[$echo]' selected>$row[$echo]</option>";
} else {
echo "<option value='$x'>$x</option>";
}
}
}
$select->close();
echo "</select>";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.