0

嗨,我一直在尝试更新我的数据库中的特定记录。在获得使用“baseurl”在url中传递的id之后,到目前为止我可以传递变量但似乎无法更新记录。这是我的控制器类 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>
4

2 回答 2

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);
于 2013-09-05T12:43:08.703 回答
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');并认为“AHHHH!”。

于 2013-09-05T13:34:10.260 回答