2016-12-15 5 views
0

Существует этот учебник по кодировкам на странице weblesson youtube О работе с Datatables и Codeigniter.Codeigniter Ajax Crud с использованием DataTables - Insert _ Добавить данные

Но у меня возникли трудности с введением данных в базу данных.

Контроллер:

function user_action(){ 
     if($_POST["action"] == "Add") 
     { 
      $insert_data = array( 
       'first_name' => $this->input->post('first_name'), 
       'last_name' => $this->input->post("last_name"), 
       'image' => $this->upload_image() 
      ); 
      $this->load->model('crud_model'); 
      $this->crud_model->insert_crud($insert_data); 
      echo 'Data Inserted'; 
     } 
    } 
    function upload_image() 
    { 
     if(isset($_FILES["user_image"])) 
     { 
      $extension = explode('.', $_FILES['user_image']['name']); 
      $new_name = rand() . '.' . $extension[1]; 
      $destination = './upload/' . $new_name; 
      move_uploaded_file($_FILES['user_image']['tmp_name'], $destination); 
      return $new_name; 
     } 
    } 

Просмотр Класс:

<div id="userModal" class="modal fade"> 
    <div class="modal-dialog"> 
     <form method="post" id="user_form"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal">&times;</button> 
         <h4 class="modal-title">Add User</h4> 
       </div> 
       <div class="modal-body"> 
         <label>Enter First Name</label> 
         <input type="text" name="first_name" id="first_name" class="form-control" /> 
         <br /> 
         <label>Enter Last Name</label> 
         <input type="text" name="last_name" id="last_name" class="form-control" /> 
         <br /> 
         <label>Select User Image</label> 
         <input type="file" name="user_image" id="user_image" /> 
       </div> 
       <div class="modal-footer"> 
         <input type="submit" name="action" class="btn btn-success" value="Add" /> 
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </form> 
    </div> 

Когда я побежал этот код, я получил следующие ошибки:

Error message

И когда я сделал

if(isset($_POST["action"]) && $_POST["action"] == "Add") 

я получил пустую коробку предупреждения

+0

Просим перейти по ссылке ERROR MESSAGE, чтобы увидеть сообщение ошибки – courage

+0

попробуйте ввести код. –

ответ

0

В контроллере, в конструкторе нагрузки url хелперов. и сохранить файл как Main.php с кодом ::

function __construct() 
    { 
    $this->load->helper('url'); 
    } 
    function user_action(){ 
     if($_POST["action"] == "Add") 
     { 
      $insert_data = array( 
       'first_name' => $this->input->post('first_name'), 
       'last_name' => $this->input->post("last_name"), 
       'image' => $this->upload_image() 
      ); 
      $this->load->model('crud_model'); 
      $this->crud_model->insert_crud($insert_data); 
      echo 'Data Inserted'; 
     } 
    } 
    function upload_image() 
    { 
     if(isset($_FILES["user_image"])) 
     { 
      $extension = explode('.', $_FILES['user_image']['name']); 
      $new_name = rand() . '.' . $extension[1]; 
      $destination = './upload/' . $new_name; 
      move_uploaded_file($_FILES['user_image']['tmp_name'], $destination); 
      return $new_name; 
     } 
    } 

на ваш взгляд, определяют ввод типа hidden с именем действия и значение add.And определяют действие ваших form.As следующим образом ..

<div id="userModal" class="modal fade"> 
    <div class="modal-dialog"> 
     <form method="post" id="user_form" action="<?php echo base_url('main/user_action');?>"> 
     <input type="hidden" name="action" value="add"> 
      <div class="modal-content"> 
       <div class="modal-header"> 
         <button type="button" class="close" data-dismiss="modal">&times;</button> 
         <h4 class="modal-title">Add User</h4> 
       </div> 
       <div class="modal-body"> 
         <label>Enter First Name</label> 
         <input type="text" name="first_name" id="first_name" class="form-control" /> 
         <br /> 
         <label>Enter Last Name</label> 
         <input type="text" name="last_name" id="last_name" class="form-control" /> 
         <br /> 
         <label>Select User Image</label> 
         <input type="file" name="user_image" id="user_image" /> 
       </div> 
       <div class="modal-footer"> 
         <input type="submit" name="action" class="btn btn-success" value="Add" /> 
         <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> 
       </div> 
      </div> 
     </form> 
    </div> 

Надеюсь, что это будет работает ..

+0

i did auto load my url helper class – courage

+0

Я думаю, что я смог исправить это – courage

+0

Я отредактировал мой ajax немного – courage

0

я решить эту проблему, но не знаю, если это лучший способ сделать это

, что я сделал изменить это два кода:

контроллер:

public function user_action(){ 
     if(isset($_POST["action"]) && $_POST["action"] == "Add") 
     { 
      $insert_data = array( 
       'first_name'   =>  $this->input->post('first_name'), 
       'last_name'    =>  $this->input->post("last_name"), 
       'image'     =>  $this->upload_image() 
      ); 
      $this->load->model('crud_model'); 
      $this->crud_model->insert_crud($insert_data); 
      echo 'Data Inserted'; 

    } 

и Ajax:

$(document).on('submit', '#user_form', function(event){ 
     event.preventDefault(); 
     var firstName = $('#first_name').val(); 
     var lastName = $('#last_name').val(); 
     var extension = $('#user_image').val().split('.').pop().toLowerCase(); 
     if(jQuery.inArray(extension, ['gif','png','jpg','jpeg']) == -1) 
     { 
      alert("Invalid Image File"); 
      $('#user_image').val(''); 
      return false; 
     } 
     if(firstName != '' && lastName != '') 
     { 
      $.ajax({ 
       url:"<?php echo base_url() . 'main/user_action'?>", 
       method:'POST', 
       data:new FormData(this), 
       contentType:false, 
       processData:false, 
       success:function(data) 
       { 
         alert(data); 
         $('#user_form')[0].reset(); 
         $('#userModal').modal('hide'); 
         dataTable.ajax.reload(); 
       } 
      }); 
     } 
     else 
     { 
      alert("Bother Fields are Required"); 
     } 
    }); 

для контроллера:

где говорят:

if(isset($_POST["action"]) && $_POST["action"] == "Add") 

удалить его

В в Ajax Код:

создать переменную ссылку, чтобы получить атрибут действия формы следующим образом:

var link = $('#user_form').attr('action'); 

и разобрать его на АЯКС ссылке.

И все!

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