PHP - problema con delete multiple

 
Vista:
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Alejandro (172 intervenciones) el 29/04/2020 12:03:52
hola buenos dias,

os comento, quiero hacer un borrado general de los datos de todas las tablas, tengo una base de datos MYSQL con una tabla padre y trece tablas hijas con una foreign key al id de la tabla padre, restriccion de borrado en cascada.

Tengo una tabla hija que tiene otra foreign key a otra tabla hija. Entonces lo que hago en PHP es borrar primero el registro de las hijas segun su FK porque sino MYSQL no me deja borrar directamente el registro en la tabla padre ya que tengo una dependencia entre dos tablas hijas.

Tengo el siguiente codigo que no funciona, me lleva al else directamente:

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
<?php
 
session_start();
include("conexion.php");
 
$id = $_GET['id_personal'];
 
$borrar = (isset($_POST['borrar']))?$_POST['borrar']:"";
 
if($borrar){
 
$consulta = "DELETE FROM areas WHERE codigo_persona_area=".$id;
$resultado = mysqli_query($GLOBALS['conn'],$consulta);
 
$consulta2 = "DELETE FROM coordinacion WHERE codigo_persona_coordinacion=".$id;
$resultado2 = mysqli_query($GLOBALS['conn'],$consulta2);
 
$consulta3 = "DELETE FROM ayuda_economica WHERE codigo_persona_ayuda=".$id;
$resultado3 = mysqli_query($GLOBALS['conn'],$consulta3);
 
$consulta4 = "DELETE FROM carne_profesionalidad WHERE codigo_persona_carne=".$id;
$resultado4 = mysqli_query($GLOBALS['conn'],$consulta4);
 
$consulta5 = "DELETE FROM certificados_profesionalidad WHERE codigo_persona_certificados=".$id;
$resultado5 = mysqli_query($GLOBALS['conn'],$consulta5);
 
$consulta6 = "DELETE FROM conocimientos_informaticos WHERE codigo_persona_informatica=".$id;
$resultado6 = mysqli_query($GLOBALS['conn'],$consulta6);
 
$consulta7 = "DELETE FROM discapacidad WHERE codigo_persona_discapacidad=".$id;
$resultado7 = mysqli_query($GLOBALS['conn'],$consulta7);
 
$consulta8 = "DELETE FROM disponibilidad_geografica WHERE codigo_persona_dispGeo=".$id;
$resultado8 = mysqli_query($GLOBALS['conn'],$consulta8);
 
$consulta9 = "DELETE FROM disponibilidad_horaria WHERE codigo_persona_dispHora=".$id;
$resultado9 = mysqli_query($GLOBALS['conn'],$consulta9);
 
$consulta10 = "DELETE FROM experiencia_profesional WHERE codigo_persona_exp=".$id;
$resultado10 = mysqli_query($GLOBALS['conn'],$consulta10);
 
$consulta11 = "DELETE FROM formacion_academica_empleo WHERE codigo_persona_form=".$id;
$resultado11 = mysqli_query($GLOBALS['conn'],$consulta11);
 
$consulta12 = "DELETE FROM permiso_conducir WHERE codigo_persona_conducir=".$id;
$resultado12 = mysqli_query($GLOBALS['conn'],$consulta12);
 
$consulta13 = "DELETE FROM prestacion WHERE codigo_persona_prestacion=".$id;
$resultado13 = mysqli_query($GLOBALS['conn'],$consulta13);
 
$consulta14 = "DELETE FROM datos_personales WHERE id_personal=".$id;
$resultado14 = mysqli_query($GLOBALS['conn'],$consulta14);
 
echo "Persona borrada del sistema</br>";
 
}else{
 
    echo "No se han borrado los datos</br>";
 
 
}
 
echo "<a href='listar_usuarios.php'>Volver</a>";
 
//header('Location: empleo.php?id_personal="'.$id.'"');
 
cerrarBD();
 
?>

No se si esta mal como lo he planteado, borro todas las hijas y al final elimino la tabla padre "datos_personales".

Espero que me ayudeis, saludos
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Julio (830 intervenciones) el 29/04/2020 13:03:02
Hola.

Dices que te lleva al else, ¿no?

1
2
3
4
5
6
7
$borrar = (isset($_POST['borrar']))?$_POST['borrar']:"";
 
if ($borrar) {
    // Lo que sea en el if
} else {
    // Lo que sea en el else
}

Si te lleva al else es porque $borrar es false o algo relacionado con false (la cadena vacía por ejemplo). Si te lleva al else, todo lo que comentas del borrado de tablas y tal no llega a ejecutarse. En definitiva, si te lleva al else es porque no existe $_POST['borrar'] por cómo lo has planteado.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
Imágen de perfil de Annonymous
Val: 61
Ha aumentado su posición en 3 puestos en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Annonymous (18 intervenciones) el 29/04/2020 14:34:24
Antes de entrar al if hace un

1
2
var_dump($borrar);
die();

asi podes ver que contenido llega en la variable. Como dice Julio si entra al else es porque lo que esta llegando en borrar esta yendo al else siempre y no esta ejecutando lo que esta dentro del if
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
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Alejandro (172 intervenciones) el 29/04/2020 16:53:29
Ante de nada gracias a los dos por contestar. He hecho var_dump y efectivamente me devuelve 0.

Este es el codigo de la pagina de origen:

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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
	<head>
    <meta name="robots" content="noindex">
		<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
		<link href="style_propio.css" rel="stylesheet" type="text/css"/>
		<title>Barrio empleo</title>
 
	</head>
	<body>
    <?php
        session_start();
        include("conexion.php");
 
    ?>
    <header class="header">
 
      <div>
      <img src="imagenes/mancomunidad.png" id="imgMancomunidad"><h1>BARRIO EMPLEO</h1><img src="imagenes/barrioempleo.png" id="imgBarrio">
      </div>
      <p> <a  href="index.php">Volver</a></p>
    </header>
    <table class="table">
        <?php
 
            $consulta="SELECT * FROM datos_personales";
            $resultado=mysqli_query($GLOBALS['conn'],$consulta);
 
            echo"<tr>";
            echo"<th>ID</th>";
            echo"<th>Nombre</th>";
            echo"<th>Apellidos</th>";
            echo"<th>Areas</th>";
            echo"<th>Informe general</th>";
            echo"<th>Modificar datos generales</th>";
            echo"</tr>";
                    while($filas=mysqli_fetch_array($resultado)){
                        echo"<tr>";
                        echo"<td>".$filas['id_personal']."</td>";
                        echo "<td>".$filas['nombre']."</td>";
                        echo"<td>".$filas['apellido1']." ".$filas['apellido2']."</td>";
                        echo"<td>
                        <a href='indice_areas.php?id_personal=".$filas['id_personal']."'><img src='imagenes/flecha.png' class='imgtabla'></a>
                        </td>";
                        echo"<td><a href='consultar_usuario.php?id_personal=".$filas['id_personal']."' style='text-decoration:none'><img src='imagenes/informe.jpg' class='imgtabla'></a></td>";
                        echo"<td><a href='modificar_usuarios.php?id_personal=".$filas['id_personal']."' style='text-decoration:none'><img src='imagenes/editar.jpg' class='imgtabla'></a></td>";
                        echo"<td><form method='post' action='eliminar_usuarios.php?id_personal=".$filas['id_personal']."'><button type='submit' name='borrar'><img src='imagenes/borrar.jpg' id='imgEliminar' title='Eliminar usuario'></button></form></td>";
                        echo"</tr>";
 
                    }
 
                        mysqli_free_result($resultado);
        ?>
    </table>
 
 
    </body>
</html>

Listo las personas registradas y obtengo los datos a traves de un array para obtener el id de esa persona y lo paso a la direccion de la pagina para luego obtenerlo en la pagina de validacion a traves de get
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Julio (830 intervenciones) el 29/04/2020 17:11:58
En lugar de:

1
<button type='submit' name='borrar'>

Prueba con cambiar button y poner input

1
<input type='submit' name='borrar'>

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Alejandro (172 intervenciones) el 30/04/2020 10:29:09
Funciona ;) , pero me gustaria introducir una imagen de una X para que quede mas apañao. Lo he intentado poniendo type='image' pero no me borra los datos
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
Imágen de perfil de Julio
Val: 2.007
Plata
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Julio (830 intervenciones) el 30/04/2020 10:36:52
Es que un type="image" es para subir una imagen, no para hacer un submit del formulario. Para hacerlo con una imagen tal como quieres, creo que ya deberías meterte en temas de JavaScript.

De todas formas, prueba a poner algo así:

1
<input type='submit' name='borrar' value="X">

Te debería generar el botón de enviar el formulario (en este caso para borrar) con una X. Ahora ya coge el CSS y cámbiale los estilos para que esa X sea tan bonita como tú quieras.

-----------------------------
Aprende la programación desde una perspectiva básica y simplista en Programación Básica
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
sin imagen de perfil
Val: 336
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

problema con delete multiple

Publicado por Alejandro (172 intervenciones) el 30/04/2020 10:39:09
Vale xD muchas gracias por la ayuda de nuevo ;)
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