制作代码点火器登记表

时间:2016-01-31 21:04:22

标签: php mysql forms codeigniter

所以我正在制作一个表格供人们注册,但它不起作用,并且由于某种原因我的netbeans中的调试器无法工作,所以我无法正常检查。

这是html表单

<?php

        if(validation_errors() != false) 
        { 
            echo '<div class="form-group alert alert-danger alert-box has-error">';
                echo'<ul>';
                    echo validation_errors('<li class="control-label">', '</li>');
                echo'</ul>';
            echo '</div>';   
        }

        /* form-horizontal */

       echo form_open('main/insertInformation'); 

        ?>

    <div class="form-group">
        <input type="text" name="name" class="form-control input-lg" placeholder="Name">
    </div>
    <div class="form-group">
        <input type="email" name="email" class="form-control input-lg" placeholder="Email">
    </div>
    <div class="form-group">
        <input type="text" name="phone" class="form-control input-lg" placeholder="Phone">
    </div>
    <div class="form-group">
        <input type="password" name="password" class="form-control input-lg" placeholder="Password">
    </div>
    <div class="form-group">
        <input type="password" name="password_confirm" class="form-control input-lg" placeholder="Confirm Password">
    </div>
    <div class="form-group">
        <button type='submit' class="btn btn-primary btn-lg btn-block">Sign In</button>
    </div>
</div>

然后我尝试将所有这些信息都提供给我的控制器

public function insertInformation(){
                $this->load->helper('form');
                $this->load->library('form_validation');

                $this->form_validation->set_rules('name', 'Name', 'required');
                $this->form_validation->set_rules('email', 'Email', 'required');
                $this->form_validation->set_rules('phone', 'Phone', 'required');
                $this->form_validation->set_rules('password', 'Password', 'required|min_length[4]|max_length[32]');
                $this->form_validation->set_rules('password_confirm', 'Password Confirm', 'required|matches[password]');


                if ($this->form_validation->run() == FALSE){
                $this->load->view('header_view');
                $this->load->view('login_view');
                $this->load->view('footer_view');
                }else{

                    $data =  array(
                    'name' => $this->input->post('name'),
                    'email' => $this->input->post('email'),
                    'phone' => $this->input->post('phone'),
                    'password' => $this->input->post('password')

                );
                    $this->db->trans_begin();
                $this->load->model('main_page');
                $this->main_page->storeRegisterInfo($data);

                $message['account_created'] = 'Your account has been created';
                $this->load->view('admin_view', $message);
                }
             }

这是模型,

public function storeRegisterInfo($data){
            $insert = $this->db->insert('new_users',$data);
            return $insert;

        }

我的数据库看起来像这样 enter image description here

我对codeigniter很新,所以我很确定这里有很多错误,所以请帮助我,请为了更好的理解而逐步解释我。谢谢!

这是错误 enter image description here

3 个答案:

答案 0 :(得分:3)

经过长时间的讨论,特定于此错误,只是您错过了加载模型,您需要加载模型:

$this->load->model('main_page');

更新1:

删除$this->db->trans_begin();解决了您的问题,但我认为这不是一个完整的解决方案。

如果您想使用交易,请确保您只能将InnoDBBDB表格类型应用于MyISAM

如果您正在使用InnoDB并希望使用t rans_begin()而不是确保在执行所有查询后需要使用trans_commit(),否则这将不会在您的数据库中显示任何内容。

<强> From the User Guide:

$this->db->trans_begin(); // transaction start

$this->db->query('AN SQL QUERY...');

if ($this->db->trans_status() === FALSE)
{
   $this->db->trans_rollback(); // rollback if failure
}
else
{
   $this->db->trans_commit(); // commit if success
}

答案 1 :(得分:1)

当我们编写模型文件时,我们有条件集。其中一个是模型文件应该包含_model 的单词。 (例如:user_modelregistration_model

所以你的模型也应该改变。现在,您的模型看似main_page更改了它,(例如:main_modelpage_model)。

文件名应为Main_model.php

在您的模型中

class Main_model extends CI_Model {

        public function __construct()
        {
                parent::__construct();
        }

}

This is how Codeigniter use the Model.

答案 2 :(得分:1)

删除此部分,一切都应该工作

$this->db->trans_begin();