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

Registro se guarda por duplicado

Estas en el tema de Registro se guarda por duplicado en el foro de CodeIgniter en Foros del Web. Hola a todos! Tengo un inconveniente, al agregar un registro lo guarda por duplicado de la siguiente manera actualPorcentaje 10 | marcaid 0 actualPorcentaje 0 ...
  #1 (permalink)  
Antiguo 17/10/2016, 14:59
 
Fecha de Ingreso: agosto-2003
Mensajes: 524
Antigüedad: 20 años, 8 meses
Puntos: 5
Registro se guarda por duplicado

Hola a todos!

Tengo un inconveniente, al agregar un registro lo guarda por duplicado de la siguiente manera

actualPorcentaje 10 | marcaid 0
actualPorcentaje 0 | marcaid 4

Este formulario me permite actualizar los precios a través de un porcentaje, previo seleccionar una marca

Código HTML:
<form id="formProductos" action="<?php echo base_url

() ?>index.php/actualizacion/adicionar" method="post">

<label for="">Porcentaje a actualizar</label>
            <input type="text" placeholder="Escriba el % de actualización" id="actualPorcentaje" name="actualPorcentaje"  />
                               
</form> 
Código PHP:
<?php
 
echo '<a id="enviar" href="'.base_url

().'index.php/actualizacion/adicionar/'.$marcaid.'"> Actualizar Precios</a>'
?>

Código HTML:
<script type="text/javascript">

$(document).ready(function(){
	
   $("#enviar").click(function(event){		
		
		$.ajax({
		type: "POST",
		data: $('#formProductos').serialize(),
		
		url: "<?php echo base_url();?>index.php/actualizacion/adicionar",
		
		dataType: 'json',
		
		success: function(data)
						   {
							

if(data.result == true){							

	$('.results').html(data);							

}							

else{							

	alert('Ocurrió un error al agregar un producto.');							

}
							
</script> 

función para insertar registros in model.php

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

función para adicionar registros en controller.php

Código PHP:
function adicionar(){

    
$this->load->library('pagination');

        
        
$config['base_url'] = base_url().'index.php/actualizacion/gerenciar/';

        
$config['total_rows'] = $this->actualizacion_model->count('actualprecios');

        
$config['per_page'] = 10;

        
$config['next_link'] = 'Próxima';

        
$config['prev_link'] = 'Anterior';

        
$config['full_tag_open'] = '<div class="pagination alternate"><ul>';

        
$config['full_tag_close'] = '</ul></div>';

        
$config['num_tag_open'] = '<li>';

        
$config['num_tag_close'] = '</li>';

        
$config['cur_tag_open'] = '<li><a style="color: #2D335B"><b>';

        
$config['cur_tag_close'] = '</b></a></li>';

        
$config['prev_tag_open'] = '<li>';

        
$config['prev_tag_close'] = '</li>';

        
$config['next_tag_open'] = '<li>';

        
$config['next_tag_close'] = '</li>';

        
$config['first_link'] = 'Primeira';

        
$config['last_link'] = 'Última';

        
$config['first_tag_open'] = '<li>';

        
$config['first_tag_close'] = '</li>';

        
$config['last_tag_open'] = '<li>';

        
$config['last_tag_close'] = '</li>';

            

        
$this->pagination->initialize($config);     

        
$this->data['results'] = $this->actualizacion_model->get('actualprecios','idActualizacion, actualPorcentaje,actualFecha','',$config['per_page'],$this->uri->segment(3));
        
        
        
$this->load->library('form_validation');

        
$this->data['custom_error'] = ''
      
            
        
$marcaid $this->uri->segment(3);
            
            
$this->data['productos'] = $this->actualizacion_model->getProductosById($marcaid);
            
            
$productos $this->data['productos'];
                                                       
            
$dataInicial date("Y").'-'.date("m").'-'.date("d");
            
            
$usuario $this->session->userdata('logado');
            
            
$actualPorcentaje $this->input->post('actualPorcentaje');
                        
            
            
$data = array(                
                
                
'actualPorcentaje' => $actualPorcentaje ,
                
                
'actualFecha' => $dataInicial,
                
                
'marcaid' => $marcaid,
                
                
'usuarioid' => $usuario
                );



           if ( 
is_numeric($id $this->actualizacion_model->add('actualprecios'$datatrue)) ) {
                
                
                foreach (
$productos as $p) {
                    
$idProdutos $p->idProdutos;        
                    
                    
$precoVenda $p->precoVenda;
                    
                    
$precioAnterior $p->precoVenda;
                    
                    
$precoVenda $precoVenda *($actualPorcentaje 100);
                    
                    
$sql "UPDATE produtos set precioAnterior = ?, precoVenda = ? WHERE idProdutos = ?";
            
                    
$this->db->query($sql, array($precioAnterior$precoVenda$idProdutos));
                    
                }
                                        
                
                
$this->session->set_flashdata('success','El registro de Actualización de Precios se agregó correctamente!!!');
                
                
redirect(base_url().'index.php/actualizacion/gerenciar/');     
                
            } else {
                
                
$this->data['custom_error'] = '<div class="form_error"><p>An Error Occured.</p></div>';

            }        


        
$this->data['view'] = 'actualizacionp/actualizacion';

        
$this->load->view('tema/topo'$this->data);

    }
 
                          }
        });
   });

}); 
__________________
Saludos!!!
Maru.-
  #2 (permalink)  
Antiguo 16/11/2016, 18:50
Avatar de xlos_mas_pro  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago
Mensajes: 359
Antigüedad: 13 años
Puntos: 11
Respuesta: Registro se guarda por duplicado

Yo te recomiendo cambiar el click por un submit del formulario y le quitas la acción con event.preventDefault(); luego bloqueas el boton de submit al enviarlo con un disable desde el javascript mientras se envia tu consulta ajax y luego lo vuelves a habilitar al recibir la confirmación

Además fíjate a escribir las consultas a la base dentro de un foreach

Etiquetas: duplicado, registro
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:58.