1

您好,我有一个下拉菜单,它在选择时执行 Ajax/JavaScript 以将所选值放入数据库中。我希望下次打开带有菜单的页面时,下拉菜单选项被选中从数据库值。这样,用户将知道在数据库中选择了什么。

这是我的下拉菜单的代码:

<?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");
?>
4

2 回答 2

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>";
}

如果您发现自己经常做这种事情,那么模板引擎 可能是一个非常有用的工具。

于 2013-10-15T16:47:14.993 回答
0

好吧,这真的很容易做到,但是这取决于表中的哪一列定义了是否应在下拉菜单中将项目设置为选定默认值。所以在这里:

在呈现代码之前,请在表上执行一个选择语句以选择下拉列表的所有选项。让我们假设您的表有一个列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>
于 2013-10-15T16:39:21.323 回答