codeigniter在下拉菜单中形成vaildation

时间:2015-09-09 12:29:24

标签: php forms codeigniter validation drop-down-menu

您好我是codeigniter framevork的新手,我遇到表单验证和下拉列表以及保存数据的问题。

我设法使用来自db的数据填充我的doropdown列表但是,具有该下拉列表的表单也包含其他字段,因此当用户点击提交按钮时,表单中的某些内容会丢失或者没有输入应该输入,然后我设法记住'我的页面上的所有数据,除了下拉列表中的值,我只是不知道如何做到这一点。 这是我的表单的代码:

<?php echo form_open("controller_professor/insert_labwork"); ?>
<table>
    <tr>
        <td>Course name:</td>
        <td>
            <?php if(isset($records)) { ?>
                    <select name="course_name">
                            <option value="">Course name</option>
                            <?php foreach ($records as $row){ 
                                echo "<option value='".$row->corse_code."'> ".$row->corse_code." </option>";
                            } 
                            ?>
                    </select>
           <?php
            }  else echo"No records were returned!"; ?> 
        </td>
    </tr>

    <tr>
        <td>Lab:</td>
        <td> 
            <select name="lab">
                <option value="" <?php echo set_select('lab', ''); ?> >lab</option>
                <option value="1" <?php echo set_select('lab', '1'); ?> >1</option>
                <option value="2" <?php echo set_select('lab', '2'); ?> >2</option>
            </select> 
        </td>
    </tr>

    <tr>
        <td>List of chosen assistants:</td>
        <td>
            <?php if(isset($records_professors_assistans)){?>
            <select name="chosen_assistants[]" multiple>
                <option value="">Assistans</option>
                <?php
                     foreach ($records_professors_assistans as $row){
                         echo "<option value='".$row->username."'>".$row->username."</option>";
                     }
                ?>
            </select>
            <?php }else echo "No records were returned!";?>
        </td>
    </tr>

    <tr>
        <td><input type="reset" value="Clear form"></td>
        <td><input type="submit" value="Save"></td>
    </tr>
</table>
<?php echo form_close(); ?>
    <?php echo validation_errors('<p style="color:red"></p>'); ?>

这是我的控制器方法的代码: 第一种 - 表单验证方法

function insert_labwork(){
    $this->load->library('form_validation');

    $this->form_validation->set_rules('course_name', 'Course name', 'required');       
$this->form_validation->set_rules('lab', 'Lab', 'trim|required');

    if($this->form_validation->run() == FALSE){
       $this->my_courses();             
    }
else{
        $course_code = $this->input->post('course_name');

        $this->load->model('model_professor'); 
        $result_professors_assistants = $this->model_professor->professors_assistants_on_course($course_code); //3 modelu prosledimo username koji smo uzeli iz sesije

        $data['records_after_button'] = $course_code;

        if($result_professors_assistants == false){
            echo "Professor has no assistants";
        }  else {                  
            $result = $this->model_professor->professors_assistants_on_course($course_code);
            $data['records_professors_assistans'] = $result;            
        }

        $this->form_validation->set_rules('chosen_assistants[]', 'Chosen assistants field', 'required');

        if($this->form_validation->run() == FALSE){
            $this->load->view('professor/t_professor_insert_labwork_2',$data);
        }  else {
                $course_name = $this->input->post('course_name');
                $lab = $this->input->post('lab');
                echo "Success!!!";             
                echo "Course name is: $course_name <br/>";
                echo "Lab is $lab <br/>";
                foreach ($this->input->post('chosen_assistants') as $assistants){
                echo "<br/><font color='red'> $assistants </font>";
                }              
        }
    }   
}

和第二种方法,其任务是填充我的下拉列表:

function my_courses(){
    $username = $this->session->userdata('username');  
    $this->load->model('model_professor'); 
    $result =$this->model_professor->professors_classes($username); 

    if($result == false){       
        echo "Professor has no courses";
    }else{
        $query = $this->model_professor->professors_classes($username);
        $data['records'] = $query;
        $this->load->view('professor/t_professor_insert_labwork_2',$data);        
    }       
}

我的模型方法运行正常,但如果有人需要在那里看到它们,它们是: 第一个是从db返回所有教授类:

function professors_classes($username){
    $this->db->where("username", $username);
    $query = $this->db->get("table_teaches_a_course");
    if($query->result()){
        return $query->result();
    }
    else return false;           
}

第二种方法让教授助手:

function professors_assistants($username){
    $query = $this->db->get("table_assistants");  
    if($query->result()){
        return $query->result();
    }else return false;           
}

如果我在这里发布代码时犯了一些错误,或者没有为我的问题提供好的解释,请告诉我,我会修复它。

感谢所有愿意帮助我的人!

0 个答案:

没有答案