Ver Mensaje Individual
  #1 (permalink)  
Antiguo 09/04/2017, 13:27
Maru77
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
insertar registro si el codigo no existe o actualizar caso contrario

Hola!!!

Necesito hacer una comparación de código entre dos tablas, si el código existe actualizar solo el precio y si no existe insertar el registro completo.

Dejo el código que estoy intentando armar con algunos comentarios, espero me puedan ayudar ya que hace rato estoy dando vueltas con esto, desde ya muchas gracias!

controller

Código PHP:
public function actProductosconImportacion(){

        
$this->load->library('form_validation');
        
$this->data['custom_error'] = '';


        
// if codigoImportar == codigoProducto
        //      actualizo el precio
        // else
        //      inserto todos los campos



        // if ($codigoImportar == $codigoProducto) {
        // no logré levantar estos datos    

        
if ($this->form_validation->run('productos') == false) {

            
$this->data['custom_error'] = (validation_errors() ? '<div class="form_error">' validation_errors() . '</div>' false);

        } else {

            
$precioProducto $this->input->post('precioProducto');
            
$precioProducto str_replace(",",""$precioProducto);

            
$data = array(                

                
'precioProducto' => $precioProducto,                              

            );
            
// actualizo campo precio
            
if ($this->productos_model->edit('productos'$data'idProductos'$this->input->post('idProductos')) == TRUE) {

                
$this->session->set_flashdata('success','Producto editado con éxito!');
                
redirect(base_url() . 'index.php/productos/editar/'.$this->input->post('idProductos'));

            } else {

                
$this->data['custom_error'] = '<div class="form_error"><p>Ocurrió un error</p></div>';

            }
        }

        
$this->data['result'] = $this->productos_model->getById($this->uri->segment(3)); 
       
// $this->data['view'] = 'productos/editarProductos';
        
$this->load->view('tema/topo'$this->data);

        }

        
// inserto el registro completo a la tabla productos
        
else {

            
$precioProducto $this->input->post('precioProducto');
            
$precioProducto str_replace(",",""$precioProducto);

            
$data = array(                

                
'codigoProducto' => $this->input->post('codigoProducto'),
                
'detalleProducto' => $this->input->post('detalleProducto'), 
                
'precioProducto' => $precioProducto,//$this->input->post('precioProducto'),
            
);


            if ( 
is_numeric($id $this->productos_model->add('productos'$datatrue)) ) {
                
$this->session->set_flashdata('success','La Productos se agregó correctamente'); 
                
redirect('productos/editar/'.$id);

            } else {

                
$this->data['custom_error'] = '<div class="form_error"><p>An Error Occured.</p></div>';
            }
        }

        
$this->data['view'] = 'productos/adicionarProductos';
        
$this->load->view('tema/topo'$this->data);

    }

        } 


estos son los models para insertar y editar

Código PHP:
 function add($table,$data,$returnId false){
        
$this->db->insert($table$data);         
        if (
$this->db->affected_rows() == '1')
        {
                        if(
$returnId == true){
                            return 
$this->db->insert_id($table);
                        }
            return 
TRUE;
        }

        return 
FALSE;       
    }

    function 
edit($table,$data,$fieldID,$ID){
        
$this->db->where($fieldID,$ID);
        
$this->db->update($table$data);

        if (
$this->db->affected_rows() >= 0)
        {
            return 
TRUE;
        }

        return 
FALSE;       
    } 

Quizás haya otra forma de hacerlo, la ayuda será bienvenida :)
__________________
Saludos!!!
Maru.-