2016-09-26 5 views
3

У меня есть форма ввода:CodeIgniter вставить в таблицу с условием

<div class="row" id="form_pesan"> 
 
       
 
        <input type="hidden" name="id" id="id" /> 
 

 
        <div class="col-sm-6"> 
 
        <input type="text" class="form-control input-lg typeahead typeahead_user_email" autocomplete="off" id="user_email" name="user_email" placeholder="Email" required> 
 
        </div> 
 

 
        <div class="col-sm-6"> 
 
        <input type="text" class="form-control input-lg" id="phone" name="phone" placeholder="Phone" required> 
 
        </div> 
 

 
        <div class="col-sm-6"> 
 
        <input type="text" class="form-control input-lg" id="plate_number" name="plate_number" placeholder="Plate Number" required> 
 
        </div> 
 

 
        <div class="col-sm-6"> 
 
         <select class="form-control" id="location_name" name="location_name"> 
 
         <?php foreach ($vendor as $v) { 
 
          ?> 
 
          <option id="<?php echo $v['location_id']; ?>" value="<?php echo $v['location_id']?>" ><?php echo $v['name'] ;?></option> 
 
         <?php }; ?> 
 
         </select> 
 
        </div> 
 
       
 
       </div> 
 
<button id="add" type="button" class="btn btn-primary btn-md" onclick=add()>Add</button>

Java-функции Add():

function add(){ 
 
    var formIsValid = true; 
 
     $(matchFormFields).each(function() { 
 
     $(this).css('border-color', ''); 
 
     if(!$.trim($(this).val())) { 
 
      $(this).css('border-color', errorColor); 
 
      formIsValid = false; 
 
     } 
 
    }); 
 
    if (formIsValid) { 
 
    user_email = $("#user_email").val(); 
 
    phone = $("#phone").val(); 
 
    plate_number = $("#plate_number").val(); 
 
    location_id = $('#location_name option:selected').attr('id'); 
 

 
    $.ajax 
 
     ({ 
 
      url : "<?php echo site_url('admin/add_driver')?>/", 
 
      type: "POST", 
 
      dataType: "json", 
 
      data:{user_email: user_email, plate_number: plate_number, location_id: location_id}, 
 
      success: function(data) 
 
      {  
 
       $("#add_driver_modal").modal("hide"); 
 
       $("#alert").show(); 
 
       console.log(user_email); 
 
       console.log(phone); 
 
       console.log(plate_number); 
 
       console.log(location_name); 
 
       //location.reload(); 
 
      }, 
 
      error: function (jqXHR, textStatus, errorThrown) 
 
      { 
 
       alert('Error data'); 
 
      } 
 

 
     }); 
 
    }; 
 
}

Контроллер:

public function add_driver() 
{ 
    if(!$this->user_permission->check_permission())return; 

     $phone      = $this->input->post('phone'); 
     $user_email     = $this->input->post('user_email'); 
     $user_password    = "tiki1234"; 
     $plate_number    = $this->input->post('plate_number'); 
     $location_id    = $this->input->post('location_id'); 

     $this->db->select("*"); 
     $this->db->from('user'); 
     $query = $this->db->get(); 
     $data['user'] = $query->result_array(); 
     foreach ($data['user'] as $u) { 
      if($user_email == $u['user_email']){ 
       $data_user_driver = array(
        'user_id'     => $u['user_id'], 
        'plate_number'    => $plate_number, 
        'location_id'    => $location_id, 
        'current_lat'    => 0, 
        'current_lon'    => 0 
       ); 
       $this->db->insert('user_driver', $data_user_driver); 
      } 
      else{ 
       $this->load->library('login_library'); 
       $this->load->library('form_validation'); 

       $this->form_validation->set_message('is_unique', 'Email is already in use'); 
       $this->form_validation->set_rules('user_email', 'Email', 'trim|required|valid_email|is_unique[user.user_email]|max_length[255]'); 
       $this->form_validation->set_rules('user_password', 'Password', 'trim|required|min_length[6]|max_length[32]|callback__password_valid'); 
       $this->form_validation->run(); 
       $this->login_library->register($user_email, $user_password); 

       if ($this->form_validation->run() && $data = $this->login_library->register($user_email, $user_password)) { 
        if (isset($data['success']) && $data['success'] == TRUE) { 
         echo json_encode((array('success' => 1, "msg" => $data['message']))); 
        } else 
         echo json_encode(array('success' => 0, "msg" => $data["message"])); 
       } else 
        echo json_encode(array('success' => 0, "msg" => validation_errors())); 
       } 
      }    
} 

Th условие, если input->post->('user_email') не существует в user таблице, а затем вставить в таблицу user первый затем user_driver таблицу, если она существует, то вставить только user_driver.

Значения вставки в базу данных, но он выдает ошибку duplicate entry ****@gmail.com for key user_email_unique

+0

Какая польза от действия 'register'? –

+0

Я использую библиотеку 'register', чтобы добавить драйвер в качестве нового пользователя. @RameshKumar – may

+1

удалите строку ниже, если условие, а затем попробуйте. '$ this-> login_library-> register ($ user_email, $ user_password);' Надеюсь, что это сработает для вас. Еще кое-что. Вы можете загружать библиотеку вне цикла else, которая влияет на время загрузки. –

ответ

0

[решено] I пропустил синтаксис where в SQL, я мог бы использовать его, чтобы проверить, соответствует ли переменная значению в таблице :)

0

Вы можете сделать это с помощью первого выбора данных из таблицы на электронный идентификатор следующим образом:

$user_array = $this->db->where('user_email',$this->input->post('user_email')->get('users')->row_array(); 
if(count($user_array)>0){ 
$this->db->update('users',$update_array,array('user_email',$this->input->post('user_email'))); //update driver by email 
}else{ 
$this->db->insert('users',$data_user_driver); //insert the data 
} 
+0

, если вы можете неправильно понять мой вопрос, я хочу вставить новый идентификатор, адрес электронной почты и т. Д. В таблицу 'user', если' input-> post -> ('user_email') 'не соответствует значению в таблице' user' , ** после вставки в ** 'user', я хочу, чтобы он также вставлялся в' user_driver', но если 'input-> post -> ('user_email)' существует в таблице 'user', то это будет * * вставляйте только в ** таблицу 'user_driver'. Насколько я понимаю ваш ответ, для чего мне нужно «this-> db-> update (« users »)? помогите мне понять это :) – may

+0

ok, тогда вы можете вставить новую запись и использовать запрос на обновление по всему миру. –

Смежные вопросы