【问题标题】:CodeIgniter validation and checkboxCodeIgniter 验证和复选框
【发布时间】:2014-03-12 20:31:24
【问题描述】:

我的复选框有问题,我想添加验证,但我不知道如何在验证规则中查看我的姓名字段。

我的看法

<?php   
   foreach( $tab1 as $row){
?>   
    <a>
      <input type="checkbox" name="<?php echo 'id_user_'.$row->id_user; ?>" value="   <?php echo $row->id_user; ?>"  />

    </a>
       <?php

当我这样做时,我会得到结果(复选框的名称)例如:

id_user_1
id_user_2

id_user_3

现在我想添加验证,但是:

 $this->form_validation->set_rules(' WHAT SHOULD I WRITE HERE ??? ', 'User','required'); 

编辑:

  $this->form_validation->set_rules('id_uzytkownika', 'Uzytkownika','required');



if ($this->form_validation->run())
{
    $todo = array(
            'tytul_projektu'=>$this->input->post('tytul_projektu'),
            'opis_projektu'=>$this->input->post('opis_projektu'),
            'data_zakonczenia'=>$this->input->post('datepicker')
            );

    $user_projekty = array(
            'id_uzytkownika'=>$this->input->post('id_uzytkownika'),
            'id_projektu'=>$this->input->post('id'),
            );



    $users = array();
            foreach($_POST as $key => $value)
            {
                if(strpos($key, 'id_uzytkownika') === 0)
                {
                    $users[] = $value;
                }  
            }

$this->Todo_model->add($todo,$user_projekty,$users);

查看:

<?php   
   foreach( $tab1 as $row){
    ?>   
    <a>
      <input type="checkbox" name="<?php echo 'id_uzytkownika['.$row->id_uzytkownika.']'; ?>" value="<?php echo $row->id_uzytkownika; ?>"  />

型号:

function add($data,$data2,$users)
{
    $this->db->insert('projekty', $data);     

$id = $this->db->insert_id('projekty');
$data2['id_projektu'] = $id;

$query = $this->db->query("SELECT * FROM uzytkownicy");

foreach($users 作为 $user) {

  $data2['id_uzytkownika'] = $user;

  $this->db->insert('projekty_uzytkownicy', $data2);  }

  return $query->result();

}

【问题讨论】:

  • stackoverflow.com/questions/594820/…,我用的东西很像那里的第二个答案。
  • 您可能需要考虑使用Arrays as field namestheseanswers 也可能会有所帮助。
  • 当我尝试这样做 $this-&gt;form_validation-&gt;set_rules('tab1[]', 'User','required');$this-&gt;form_validation-&gt;set_rules('tab1[id_user]', 'User','required'); 在视图中我总是请插入用户:(
  • 试试 $this->form_validation->set_rules('tab1[id_user.i]', 'User','required');

标签: codeigniter validation checkbox


【解决方案1】:

您可以采取几种方法。使用您现有的代码,首先是创建一个定义所有唯一输入名称的循环。

foreach($users as $user) {
     $this->form_validation->set_rules('id_user_'.$user->id_user, 'User','required');
}

但是,此逻辑需要检查每个复选框。我不确定这将在什么情况下使用。

另一种方法是稍微更改您的 html。 而不是

 <input type="checkbox" name="<?php echo 'id_user_'.$row->id_user; ?>" 
       value="<?php echo $row->id_user; ?>"  />

你可以尝试使用类似的东西

 <input type="checkbox" name="<?php echo 'id_user['.$row->id_user.']'; ?>" 
       value="1"  />

这样您可以根据id_user 而不是唯一名称来制定表单验证规则。

【讨论】:

  • 最后一种方法几乎可以工作,但在我的第一篇文章中查看 EDIT,我有用户数组,当我想将其保存到数据库时出现错误:Unknown column 'Array' in 'field list' 我该如何解决?
  • 你能发布Todo_model add的方法吗?您收到错误的原因是 $users 对象是一个数组。如果add 方法不处理数组,那么您需要将add 方法放在foreach loop 中。 if(strpos($key, 'id_user') === 0) { // $users[] = $value; $this-&gt;Todo_model-&gt;add($value); }
猜你喜欢
  • 2013-01-05
  • 2011-10-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-29
  • 1970-01-01
相关资源
最近更新 更多