PHP - Problema al insertar

 
Vista:
sin imagen de perfil
Val: 54
Ha aumentado 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Problema al insertar

Publicado por Sergio (112 intervenciones) el 05/10/2021 12:59:29
Buenos días. Estoy haciendo una aplicación y estoy intentando insertar registros escribiendo directamente en una tabla. Cuando inserto el primer registro todo ok. Si inserto otro registro, me inserta 2, si vuelvo a insertar otro registro, me inserta 3 y así sucesivamente. Os pongo el código que tengo

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
<table class="table table-bordered table-responsive w-100 d-block d-md-table mt-0 mr-3" id="tabla_detalle">
								<thead style="background-color: blue; color: white; font-weight: bold;">
									<tr>
										<th class="col-md-6">Descripción</th>
										<th>Cantidad</th>
										<th>Precio</th>
										<th>Subtotal</th>
										<th>Editar</th>
										<th>Eliminar</th>
									</tr>
								</thead>
					<tbody>
					<?php
 
						$sql_pre = "SELECT * FROM presupuestos WHERE id_presupuesto = '".$mostrar['id_presupuesto']."'";
						$resultado_pre = mysqli_query($conexion, $sql_pre);
						$row=mysqli_fetch_assoc($resultado_pre);
						$total_presupuesto = $row['total_presupuesto'];
						$sql_detalles = "SELECT * FROM detalles_presupuesto WHERE id_presupuesto = '".$mostrar['id_presupuesto']."' order by id_detalle_presupuesto ASC";
						$resultado_detalle = mysqli_query($conexion, $sql_detalles);
						while ($mostrar_detalle = mysqli_fetch_assoc($resultado_detalle)){
							?>
 
							<tr>
								<td id="id_detalle" data-id_detalle="<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>" style="display:none"><?php echo $mostrar_detalle['id_detalle_presupuesto'];?></td>
								<td id="descripcion" data-id_descripcion="<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>" contenteditable><?php echo $mostrar_detalle['descripcion'];?></td>
								<td id="cantidad" data-id_cantidad="<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>" contenteditable><?php echo $mostrar_detalle['cantidad'];?></td>
								<td id="precio" data-id_precio="<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>" contenteditable><?php echo number_format($mostrar_detalle['precio'], 2, ',', '.').'€';?></td>
								<td><?php echo number_format($mostrar_detalle['subtotal'], 2, ',', '.').'€';?></td>
 
 
								<td style="text-align: center;">
									<span class="btn btn-warning btn-sm" data-toggle="modal" data-target="#modalEditar"
											onclick="agregaFrmActualizardetalle('<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>')">
										<span class="fas fa-edit"></span>
									</span>
								</td>
								<td style="text-align: center;">
									<span class="btn btn-danger btn-sm" onclick="eliminarDatos('<?php echo $mostrar_detalle['id_detalle_presupuesto'];?>')">
										<span class="fas fa-trash-alt"></span>
									</span>
								</td>
 
							</tr>
 
 
						<?php
 
						$id_pre=$mostrar['id_presupuesto'];
 
							}
						?>
								<tr>
									<td id="id_pre" style="display:none" data-id_pre="<?php echo $id_pre;?>"></td>
									<td id="descripcion_add" contenteditable></td>
									<td id="cantidad_add" contenteditable></td>
									<td id="precio_add" contenteditable></td>
								</tr>
 
								</tbody>
 
							</table>
<span type="button" class="btn btn-success mb-4" id="agregar">Añadir linea <span class="fas fa-plus-circle"></span></span>

Lo primero es la tabla y ahora os pongo el código jquery que hace la llamada ajax

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
$(document).on("click", "#agregar", function(e){
		e.preventDefault();
		var id_presupuesto = $("#id_pre").val();
		var descripcion_add = $("#descripcion_add").text();
		var cantidad_add = $("#cantidad_add").text();
		var precio_add = $("#precio_add").text();
 
		$.ajax({
			url: "añadir_linea.php",
			method: "POST",
			data: {"id_pre":id_presupuesto, "descripcion":descripcion_add, "cantidad":cantidad_add, "precio":precio_add},
			success: function(data){
 
				alertify.success(data);
				var posicion = $('#id_posicion_presupuesto').val();
				load(posicion);
 
			}
		})
	});

Y ahora os pongo el archivo añadir_linea.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
    include "../clases/conexion.php";
    $obj= new conectar();
    $conexion = $obj->conexion();
    $id_pre = $_POST['id_pre'];
    $descripcion = $_POST['descripcion'];
    $cantidad = $_POST['cantidad'];
    $precio = $_POST['precio'];
    $precio = (float)$precio;
    $cantidad = (int)$cantidad;
    $subtotal = $cantidad * $precio;
    $sql = mysqli_query($conexion, "INSERT INTO detalles_presupuesto (id_presupuesto, descripcion, cantidad, precio, subtotal) VALUES ('$id_pre',
                                   '$descripcion', '$cantidad', '$precio', '$subtotal')");
 
    if(!$sql){
        echo "Error al actualizar los datos" . mysqli_error($conexion);
    }else{
        echo "Se han actualizado los datos";
    }
?>

Espero que me podáis ayudar. Muchas gracias.
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