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

 
Vista:
sin imagen de perfil

Al guardar los registros en la DB me los duplica.

Publicado por Sergio (26 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
sin imagen de perfil
Val: 604
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Al guardar los registros en la DB me los duplica.

Publicado por Miguel (218 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