更新codeigniter中的特定记录集

时间:2013-09-05 12:34:50

标签: php mysql codeigniter

您好我一直在尝试更新数据库中的特定记录。获得它的id后,使用“baseurl”传递到url到目前为止,我可以传递变量,但似乎无法更新记录。这是我的控制器类update_request_record.php,它包含函数Update函数,该函数用于从数据库中获取整个记录,该函数加载Update_request_view_page.php,其中包含将使用户能够更新所需字段的表单。到目前为止我遇到了表格根本没有显示的问题,请帮忙。谢谢

<?php
class Update_Request_Record extends CI_Controller {

public function Update_Request_Record()
{
        parent::__construct();

}

function Update() 
{
    $id = $this->uri->segment(3);

    $this->load->database();
    $query = $this->db->get_where('test_request', array('id' => $id));
    return $query->result();
    $this->load->view('update_request_view'.$query);

}
function Submit()
{
    $this->load->model('update_requestmodel');        

    if($this->input->post('submit')){
        $this->update_requestmodel->Update();                
    }
    //redirect('home');
}
}

?>

这是我的模特

<?php
class Update_Requestmodel extends CI_Model {
// model constructor function
function __construct() {
    parent::__construct(); // call parent constructor
    $this->load->database();
}


function Update()
{
    $new_data = array(

        'applicant_name'=>$this->input->post('applicant_name'),
        'applicant_address'=>$this->input->post('applicant_address')
    );

    $this->db->update('test_request', $new_data);
    //redirect('home');
}
}
?>

这是从我的列表视图页面传递记录的id到控制器Update_request_record.php

<table class="list_header" bgcolor="#ffffff" border="0" width="960px" cellpadding="4px">

            <?php foreach($query as $row): ?>
            <tr> 

                <td style="border-right: dashed 1px #c0c0c0;text-align: center;border-bottom: solid 1px #c0c0c0;"><?php echo $row->id; ?>.</td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;" ><?php echo $row->testing_reason;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->applicant_name;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->authorizer_name;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->received_by;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->test_required;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->test_specification;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->laboratory_number;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><?php echo $row->date;?></td>
                <td style="text-align: left;border-bottom: solid 1px #c0c0c0;"><a href="<?php echo base_url().'update_request_record/Edit/'.$row->id;?>">Edit</a></td>
            </tr>
            <?php endforeach; ?>        
        </table>

这是我的表格update_request_view.php

<div id="analysis_request" class="analysis_request" >
        <?php echo validation_errors(); ?>
        <?php echo form_open('update_request_record/Submit',array('name'=>'test_request_update_form'));?>
        <table class="table_form" width="750px" height="500px" border="0" cellpadding="4px" align="center">
            <tr>
                <td colspan="7" align="center" style="padding:8px;border-bottom: solid 1px #bfbfbf;">
                    <b><h3>UPDATING TEST REQUEST FORM</h3></b>
                </td>
            </tr>
            <tr>
                <td align="center" style="border-right: dashed 1px #bfbfbf;"><b>1.</b></td>
                <td colspan="2"><b>Name of Applicant</b></td>
                <td colspan="4"><textarea rows="1" cols="50" name="applicant_name" value="<?php echo $query->applicant_name;?>"></textarea></td>
            </tr>
            <tr>
                <td align="center" style="border-right: dashed 1px #bfbfbf;"></td>
                <td colspan="2"><b>Address of Applicant</b></td>
                <td colspan="4"><textarea rows="1" cols="50" name="applicant_address"></textarea></td>
            </tr>
            <tr>
                <td  style="border-top: dotted 1px #bfbfbf;text-align: center;" colspan="7" ><input type="submit" name="submit" value="Submit"></td>
            </tr>
        </table>
        </form>
    </div>


</div>

2 个答案:

答案 0 :(得分:1)

将您的表单中的$id发布到hidden input id这里,然后试试这个:

在表单中添加以下行:

<?php echo form_hidden('id', $query->id) ?>

然后在您的模型中执行以下更改:

$this->db->where('id', $this->input->post('id'));
$this->db->update('test_request', $new_data);

答案 1 :(得分:0)

正如对代码的建议改进,使其稍微干一点,你可以把它扔进你的模型:

$column_mapping = array(
            'db_col1'   => 'input_field1'
            //more columns/fields
        );

foreach ($column_mapping as $k => $v) {
    $new_data[$k] = $this->input->post($v);
}

就个人而言,我看到了大量重复的代码,例如'something' => $this->input->post('something');和思考&#34; AHHHH!&#34;。