下拉菜单默认选择从数据库值中选择

时间:2013-10-15 16:29:57

标签: javascript php jquery ajax

您好我有一个下拉菜单,在选择时执行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");
?>

2 个答案:

答案 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>