【问题标题】:Codeigniter Validation form not workingCodeigniter 验证表单不起作用
【发布时间】:2014-06-26 15:11:26
【问题描述】:

我知道这个问题存在于其他问题中,但我无法弄清楚如何在我的情况下正确处理它。找了好久,没找到解决办法:

我想做一个表单并连接到我的数据库,但出现问题并且无法接收数据库中的值。

这是视图(位置:/application/view/pages/home.php):

<?php echo validation_errors();?>
<div id="signup" style='position: absolute; left:900px; top: 380px;'>
<?php echo form_open('user/signup');?>

<input type='text' required="required" placeholder="Full Name" name="fullname"/><br/>
<input type='text' required="required" placeholder="Email" name="email"/><br/>
<input type='text' required="required" placeholder="Password" name="password"/><br/>
<input type='text' required="required" placeholder="Confirm password" name="confirmpassword"/><br/>
<button type="submit" name="submit_signup">Sign up</button>

<?php echo form_close(); ?>

这里是控制器(位置:/application/controllers/user.php):

class User extends CI_Controller {

    public function __construct()
    {
            parent::__construct();
            $this->load->model('User_model');
    }

    public index(){

            $this->load->view('view');

    }


    public function signup(){

            $this->load->helper(array('form', 'url'));
            $this->load->library('form_validation');
            $this->load->model('User_model');


            $user_id = DEFAULT;

            $data = array(){

            'user_id' => $user_id,
            'email' => $this->input->post('email'),
            'password' => $this->input->post('password'),
            'full_name' => $this->input->post('fullname')

            }
        $this->User_model->add_user($data);
        $this->index();
     }
     }

以及模型(位置:/application/models/user_model.php):

<?php
class User_model extends CI_Model {

        public function __construct()
        {
                $this->load->database();
        }

        public function add_user($data){

        $this->load->database();

        $this->db->insert('user',$data);

        }

}
?>

【问题讨论】:

  • 无需在模型构造函数中加载数据库,然后在 add_user 函数中再次加载。
  • 能否分享您的数据库架构?

标签: php forms codeigniter validation


【解决方案1】:

您的数组中有语法错误:

应该是:

$data = array(
  'user_id' => $user_id,
  'email' => $this->input->post('email'),
  'password' => $this->input->post('password'),
  'full_name' => $this->input->post('fullname')
)

如果还是不行,你的$user_id可能是INT类型,所以给它一些INT

你根本没有做任何验证!?

【讨论】:

  • 好吧,我更正了。抱歉,我是 CodeIgniter 上的菜鸟,我有一些我不知道具体是如何工作的东西。 form_open 必须与控制器类连接吗?表单之后,页面重定向到控制器,但是这个没有获取表单或其他东西的值,并且无法重定向到“成功页面”。我创建了一个名为“sign_up”的新控制器类,看起来像 Wide Vision 的帖子
  • 每次执行控制器时都会出现此错误:找不到类'CI_Controller'
【解决方案2】:

您的解决方案在这里:

<?php
  class Form extends CI_Controller {
  public function index()
  {
    $this->load->helper(array('form', 'url'));
    $this->load->library('form_validation');
    $this->form_validation->set_rules('username', 'Username', 'callback_username_check');
    $this->form_validation->set_rules('password', 'Password', 'required');
    $this->form_validation->set_rules('passconf', 'Password Confirmation', 'required');
    $this->form_validation->set_rules('email', 'Email', 'required|is_unique[users.email]');

    if ($this->form_validation->run() == FALSE)
    {
        $this->load->view('myform');
    }
    else
    {
        $this->load->view('formsuccess');
    }
}

}?>

【讨论】:

    猜你喜欢
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-07
    • 2020-09-28
    • 2012-02-26
    • 1970-01-01
    • 2015-01-20
    相关资源
    最近更新 更多