現在、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私は、これらの2つの関数を一緒にマージする必要があるという考えを持っていますが、それは混乱を招くでしょう(またはそれは問題ですか?)。これについてあなたの意見を聞いてみましょう。