2014-04-15 1 views
0

저는 CodeIgniter를 사용하고 있으며 데이터베이스에 삽입하려고하는 모든 필드에 대해 정의되지 않은 변수 오류가 발생합니다. 내가 빠진 것이 있습니까?삽입시 CodeIgniter 및 정의되지 않은 변수

E : 오히 예, 가장 중요한 것은 양식 제출 후 데이터베이스의 모든 필드에 "NULL"을 삽입한다는 것입니다.

<?php 

    class User extends CI_Model { 

     public function add_user() { 

      $data = array(
        'username' => $username, 
        'name' => $name, 
        'email' => $email, 
        'password' => $password, 
        'user_type' => $user_type, 
        'phonenumber' => $phonenumber, 
        'school_id' => $school_id, 
        'subject_id' => $subject_id 
       ); 

      $this->db->insert('users', $data); 
     } 
    } 
?> 

그리고 내 컨트롤러가 실제 삽입을 처리 할 수있는 :

<?php $this->load->helper('form'); ?> 
<?php $attributes = array(
     'id' => 'add_user_form' 
    ); 
?> 

<?php echo form_open('users/add_user', $attributes); ?> 

     <span class="close_form_button_add_user_form">X</span> 


    <div class="form_row"> 
    <input type="text" name="f_name" placeholder="Etunimi" class="half-width" /> 
    <input type="text" name="l_name" placeholder="Sukunimi" class="half-width" style="float: right; margin-right: 24px;"/> 
    </div> 

    <div class="form_row"> 
    <input type="email" name="email" placeholder="Uuden käyttäjän sähköpostiosoite" class="user full-width" /> 
    </div> 

    <div class="form_row"> 
    <input type="email" name="email_confirm" placeholder="Sähköpostiosoite uudelleen" class="user full-width" /> 
    </div> 

    <div class="form_row"> 
    <input type="text" name="phone_number" placeholder="Puhelinnumero (04)" class="full-width" /> 
    </div> 


    <div class="form_row" style="margin-top: 20px;"> 
    <select name="user_type" class="add_user_select" id="select_user_type"> 
    <option value="">Käyttäjätyyppi</option> 
    <option value="admin">Hallinto</option> 
    <option value="moderator">Hallinto 2</option> 
    <option value="enduser">Pääkäyttäjä</option> 
    </select> 

    <input type="submit" name="add_user" value="Luo käyttäjä" class="login_submit" id="submit_user" style="margin: 5px 24px 0px 0px;"/> 
    </div> 

    <div class="form_row" id="add_user_optional_information"> 
    <select name="school" class="add_user_select half-width"> 
    <option value="">Koulutalo</option> 
    <?php foreach($schools as $school) :?> 
     <option value="<?=$school['id']?>"><?=$school['name']?></option> 
    <?php endforeach; ?> 
    </select> 

    <select name="subject" class="add_user_select half-width"> 
    <option value="">Laji</option> 
    <?php foreach($subjects as $subject) :?> 
     <option value="<?=$subject['id']?>"><?=$subject['subject_name']?></option> 
    <?php endforeach; ?> 
    </select> 
    </div> 
    <?php echo form_close(); ?> 


    <?php echo validation_errors(); ?> 
    </div> 

다음 데이터베이스에 (전화 사용자) 사용자를 추가하는 내 모델입니다 : 여기

내보기입니다 (의견을 무시하십시오)

<?php 

     class Users extends CI_Controller { 
      public function add_user() 
      { 

      if($this->input->post('add_user')) 
      { 

      $this->load->library('form_validation'); 

     $this->form_validation->set_rules('f_name', 'Etunimi', 'required|min_length[2]'); 
     $this->form_validation->set_rules('l_name', 'Sukunimi','required|min_length[3]'); 
     $this->form_validation->set_rules('email', 'Sähköpostiosoite','required|matches[email_confirm]|is_unique[users.email]|valid_email'); 
     $this->form_validation->set_rules('email_confirm', 'Sähköpostiosoite', 'required|valid_email'); 
     $this->form_validation->set_rules('phone_number', 'Puhelinnumero', 'min_length[7]|max_length[10]'); 


      if($this->input->post('user_type') == "moderator") 
      { 

        $this->form_validation->set_rules('school', 'Koulutalo', 'required'); 
        $this->form_validation->set_rules('subject', 'Laji', 'required'); 
      } 

      if($this->form_validation->run() == FALSE) 
      { 

       echo "Not working!!"; 
      } 

      $first_part_username = substr($this->input->post('f_name'), 0, 2); 
      $second_part_username = substr($this->input->post('l_name'), 0, 3); 
      $random_number = random_string('numeric', 4); 

      $username = $first_part_username . $second_part_username . $random_number; 

      $password = random_string('alnum', 8); 


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

       $data = array (
        'name'   => strtoupper($this->input->post('f_name')). " ".strtoupper($this->input->post('lname')), 
        'email'   => $this->input->post('email'), 
        'username'  => $username, 
        'password'  => $this->phpass->hash($password), 
        'user_type'  => $this->input->post('user_type'), 
        'phone_number' => $this->input->post('phone_number'), 
        'school_id'  => $this->input->post('school_id'), 
        'subject_id' => $this->input->post('subject_id') 
        ); 


        if($this->user->add_user($data)) 
        { 
         $this->load->library('email'); 

         $config['newline'] = '\r\n'; 
         $this->email->initialize($config); 

         $this->email->from('[email protected]', 'Your Name'); 
         $this->email->to($this->input->post('email')); 
         $this->email->subject('Käyttäjä rekisteröity'); 
         $this->email->message(
         "Hei," 
         .strtoupper($this->input->post('f_name')). " ".strtoupper($this->input->post('l_name')).". 
         Tämä on automaattinen viesti kilpailuvastaavan toimesta. \n 
         Olemme luoneet sinulle palveluumme käyttäjätunnuksen ja salasanan, jonka avulla pääset käsiksi 
         infrastruktuurijärjestelmään. \n 
         Pääset kirjautumaan järjestelmään seuraavilla tunnuksilla:" 

         ); 


        if($this->email->send()) { 

         base_url().'dashboard'; 
        } 
       } 

       } 
       $this->load->view('header'); 
       $this->load->view('dashboard', $data); 
       $this->load->view('footer'); 

      } 
     } 
    ?> 

답변

1

Controller에서 Model으로는 $data을 전달하지만 Model에서는 수신중인 parameter을 정의하지 않았습니다. 이로 변경 모델 기능 - 당신은 $ this-를 호출

public function add_user($data) { 

     $data = array(
       'username' => $data['username'], 
       'name' => $data['name'], 
       'email' => $data['email'], 
       'password' => $data['password'], 
       'user_type' => $data['user_type'], 
       'phonenumber' => $data['phone_number'], 
       'school_id' => $data['school_id'], 
       'subject_id' => $data['subject_id'] 
      ); 

     $this->db->insert('users', $data); 
    } 
0

> 사용자 -> add_user ($ 데이터)하지만 모델 함수 정의는 공공 기능 add_user()이며, 그것이 있어야 공공 기능 add_user ($ 데이터)