我正在制作一个学生管理系统,我想要更新记录,所有代码都可以正常工作但更新操作也没有完成,所有选择元素如下拉列表,单选按钮都不会被检查为数据库中的数据。
控制器代码:
//code to edit student record.
public function edit($stu_id){
$this->load->model('model_editstudent');
$data['r']=$this->model_editstudent ->get_student_row($stu_id);
$this->load->view('view_editstudent', $data);
}
#update query.
function update(){
$stu_id=$this->input->post('stu_id');
$data=array(
'name'=>$this->input->post('name'),
'address'=>$this->input->post('address'),
'sex'=>$this->input->post('sex'),
'yop'=>$this->input->post('yop'),
'interest'=>$this->input->post('interest'));
$this->db->where('stu_id',$stu_id);
$this->db->update('stu_record',$data);
redirect('Student_Controller/');
}
模型代码:
<?php
if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Model_EditStudent extends CI_Model{
function get_student_row($stu_id){
$this->db->where('stu_id',$stu_id);
$query=$this->db->get('stu_record');
#will return only one record(row)
return $query->row();
}
}
观点代码:
<form method="POST" action='<?php echo site_url("student_controller/update"); ?>'>
<b>Student ID:</b><br>
<input type="text" Name="name" readonly value="<?php echo $r->stu_id ?>"><br><br>
<b>Name of the Student:</b><br>
<input type="text" Name="name" value="<?php echo $r->name ?>"><br><br>
<b>Address:</b><br>
<textarea name="address" rows="5" cols="22" ><?php echo $r->address ?></textarea><br><br>
<b>Gender:</b><br>
<input type="radio" name="sex" value="<?php if($r->sex=='Male') ?>">Male<br>
<input type="radio" name="sex" value="<?php if($r->sex=='Female') ?>">Female<br><br>
<b>Expected Year of Passing:</b><br>
<select name="yop" value="<?php echo $r->yop ?>">
<option value="0">Select Year</option>
<option value="2010">2010</option>
<option value="2011">2011</option>
<option value="2012">2012</option>
<option value="2013">2013</option>
<option value="2014">2014</option>
<option value="2015">2015</option>
</select><br><br>
<b>Extra Curricular Interests:</b><br>
<input type="checkbox" name="interest" value="Sports"><label>Sports</label><br/>
<input type="checkbox" name="interest" value="Programming"><label>Programming</label><br/>
<input type="checkbox" name="interest" value="Arts"><label>Arts</label><br/>
<input type="checkbox" name="interest" value="Music"><label>Music</label><br/>
<br><input type="submit" value="Update">  
<a href='<?php echo site_url('student_controller/'); ?>'>Cancel</a>
</form>
答案 0 :(得分:1)
首先要改变你选择
<select name="yop">
<option value="0">Select Year</option>
<option value="2010" <?php if($r->yop=="2010"){echo "selected=selected";}?>>2010</option>
<option value="2011" <?php if($r->yop=="2011"){echo "selected=selected";}?>>2011</option>
<option value="2012" <?php if($r->yop=="2012"){echo "selected=selected";}?>>2012</option>
<option value="2013" <?php if($r->yop=="2013"){echo "selected=selected";}?>>2013</option>
<option value="2014" <?php if($r->yop=="2014"){echo "selected=selected";}?>>2014</option>
<option value="2015" <?php if($r->yop=="2015"){echo "selected=selected";}?>>2015</option>
</select>
单选按钮
<input type="radio" name="sex" value="Male" <?php if($r->sex=='Male') echo "checked";?>">Male<br>
<input type="radio" name="sex" value="Female" <?php if($r->sex=='Female') echo "checked"; ?>">Female<br><br>
答案 1 :(得分:0)
关于你的单选按钮,你的if在哪里?你测试性别是男性还是女性,但之后没有任何事情发生。
if($r->sex=='Male')
另外,我不记得大写是否重要,但你使用'student_controller'和'Student_Controller'一次。你收到任何错误信息吗?你加载了数据库......(只是问,因为我们没有所有的代码,我只是假设最坏的)。一旦发送,您应该尝试知道表单是否到达更新功能。更新功能中的愚蠢回声可能会对我说的内容做出...
我建议您也使用'form_validation'库,以便检查来自您的帖子数据的数据并对其进行清理。
类似的东西:
$this->load->library('form_validation');
$this->form_validation->set_rules('name', '"Name of the Student"', 'trim|required|min_length[3]|max_length[22]|alpha_dash|encode_php_tags|xss_clean');
// And you need to apply set_rules to each of your post data, like 'adress', 'sex', etc.
if($this->form_validation->run()):
// Here goes your code, with the update query
endif;
redirect('Student_Controller/');
我不知道这对你有帮助,但我希望如此。