繁体   English   中英

Codeigniter set_value

[英]Codeigniter set_value

我如何做到这一点,以便在邮寄表格上进行错误验证时,它不仅会发回数据库中的默认值,而且如果我要编辑这些值并点击Submit,它将保存数据我尝试更新。 我被困在只能做一个或另一个的地方。

 <? if (isset($update)) { ?> <?php echo set_value ('fname'); ?> <?= form_open("Phonebook/updateentry/" . $entry['id']) ?> <?= form_fieldset("Update Entry"); ?> <?= form_label('First Name: ', 'fname'); ?> <br> <?= form_input(array('name' => 'fname', 'id' => 'fname', 'value' => $entry['fname'])); ?> <br> <?= form_label('Last Name: ', 'lname'); ?> <br> <?= form_input(array('name' => 'lname', 'id' => 'lname', 'value' => $entry['lname'])); ?> <br> <?= form_label('Phone Number: ', 'phone'); ?> <br> <?= form_input(array('name' => 'phone', 'id' => 'phone', 'value' => $entry['phone'])); ?> <br> <?= form_label('Email: ', 'email'); ?> <br> <?= form_input(array('name' => 'email', 'id'=>'email', 'value' => $entry['email'])); ?> <br> <?= form_submit('phonebooksubmit', 'Submit'); ?> <?= form_fieldset_close(); ?> <?= form_close() ?> <? } ?> 

 private function display() { $query = $this->db->query("SELECT * FROM phonebook ORDER BY id ASC;"); $this->TPL['listing'] = $query->result_array(); $this->load->view('phonebook_view', $this->TPL); } public function updateentry($id) { $this->form_validation->set_rules('fname', 'First Name', 'required|alpha|min_length[5]|max_length[15]', array( 'required' => 'You have not provided the %s. ', 'alpha' => '%s must only compose of alphanumeric letters.', 'max_length' => 'You exceeded max char of 20 . ', 'min_length' => 'The min length must be 5 . ' )); $this->form_validation->set_rules('lname', 'Last Name', 'required|alpha|min_length[5]|max_length[20]', array( 'required' => 'You have not provided %s .', 'alpha' => '%s must only compose of alphanumeric letters.', 'max_length' => 'You exceeded max char of 20 . ', 'min_length' => 'The min length must be 5 . ' )); $this->form_validation->set_rules('phone', 'Phone Number', 'required|regex_match[/^([0-9]{3})[-. ]([0-9]{4})$/]', array( 'required' => 'You have not provided %s .', 'regex_match' => 'Please use the correct phone format.' )); $this->form_validation->set_rules('email', 'Email', 'required|valid_email', array( 'required' => 'You have not provided %s .', 'valid_email' => 'Please provide valid email. ' )); $this->form_validation->set_error_delimiters('<p class = "errorlist">' , '</p>'); if ($this->form_validation->run() == FALSE) { $query = $this->db->query("SELECT * FROM phonebook where id = '$id';"); $this->TPL['entry'] = $query->result_array()[0]; $this->TPL['update'] = true; $this->TPL['memory'] = true; $this->display(); } else { $fname = $this->input->post("fname"); $lname = $this->input->post("lname"); $phone = $this->input->post("phone"); $email = $this->input->post("email"); $query = $this->db->query("UPDATE phonebook " . "SET fname = '$fname'," . " lname = '$lname'," . " phone = '$phone'," . " email = '$email'" . " WHERE id = '$id';"); $this->display(); } } 

我知道我必须使用set_value(),但是我不确定如何制作它才能做到。

set_value具有第二个参数,这是默认值。 如果您拉起记录并对其进行编辑,则如下所示:

// $data is from your database
set_value('name', $data['name'])

我以“名称”为例,但这可以是您记录中的任何字段。

但是回到您的控制器中,您需要这样的东西:

if( $this->input->method == 'POST' )
     // Do your validation and updating to the record

// Then pull in the record for your view
$view_data['data'] = $this->db->query('... ... ...');

这样,您总是可以获取最新数据

您的代码看起来很扎实。

我建议尝试添加一个

$this->db->update(.......)

在您的功能结束时。

然后,使用最新信息更新数据库。

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM