您好我有一个下拉菜单,在选择时执行Ajax / JavaScript将所选值放入数据库中。我希望下次使用菜单打开页面时选择drop dowm选项从数据库值中提取。这样,用户将知道数据库中选择的内容。
这是我的drop dowm菜单的代码:
<?php echo "<select name='status' id='$id' idc='$idc'>" ?>
<option value="">Option:</option>
<option value="val1">Val1</option>
<option value="Val2">Val2</option>
</select>
从菜单中存储数据库内部信息的功能是:
<script>
$(document).ready(function(e) {
$('select[name=status]').change(function(){
selectstatus = $("select[name=status]").val();
var id = $(this).attr('id');
var idc = $(this).attr('idc');
$.ajax({
type: "POST",
url: "selectbackend.php",
data: {"selectstatus": selectstatus, "id": id, "idc": idc
},
})
.fail(function(jqXHR, textStatus, errorThrown){alert(jqXHR+"--"+textStatus+"--"+errorThrown);});
});//end change
});//end ready
</script>
这是与数据库的连接,用于存储下拉菜单中的信息:
<?php
$selectstatus = $_POST['selectstatus'];
$id = $_POST['id'];
$idc = $_POST['idc'];
$host = "localhost";
$user = "user";
$password = "pass";
$dbname = "test";
$cxn = mysqli_connect($host,$user,$password,$dbname);
if (mysqli_connect_errno()) {echo "No connection" . mysqli_connect_error();}
$query = " UPDATE subscriptions
SET status = '$selectstatus'
WHERE user_id='$idc' AND curso_id='$id'";
$result = mysqli_query($cxn, $query) or die ("could not query database 1");
?>
答案 0 :(得分:1)
您可以以编程方式构建html并回显单个块,允许您在创建时测试所选值。:
$option_html = '';
$options = array(
'val1' => 'Value 1',
'val2' => 'Value 2'
);
foreach( $options as $key => $value ) {
// is_selected should be a function to determine if value is
// the value stored in the db for this particular case
$selected = is_selected( $key ) ? 'selected' : '';
$option_html .= "<option {$selected} value=\"{$key}\">{$value}</option>";
}
如果你发现自己做了很多这样的事情,templating engine 可以是一个非常有用的工具。
答案 1 :(得分:0)
这很容易做到,但它取决于您的表中的哪个列定义项目是否应在下拉列表中设置为selected-default。所以这里:
在呈现代码之前,在表上执行select语句以选择下拉列表的所有选项。让我们假设你的表有一个列selected (boolean)
告诉我们表条目是否应该设置为默认值,从这里开始它是非常简单的:
echo "<select name='status' id='$id' idc='$idc'>";
// Loop over all options
foreach($results as $option){
// If option has value selected set as true then append selected="selected" to it.
if($option->selected)
{
echo '<option selected="selected" value="' . $option->value . '">' . $option->value . '</option>';
} else {
echo '<option value="' . $option->value . '">' . $option->value . '</option>';
}
}
</select>