Редактирование загрузки изображений с использованием Code Igniter и ajax - PullRequest
0 голосов
/ 15 сентября 2018

У меня есть этот CRUD, и все работает нормально, включая функцию загрузки, но когда я редактирую только данные, ранее загруженное изображение удаляется из базы данных, что я могу сделать, чтобы этого не произошло

Полагаю, проблема в моей функции dados_update, но я не знаю, что не так.

Это мой контроллер

   <?php
      defined('BASEPATH') OR exit('No direct script access allowed');
      class dados extends CI_Controller {

        public function __construct()
         {
    parent::__construct();
    $this->load->helper(array('form', 'url'));
    $this->load->model('dados_model');
    $this->load->database();

}

       public function index()
  {

$data['dados']=$this->dados_model->get_all_dados();
$this->load->view('dados_view',$data);

}
public function ajax_edit($id)
{
    $data = $this->dados_model->get_by_id($id);
    echo json_encode($data);
}

public function dados_update()

   {

 $config = array(
'upload_path' => "./assets/uploads/",
'allowed_types' => "gif|jpg|png|jpeg|pdf",
'max_size' => "2048000",
 'overwrite'=> TRUE 

 );

 $this->load->library('upload',$config);

 $this->upload->do_upload('userfile');

 $data2=array('upload_data' => $this->upload->data());

    $data = array(
        'Nome' => $this->input->post('Nome'),
        'Sobrenome' => $this->input->post('Sobrenome'),
        'End' => $this->input->post('End'),
        'Cidade' => $this->input->post('Cidade'),
        'Foto'=> $data2['upload_data']['file_name']
    );
 $this->dados_model->dados_update(array('ID' => $this->input- 
 >post('ID')), $data);
 echo json_encode(array("status" => TRUE));
 }

Моя модель

<?php
 defined('BASEPATH') OR exit('No direct script access allowed');

 class dados_model extends CI_Model
 {

var $table = 'dados';


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

public function get_all_dados()
 {
 $this->db->from('dados');
 $query=$this->db->get();
 return $query->result();
  }


   public function get_by_id($id)
{
$this->db->from($this->table);
$this->db->where('ID',$id);
$query = $this->db->get();

return $query->row();
  }


public function dados_update($where, $data)
  {
$this->db->update($this->table, $data, $where);
return $this->db->affected_rows();
 }

Мой скрипт ajax

<script type="text/javascript">
$(document).ready( function () {
$('#table_id').DataTable();
} );
   var save_method; //for save method string
  var table;

 function edit_pessoa(ID)
 {
  save_method = 'update';
  $('#form')[0].reset(); // reset form on modals

  //Ajax Load data from ajax
  $.ajax({
  url : "<?php echo site_url('dados/ajax_edit/')?>/" + ID,
  type: "GET",
  dataType: "JSON",
  success: function(data)
  {
    $('[name="ID"]').val(data.ID);
    $('[name="Nome"]').val(data.Nome);
    $('[name="Sobrenome"]').val(data.Sobrenome);
    $('[name="End"]').val(data.End);
    $('[name="Cidade"]').val(data.Cidade);
    $('[name="userfile"]').val(data.userfile);



    $('#modal_form').modal('show'); // show bootstrap modal when complete 
     loaded
    $('.modal-title').text('Edit dados'); // Set title to Bootstrap modal 
       title

     },
   error: function (jqXHR, textStatus, errorThrown)
    {
    alert('Error get data from ajax');
     }
     });
      }

  function save()
  {
   var url;
   if(save_method == 'add')
   {
    url = "<?php echo site_url('dados/dados_add')?>";
  }
 else
 {
 url = "<?php echo site_url('dados/dados_update')?>";
 }

 $('#form').submit(function(e)
  {

   $.ajax({
    url : url,
    type: "POST",
    data: new FormData(this),
    dataType: "JSON",
     processData:false,
     contentType:false,
     cache:false,
     async:false,
    success: function(data)
    {
       //if success close modal and reload ajax table
       $('#modal_form').modal('hide');
      location.reload();// for reload a page
    },
    error: function (jqXHR, textStatus, errorThrown)
    {
        alert('Error adding / update data');
    }
});
});
}
     </script>

и это мой взгляд

       <!-- Bootstrap modal -->
     <div class="modal fade" id="modal_form" role="dialog">
        <div class="modal-dialog">
       <div class="modal-content">
        <div class="modal-header">
       <button type="button" class="close" data-dismiss="modal" aria- 
         label="Close"><span aria-hidden="true">&times;</span></button>
       <h3 class="modal-title">dados Form</h3>
         </div>
         <div class="modal-body form">


        <form action="#"  method="post" enctype="multipart/form-data" 
               id="form" 
                class="form-horizontal">
           <input type="hidden" value="" name="ID"/>
          <div class="form-body">
            <div class="form-group">

    <label class="control-label col-md-3">Nome</label>
    <div class="col-md-9">
    <input name="Nome" placeholder="" class="form-control" 
    type="text">
  </div>
   </div>

  <div class="form-group">
   <label class="control-label col-md-3">Sobrenome</label>
  <div class="col-md-9">
    <input name="Sobrenome" placeholder="City" class="form-control" 
   type="text">
   </div>
   </div>

   <div class="form-group">
   <label class="control-label col-md-3">Endereço</label>
   <div class="col-md-9">
    <input name="End" placeholder="" 
    class="form-control" type="text">

    </div>
    </div>

    <div class="form-group">
    <label class="control-label col-md-3">Cidade</label>
    <div class="col-md-9">
    <input name="Cidade" placeholder="" class="form-control" 
     type="text">

        </div>
        </div>
        <div class="form-group">
         <label class="control-label col-md-3">Imagem</label>
         <div class="col-md-9">
        <input type="file" name="userfile" placeholder="" class="form- 
   control">
    </div>
     </div>                            
    </div>
    </div>
      <div class="modal-footer">
        <button type="submit" class="btn btn-danger" data- 
       dismiss="modal">Cancel</button>
      <input type ="submit" name="submit" value="Salvar"  id="btnSave " 
     onclick="save()" class="btn btn-primary" />
        </div>

            </form>
         </div><!-- /.modal-content -->
       </div><!-- /.modal-dialog -->
     </div><!-- /.modal -->
      <!-- End Bootstrap modal -->

        </body>
      </html>
...