Codeigniter更新查询问题

时间:2015-07-15 05:47:03

标签: php database codeigniter sql-update

我正在制作一个学生管理系统,我想要更新记录,所有代码都可以正常工作但更新操作也没有完成,所有选择元素如下拉列表,单选按钮都不会被检查为数据库中的数据。

控制器代码:

//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"> &nbsp 
<a href='<?php echo site_url('student_controller/'); ?>'>Cancel</a>
</form>

2 个答案:

答案 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/');

我不知道这对你有帮助,但我希望如此。