PHP - Al guardar los registros en la DB me los duplica.

   
Vista:

Al guardar los registros en la DB me los duplica.

Publicado por Sergio (20 intervenciones) el 07/07/2017 12:23:19
Saludos Pues eso, cuando hago un insert me guarda dos registros iguales.

Desde aqui se hace la llamada con AJAX:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$("#addproducto").click(function(){
    var formaddproducto = $("#formaddproducto").serialize();
    $.ajax({
        type: 'POST',
        url: 'db-admin/añadir-registro-producto.php',
        data: formaddproducto,
        success: function(respuesta){
          if(respuesta == 1)
          {
              var resultado = "Se ha añadido el Producto correctamente.";
              //$( "#alerta" ).addClass( "alert alert-error collapse" );
              $( "#alerta" ).html( resultado );
              $( "#alerta" ).show();
              $( "#alerta" ).fadeOut( 5000 );
          }
           if(respuesta == 2)
          {
              var resultado = "Se ha producido un error de conexion a la DB, intentelo de nuevo.";
              //$( "#alerta" ).addClass( "alert alert-error collapse" );
              $( "#alerta" ).html( resultado );
              $( "#alerta" ).show();
              $( "#alerta" ).fadeOut( 5000 );
            }
 
            if(respuesta == 3)
          {
              var resultado = "Todos los campos deben estar rellenos.";
              //$( "#alerta" ).addClass( "alert alert-error collapse" );
              $( "#alerta" ).html( resultado );
              $( "#alerta" ).show();
              $( "#alerta" ).fadeOut( 5000 );
          }
 
        }
    });
     return false;
});


Y este es el INSERT a la DB. Yo no veo el porque lo duplica por que solo hay un execute.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
<?php
session_start();
include_once 'conexion-db.php';
/*Creamos la conexion*/
$nuevoconex = new Conexion();
 
//Creamos las Variables
$fecha        = date('y-m-d');
$cat          = $_POST['categoria'];
$subcat       = $_POST['subcategoria'];
$nombreproduc = $_POST['nombreproduc'];
$categoria    = $_POST['categoria'];
$cod_prod     = $_POST['cod_prod'];
$subcategoria = $_POST['subcategoria'];
$descripcion  = $_POST['descripcion'];
$precio       = $_POST['precio'];
$stock        = $_POST['stock'];
 
$imag  = ($_FILES['img1']['name']);
$imag1 = ($_FILES['img2']['name']);
$imag2 = ($_FILES['img3']['name']);
$imag3 = ($_FILES['img4']['name']);
 
 
$dir_imag1 = "images/" .$cat."/".$subcat."/".$imag;
$dir_imag2 = "images/" .$cat."/".$subcat."/".$imag1;
$dir_imag3 = "images/" .$cat."/".$subcat."/".$imag2;
$dir_imag4 = "images/" .$cat."/".$subcat."/".$imag3;
 
// comprobamos que no haya campos vacios.
if(isset($cat)&&!empty($cat)&&
   isset($subcat)&&!empty($subcat)&&
    isset($nombreproduc)&&!empty($nombreproduc)&&
    isset($categoria)&&!empty($categoria)&&
	 isset($cod_prod)&&!empty($cod_prod)&&
	 isset($subcategoria)&&!empty($subcategoria)&&
    isset($descripcion)&&!empty($descripcion)&&
   isset($precio)&&!empty($precio)&&
    isset($stock)&&!empty($stock)
	 ){
 
try{
 
$sentencia = $nuevoconex->prepare("INSERT INTO `tblproducto`(`Nombre`, `Categoria`,`Cod_prod`,
 `Imagen`, `Imagen1`, `Imagen2`, `Imagen3`, `Subcategoria`, `Descripcion`, `Precio`, `Stock`, `Fecha`) 
VALUES (:nombreproduc, :categoria, :codprod, :imagen, :imagen1, :imagen2, :imagen3, 
:subcategoria, :descripcion, :precio, :stock, :fecha);");
 
$sentencia->bindParam(':nombreproduc', $nombreproduc, PDO::PARAM_STR);
$sentencia->bindParam(':categoria', $cat, PDO::PARAM_INT);
$sentencia->bindParam(':codprod', $cod_prod, PDO::PARAM_INT);
$sentencia->bindParam(':imagen', $dir_imag1, PDO::PARAM_STR);
$sentencia->bindParam(':imagen1', $dir_imag2, PDO::PARAM_STR);
$sentencia->bindParam(':imagen2', $dir_imag3, PDO::PARAM_STR);
$sentencia->bindParam(':imagen3', $dir_imag4, PDO::PARAM_STR);
$sentencia->bindParam(':subcategoria', $subcat, PDO::PARAM_INT);
$sentencia->bindParam(':descripcion', $descripcion, PDO::PARAM_STR);
$sentencia->bindParam(':precio', $precio, PDO::PARAM_STR);
$sentencia->bindParam(':stock', $stock, PDO::PARAM_STR);
$sentencia->bindParam(':fecha', $fecha, PDO::PARAM_STR);
 
$resultado = $sentencia->execute();
 
switch($resultado){
 
    case true:
        echo 1;
 $sentencia = null;
        break;
}
 
 
}catch(PDOException  $e ){
echo "Error: ".$e;
    echo 2;
}
 
}else{
 
           echo 3;
 
}
 
$nuevoconex = null;
?>

Gracias y un saludo.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Al guardar los registros en la DB me los duplica.

Publicado por Miguel (211 intervenciones) el 08/07/2017 13:58:11
Posiblemente se hacen varios clicks en el botón, y al ser con AJAX no se ve cuando se envían las llamadas. Deberías ocultar el botón mientras se hace la petición o usar una variable global para saber si ya se está procesando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad