您好我一直在尝试更新数据库中的特定记录。获得它的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>
答案 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;。