Foros del Web » Programando para Internet » PHP » CodeIgniter »

insertar registro si el codigo no existe o actualizar caso contrario

Estas en el tema de insertar registro si el codigo no existe o actualizar caso contrario en el foro de CodeIgniter en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 09/04/2017, 13:27
 
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.-
  #2 (permalink)  
Antiguo 12/04/2017, 13:54
 
Fecha de Ingreso: septiembre-2015
Mensajes: 142
Antigüedad: 8 años, 7 meses
Puntos: 13
Respuesta: insertar registro si el codigo no existe o actualizar caso contrario

y porque tienes un enredo ? tu mismo lo dices si no existe el código ( inserto el registro completo ) si existe actualizo solo el precio :
if ( codigoProducto){
edit ->
}
else {
add ->
}

tienes un pequeño arroz con mango en tu controlador , trata primero de ver la idea principal de lo que quieres hacer y luego codea.

Etiquetas: insert, update
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:25.