【发布时间】:2014-01-22 12:32:41
【问题描述】:
我已经尝试了我所知道的几乎所有东西,并在网上找到了,但没有任何效果。我想要做的是在添加新记录时我想检查字段值是否已经在数据库表中。如果不是,则添加 else 抛出错误消息。
我也尝试过is_usnique,但它不允许修改数据,因为它认为表单值存在。
表名是positions
列名是position
输入字段名称为position
我已经在我的控制器中尝试了以下代码
public function _unique_poscode()
{
$id = $this->uri->segment(4);
$this->db->where('position', $this->input->post('position'));
!$id || $this->db->where('id !=', $id);
$poses = $this->positions_model->get();
if (count($poses)) {
$this->form_validation->set_message('_unique_poscode', '%s should be uinique');
return FALSE;
}
return TRUE;
}
并在我的模型中设置如下规则
public $rules = array(
'position' => array(
'field' => 'position',
'label' => 'Position Code',
'rules' => 'trim|required|max_length[10]|callback__unique_poscode|xss_clean'
),
'label' => array(
'field' => 'label',
'label' => 'Position Label',
'rules' => 'trim|required|max_length[50]|xss_clean'
),
);
但无论我做什么,它都不起作用并添加记录,即使它存在于表中。
谁能帮我解决这个问题?非常感谢。
【问题讨论】:
-
你不需要回调,因为codeigniter已经有函数了。
-
您能否提供一些参考代码或任何参考链接以查看如何锻炼?
-
你有没有试过在`rules中使用
is_unique['table_name'.'field_name']? -
@fawwaz 我已经尝试过了,但它也在验证编辑表单,这不好。由于那甚至无法修改数据
标签: php codeigniter callback