让我说我使用下拉列表将数据输入到mysql数据库中:
<div>
<input name="name" type="text" id="name" placeholder="Enter Name"></div>
<div>
<select name="position" id="position" type="text">
<option selected="selected">Select</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</div>
使用普通的文本字段,我可以简单地包含值字段,以便在表格中显示表格中最初输入的数据。并且当我提交表单时更改它,它会更新相关字段。
<div>
<select name="position" id="position" type="text" value="<?php echo $row_position['Position']; ?>>
<option selected="selected">Select</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</div>
所以假设我不想更新与下拉相关的字段,我该怎么做?因为会发生什么,一旦我提交表单而没有从下拉列表中选择任何选项,它会从列表中选择第一个选项,即&#34;选择&#34;选项并使用它来更新数据库中的相关字段。
答案 0 :(得分:1)
我建议至少采取两个步骤,使用户友好并实现目标:
首先,如果可用,请选择最初输入的选择:
<?php
$positions = Array("A", "B", "C");
?>
<div>
<select name="position" id="position">
<option value="-1">Select</option>
<?php
foreach($positions as $v) {
$selected = ($row_position['Position']===$v) ? "selected" : "";
echo "<option value='$v' $selected>$v</option>";
}
?>
</select>
</div>
在接收php脚本时检查您是否收到了有效选项,否则发送错误消息:
<?php
//other stuff...
if($_POST['position']>0) {
// save that value
} else {
// send error to user
}
// even more stuff..
?>
备注:在select标签中,没有type=text
或value=anything
可用。
答案 1 :(得分:1)
假设您从数据库中获取下拉选项。
注意 :数组键,变量仅用于演示目的。这可能与您的实际记录不同。
<div>
<select name="position" id="position">
<?php foreach($options as $option): ?>
<option value="<?= $option['position'] ?>" <?php if($option['position'] == $current_record['position']) { echo "selected"; } ?>> <!-- e.g. $option['id'] -->
<?= $option['name'] ?>
</option>
<? endforeach; ?>
</select>
</div>
答案 2 :(得分:0)
我所做的解决了这个问题的方法是简单地将数据库中的值添加到selectedoption或第一个选项字段。因此,默认情况下,不更改下拉列表,将选择具有数据库值的第一个选项。所以没有变化。
<div>
<div><?php echo $row_position['Position']; ?></div>
<select name="position" id="position">
<option value="<?php echo $row_position['Position']; ?>Select to Change</option>
<option value="A">A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
</div>
这为问题提供了简单或直接的解决方案。 仍然会尝试其他建议,看看它是如何发挥作用的。谢谢你们。