我目前正在探索 ci 提供的验证库。我目前遇到了一些麻烦。我试图做一些变通办法,但令我失望的是,它进一步弄乱了我的代码。所以生病只是问专业人士我应该怎么做。
我的观点:
<?php echo validation_errors(); ?>
<?php echo form_open('bookstore/validateinsert');?>
<table cellpadding='4' align='center'>
<th>Title</th>
<tr>
<td><input type="text" name="bkname" value="<?php echo set_value('bkname');?>"/></td>
</tr>
<th>Author</th>
<tr>
<td><input type="text" name="bkauthor" value="<?php echo set_value('bkauthor'); ?>"/></td>
</tr>
<th>Released Year</th>
<tr>
<td><input type="text" name="bkyear" value="<?php echo set_value('bkyear'); ?>"/></td>
</tr>
<th>ISBN</th>
<tr>
<td><input type="text" name="bkisbn" value="<?php echo set_value('bkisbn'); ?>"/></td>
</tr>
<tr>
<td><input type='submit' value='insert'/></td>
</tr>
<?php echo form_close();?>
</table>
我的控制器:
public function validateinsert()
{
$this->load->library('form_validation');
$this->form_validation->set_rules('bkname', 'Book Name', 'required|is_unique[books.book_name]');
$this->form_validation->set_rules('bkauthor', 'Book Author', 'required');
$this->form_validation->set_rules('bkyear', 'Year Published', 'required|max_length[4]');
$this->form_validation->set_rules('bkisbn', 'Book ISBN', 'required');
if ($this->form_validation->run() == FALSE)
{
$this->insertbook();
}
else
{
$this->load->view('showbooks');
}
}
public function insertbook()
{
if($_POST)
{
$data = array(
'book_id' => null,
'book_name' => $_POST['bkname'],
'book_author' => $_POST['bkauthor'],
'book_year' => $_POST['bkyear'],
'book_isbn' => $_POST['bkisbn']
);
$duplicate = $this->_searchbook('book_name',$data['book_name']);
if(!$duplicate)
{
$insertid = $this->books_model->insert_books($data);
if($insertid)
{
$data['success'] = TRUE;
$data['message'] = "The book title was successfully added.";
}
else
{
$data['success'] = FALSE;
$data['message'] = "An error was encountered.";
}
}
else
{
$data['success'] = FALSE;
$data['message'] = "The book title is already in the system";
}
}
$this->load->view('book_entry');
}
我认为这就是所有需要知道的。
验证工作完美,虽然我有一个问题,所有数字的语法是什么,因为我希望它包含在我的 isbn 和 bkyear 规则中。(PS 我仍然更喜欢具有 onblur 功能的 javascript)
问题:
验证工作如我上面所说,但我的插入没有。如果没有违反规则,我调用了 insertbook 函数,但它什么也没插入,正如我第一次将验证函数作为表单的接收者时假设的那样,我是对的,insertbook 可能没有收到表单中的数据。我应该怎么办?PS我有一个想法,我应该将这两个函数合并在一起,但这会造成混乱(或者这有关系吗?)。生病只是咨询你的意见。