【问题标题】:Auto populate select fields in a PHP form with a drop down selection使用下拉选择自动填充 PHP 表单中的选择字段
【发布时间】:2014-08-18 02:08:10
【问题描述】:

我使用引导程序和 CI。我创建了一个包含 2 个从 MySQL 检索数据的下拉列表。

我有tb_sekolah 表,其中idkotanamaprovinsistatus_sekolah 作为列名。

我确实在第一个下拉列表的tb_sekolah 表中显示了来自kota 的数据。问题是,我想在第二个下拉列表中显示来自nama 的数据。如果用户在第一个下拉列表中选择数据,则第二个下拉列表显示来自nama 的数据。

示例:kota 列有 yogyakarta、bantul 和 sleman 等数据。 nama 列有 sma 1 yogyakartasma 3 yogyakartasma 1 sewonsma 1 sleman 等数据。如果用户在第一个下拉列表中选择yogyakarta,则第二个下拉列表仅显示sma 1 yogyakartasma 3 yogyakarta

【问题讨论】:

  • 谢谢 vrohhh,我不够聪明,不会说英语呵呵
  • 如果您可以投票或接受答案会很好!

标签: php jquery mysql codeigniter twitter-bootstrap


【解决方案1】:

首先,您必须禁用第二个下拉列表,然后必须编写jQuery/javascript函数,该功能在选择第一个下拉列表中的某些内容时调用更改事件。

$('#select').on('change',function(){

    var value = $(this).text();
    $.ajax({
        url: "url goes here",
        data: value
    }).done(function(data) {
        $('#secondDropdown').removeClass('disabled');
        $('#firstDropdown').html(data);
    });

});

url 必须指向一个控制器函数,该函数将以 html 格式查询和发送相关的下拉选项。

foreach ($options as $option) {
        $string = $string.
        "<option value=$option->name>$option->name</option>"; 
}

【讨论】:

  • 我可以在 jquery 中使用查询来显示表数据库中的数据吗?
  • 不!您不能直接在 jquery 中查询,您可以根据需要使用 $ajax、$get 或 $post。使用 jquery 文档更好地理解。 ajax 中的 url 指向一个函数,该函数处理并发送回复。第二部分代码告诉你如何形成响应。
【解决方案2】:

这是我在很多框架中遇到的一个常见问题,解决这个问题的最简单的方法是创建一个包含 HTML 的字符串,用于由 sql 填充的列表,这是我在 LARAVEL 中使用的我的个人脚本随意使用。

$string = "<option value=></option>";
foreach ($categories as $category_item)
{
        $string = $string.
        "<option value=$category_item->name>$category_item->name</option>";
}

【讨论】:

  • 你能告诉我如何在另一个下拉列表中显示数据吗?如果您在类别的第一个下拉列表中有一些数据,请选择该选项,然后选择如何在第二个下拉列表中显示。
  • 你必须使用 JAVA 脚本和 auto_focus 我没有办法在 PHP 中做到这一点抱歉,但是搜索关于如何使用 auto_focus 的教程,我相信你将能够得到完成了。
【解决方案3】:

试试这个:

1) 首先,您必须在从第一个下拉列表中选择值后进行 ajax 调用。我会使用 jQuery,但可以在您方便的时候随意使用。

$.ajax({
    url : 'path/to/url/get_nama',
    dataType : 'json',
    method : 'get',
    data : {
        kota : $("#first_dropdown").val()
    },
    success : function(data){
        //add data to second column here
        $("#second_dropdown").empty();
        for(d in data['nama']){
            $("#second_dropdown").append("<option value='" + data['nama'][d].id + "'>" + data['nama'][d].nama + "</option>");
        }
    },
    error : function(){}
});

在你的 php 模型代码中:

function get_nama()
{
    $kota = $this->input->get('kota');

    $query = $this->db->query("SELECT id, nama FROM tb_sekolah WHERE kota = '{$kota}'");

    $data = array(
        'nama' => $query->result_array(),
        'success' => TRUE
    );

    print json_encode($data);

}

【讨论】:

  • url : 'path/to/url/get_nama',这是什么意思?例如:'localhost/ci/sign_model/get_nama' 对吗?如果我错了,请纠正我谢谢
猜你喜欢
  • 1970-01-01
  • 2012-10-25
  • 1970-01-01
  • 2016-07-08
  • 2018-03-29
  • 2017-08-03
  • 1970-01-01
  • 2014-12-11
  • 1970-01-01
相关资源
最近更新 更多