Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带有数据库数据的Codeigniter级联下拉列表_Php_Jquery_Codeigniter - Fatal编程技术网

Php 带有数据库数据的Codeigniter级联下拉列表

Php 带有数据库数据的Codeigniter级联下拉列表,php,jquery,codeigniter,Php,Jquery,Codeigniter,我需要帮助制作一个包含数据库数据的级联下拉列表 我找到了一个关于这个的教程 和 我试过这个 控制器: function ajax_call() { if(!empty($_POST['table'])){ if ($_POST) { $table = $_POST['table']; $arrYear = $this->my_model->get_categories($table); f

我需要帮助制作一个包含数据库数据的级联下拉列表

我找到了一个关于这个的教程 和 我试过这个

控制器:

function ajax_call() {
    if(!empty($_POST['table'])){
        if ($_POST) {
            $table = $_POST['table'];
            $arrYear = $this->my_model->get_categories($table);
            foreach ($arrYear as $years) {
                $arrFinal[$years->category2 = $years->category2;
            }
            echo "<p>2nd Category:<br>";
            echo form_dropdown('year',$arrFinal);
            echo "</p><br>";
        }
        else
        {
            echo "<p>2nd Category:<br>";
            echo form_dropdown('year','');
            echo "</p><br>";
        }
    }
}
我唯一的问题是,第二个下拉列表在加载时在页面上不可见,只有在我选择第一个下拉列表时才会出现

如何使其显示在页面上而不在第一个下拉列表中选择?
有人能帮忙吗?

之所以会发生这种情况,是因为只有在表更改
$('#table').change(function(){…})
后才会触发用于填充表的ajax调用。尝试在不等待更改的情况下填充表;可能在
$(document.ready(function(){…})
中,您在代码中添加了一个完全过时的
if($\u POST)
。您已经在检查$\u POST中是否存在一个变量,因此在此之后它永远不能为空。这导致ELSE语句与第二个IF相关,而不是第一个IF

function ajax_call() {
    if(!empty($_POST['table'])){
        $table = $_POST['table'];
        $arrYear = $this->my_model->get_categories($table);
        foreach ($arrYear as $years) {
            $arrFinal[$years->category2 = $years->category2;
        }
        echo "<p>2nd Category:<br>";
        echo form_dropdown('year',$arrFinal);
        echo "</p><br>";
    }
    else
    {
        echo "<p>2nd Category:<br>";
        echo form_dropdown('year','');
        echo "</p><br>";
    }
}
函数ajax\u call(){
如果(!空($_POST['table'])){
$table=$_POST['table'];
$arrYear=$this->my\u model->get\u categories($table);
foreach($年为$年){
$arrFinal[$years->category2=$years->category2;
}
回声“第二类:
”; echo form_下拉列表(年份,$arrFinal); 回声“


”; } 其他的 { 回声“第二类:
”; 回音表单_下拉列表('年',''); 回声“


”; } }

这就是为什么你应该总是正确地缩进你的代码。

好的,我不知道怎么做我想做的。所以我搜索了互联网的深层次,找到了我真正需要的这个小教程


我如何做到这一点?您好,先生,谢谢您的回复,我尝试了您的代码,但没有。当我选择一个空值选项时,它会导致Php错误,然后修改脚本以处理这些错误。如果您正在使用Php,我只能假设您在尝试这些内容之前至少做了一些教程。如果您演示如何使用drop do,会更好乌尔湾views@danielad或者……只需转到并查看
表单下拉列表()
的详细说明和示例(这确实是codeigniter文档)
<script type="text/javascript">
     $(document).ready(function(){
      $('#table').change(function(){
       var selTable = $(this).val(); // selected name from dropdown #table
       $.ajax({
        url: "ajax_call",  // or "resources/ajax_call" - url to fetch the next dropdown
        async: false,
        type: "POST",     // post
        data: "table="+selTable,  // variable send
        dataType: "html",    // return type
        success: function(data) {  // callback function
         $('#year').html(data);
        }
       })
      });
     });
    </script>
function get_categories($table) {
         $this->db->select('category2')->from($table);
         $query = $this->db->get();
         return $query->result();
        }
function ajax_call() {
    if(!empty($_POST['table'])){
        $table = $_POST['table'];
        $arrYear = $this->my_model->get_categories($table);
        foreach ($arrYear as $years) {
            $arrFinal[$years->category2 = $years->category2;
        }
        echo "<p>2nd Category:<br>";
        echo form_dropdown('year',$arrFinal);
        echo "</p><br>";
    }
    else
    {
        echo "<p>2nd Category:<br>";
        echo form_dropdown('year','');
        echo "</p><br>";
    }
}