使用codeigniter和php填充选择菜单

时间:2015-09-04 08:22:10

标签: php codeigniter select menu populate

您好我是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);
    }       
}

MODEL professors_classes:

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

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

    <?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,但我无法获得该视图上的数据。我只是不知道如何以及为什么!

这是我的剥离但“重要”视图,再次在select和in选项中没有名称和值,church_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,我无法达到数据$记录,但在测试视图中我设法拔出数据。

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

2 个答案:

答案 0 :(得分:0)

更改模型

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
}
?>

答案 1 :(得分:0)

在您的模型中替换

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

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