【问题标题】:populating select menu with codeigniter and php使用 codeigniter 和 php 填充选择菜单
【发布时间】:2015-11-30 08:03:40
【问题描述】:

您好,我是 codeigniter 框架的初学者,我有一个问题!

有一个表需要填充各种数据,其中一项将是带有选项的选择菜单,当我尝试填充该选择菜单时,我被卡住了,现在我遇到了问题。

当我调用控制器的方法 my_courses() 时:

 function my_courses(){

    $username = $this->session->userdata('username'); //1 username from session 

    $this->load->model('model_professor'); //2 we load a model,whose task is to load professors courses from table

    $result =$this->model_professor->professors_classes($username); //3 so we send username to that model 

    if($result == false){ 
        echo "Professor has no courses ";
    }else{ //4 model will return results collected from table 
        $query = $this->model_professor->professors_classes($username);
        $data['records'] = $query;

        //
        //
    //WE SEND DATA TO A TEST PAGE AND THIS IS OK!!! WHEN I DO THAT EVERYTHING WORKS FINE
        //
        //

        $this->load->view('professor/test',$data);
    }       
}

模型教授类:

function professors_classes($username){
    $this->db->where("username", $username); 

    $query = $this->db->get("table_teach_a_course");  
    //if we have results then we will return them 
    if($query->result()){
        return $query->result();
    }
    //else we return false
    else{
        return false;
    }           
}

这是我剥离的测试页面,在选择和选项中没有名称和值,这里一切正常。在这里,我设法捕捉结果并展示它们:

    <?php if(isset($records)) { ?>

        <select>

    <?php foreach ($records as $row){ ?>
        <option value=""> <?php echo $row->sifra_predmeta; ?> </option>
    <?php } ?>

        </select>

    <?php } ?>

但是当我在我的控制器中将数据发送到对我来说实际上很重要的其他页面(视​​图)时,就会出现问题。 所以当我在方法 my_courses() 中这样做时:

$this->load->view('professor/professor_view_insert_labwork',$data);

我认为这应该将数据发送到我的视图:professor_view_insert_labwork,但我无法获取该视图上的数据。我只是不知道如何以及为什么!

这是我剥离但“重要”的视图,在选择和选项中同样没有名称和值,professor_view_insert_labwork 视图:

<?php
echo form_open("controller_professor/insert_labwork"); 
?>
        <table border="1">

            <tr> 
                <td>course name</td> <td>button</td> <td></td>  
            </tr> 

            <tr>
                <td>                        
                    <?php if(isset($records)) { ?>
                        <select>
                            <?php foreach ($records as $row){ ?>
                                <option value=""> <?php echo $row->sifra_predmeta; ?> </option>
                            <?php } ?>
                        </select>
                     <?php
                    }else { 
                        echo"<h2>No records were returned!</h2>";
                    } ?> 
                </td> 


                <td> 
                    <input type="submit" class="" value="Save" /> 
                </td> 
            </tr>
        </table>
<?php 
echo form_close(); 
?>

但它在 else 循环中不断弹出并回显消息没有返回记录!

我不知道为什么在这个视图中 -professor_view_insert_labwork,我无法获取数据 $records,但在测试视图中我设法提取了数据。

请帮帮我,因为我真的不知道代码出了什么问题

【问题讨论】:

    标签: php codeigniter select menu populate


    【解决方案1】:

    改变模型

    function professors_classes($username)
    {
        $this->db->where("username", $username);
    
        $query = $this->db->get("table_teach_a_course");
        //if we have results then we will return them
        $result = $query->result_array();  //here
        if(!empty($result))
        {            
            return $result; //here
    
        }
        //else we return false
        else{
            return false;
        }
    }
    

    和控制器

    <?
    
        function my_courses(){
    
            $username = $this->session->userdata('username'); //1 username from session
    
            $this->load->model('model_professor'); //2 we load a model,whose task is to load professors courses from table
    
            $result =$this->model_professor->professors_classes($username); //3 so we send username to that model
    
            if($result == false)
            {
                echo "Professor has no courses ";
            }
            else
            {
                $data['records'] = $this->model_professor->professors_classes($username);
                $this->load->view('professor/test',$data);//make sure your page is correct
            }
        }
    
    ?>
    

    在视图中

    <?php if(!empty($records))
    {
        ?>
        <select>
    
            <?php
                foreach ($records as $row)
                {
                    ?>
                    <option value=""> <?php echo $row['sifra_predmeta'] ?> </option>
                <?php
                }
            ?>
    
        </select>
    
    <?php
    }
    ?>
    

    【讨论】:

    • 现在在该行的模型中引发错误: $ result = $ query> result_array ();但我还是不明白。总的来说,我设法很好地填充了下拉菜单,现在我尝试在professor_view_insert_labwork 页面中复制我的测试页面,当我这样做时,他再次进入 else 循环,这是我不明白的部分。我只是将我的测试页面复制粘贴到professor_view_insert_labwork 页面并更改控制器: $this->load->view('professor/professor_view_insert_labwork',$data);还是什么都没有!
    • 这里没有空格$ result = $ query&gt; result_array ();
    • 我在这里发代码时出错了,我的代码中没有空格
    【解决方案2】:

    在你的模型中替换

    if($query->result()){
        return $query->result();
    }
    

    if($query->num_rows() > 0){
        return $query->result();
    }
    

    【讨论】:

    • 我现在试过了,但还是一样的问题。它在测试页面上的工作原理相同,但在我的教授视图上再次转到 else 循环
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 2023-03-25
    • 1970-01-01
    • 1970-01-01
    • 2013-07-16
    • 1970-01-01
    相关资源
    最近更新 更多