您好我是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;
}
如果我在这里发布代码时犯了一些错误,或者没有为我的问题提供好的解释,请告诉我,我会修复它。
感谢所有愿意帮助我的人!