Foros del Web » Programando para Internet » PHP »

Problemas codigo al hacer un delete

Estas en el tema de Problemas codigo al hacer un delete en el foro de PHP en Foros del Web. Buenas a todos, estoy haciendo un backend y tengo un problema al tratar de borrar las filas de una tabla. Me ocurre que despues de ...
  #1 (permalink)  
Antiguo 03/02/2016, 11:21
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Problemas codigo al hacer un delete

Buenas a todos,


estoy haciendo un backend y tengo un problema al tratar de borrar las filas de una tabla.

Me ocurre que despues de elegir con un checkbox que filas borrar, no llega a borrarlas.

Veo que el problema es que no recoge cuantas filas se han clickado. Porque he realizado un alert despues de recoger con isset si se han pulsado y siempre indica que 0 filas.

Pego el codigo:

if(isset($_POST["Id"])) {
$delete = $_POST["Id"];
$cantidad = count($delete);
for ($i=0; $i<$cantidad; $i++) {
$del_id = $delete[$i];
mysqli_query($conexion,"DELETE FROM usuarios WHERE Id='".$del_id."'")or
die("Problemas en el select:".mysqli_error($conexion));
}
echo "<script>alert('Elementos eliminado');</script>";

echo "<script language='JavaScript'>window.self.location='BBDD_u suarios.php';</script> ";
}


echo"
<form method='post' action='form2.php'>
<input type='submit' name='borrar' value='Borrar fila'>
</form>
";


Y pego el codido del checkbox:

<tr>

<td colspan='1'> <input type='checkbox' name='Id[]' value=".$Id."><span name='id'>".$reg['Id']."</span></td>



Gracias por la ayuda!
  #2 (permalink)  
Antiguo 03/02/2016, 11:35
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas codigo al hacer un delete

¿Los checkbox están dentro o fuera del formulario?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 03/02/2016, 11:56
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

Estan dentro :)
  #4 (permalink)  
Antiguo 03/02/2016, 12:45
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas codigo al hacer un delete

Cita:
Iniciado por sentoki79 Ver Mensaje
Estan dentro :)
¿Podrías mostrar el código completo?

Porque para que digas que nunca vienen dichos datos entonces algo anda mal con dicho formulario.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 03/02/2016, 13:00
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

Gracias por tratar de echarme una mano compañero, incluyo el codigo:


<html>

<head>
<title>Usuarios</title>
<META name='robot' content='noindex, nofollow'>
</head>

<?php




$conexion=mysqli_connect("localhost","root","","us uarios")or die("Problemas con la conexión");
$registros=mysqli_query($conexion,"select * from usuarios")or
die("Problemas en el SELECT:".mysqli_error($conexion));
while($reg=mysqli_fetch_array($registros))
{
$Id=$reg['Id'];

echo "
<body>

<div align='center'>
<table border='0' width='600' style='font-family: Verdana; font-size: 8pt' id='table1'>

<form method='POST' action='form2.php'>
<tr>
<td colspan='1'><p align='center'><b>Id: </b></td>
<td width='50%'><p align='center'><b>nombre usuario:</b></td>
<td width='50%'><p align='center'><b>contrasenya:</b></td>
<td width='50%'><p align='center'><b>nombre :</b></td>
<td width='50%'><p align='center'><b>primer apellido:</b></td>
<td width='50%'><p align='center'><b>segundo apellido:</b></td>
<td width='50%'><p align='center'><b>DNI:</b></td>
<td width='50%'><p align='center'><b>Email:</b></td>
<td width='50%'><p align='center'><b>Telefono:</b></td>
<td width='50%'><p align='center'><b>Privilegios:</b></td>
</tr>
<tr>

<td colspan='1'> <input type='checkbox' name='Id[]' value=".$Id."><span name='id'>".$reg['Id']."</span></td>

<td width='50%'><p align='center'><input type='text' name='user' size='10' value='".$reg['NombreUsuario']."'></td>

<td width='50%'><p align='center'><input type='text' name='password' size='10' value='".$reg['Password']."'>

<td width='50%'><p align='center'><input type='text' name='nombre' size='10' value='".$reg['Nombre']."'></td>

<td width='50%'><p align='center'><input type='text' name='apellido1' size='10' value='".$reg['Apellido1']."'>

<td width='50%'><p align='center'><input type='text' name='apellido2' size='10' value='".$reg['Apellido2']."'>

<td width='50%'><p align='center'><input type='text' name='DNI' size='10' value='".$reg['DNI']."'>

<td width='50%'><p align='center'><input type='text' name='email' size='10' value='".$reg['Email']."'>

<td width='50%'><p align='center'><input type='text' name='telefono' size='10' value='".$reg['Telefono']."'>

<td width='50%'><p align='center'><input type='text' name='privilegio' size='10' value='".$reg['Privilegio']."'>

<tr>
<td width='50%'>&nbsp;</td>
<td width='50%'>&nbsp;</td>
</tr>
<input type='hidden' name='id' value='".$reg['Id']."'>
<tr>
<td width='100%' colspan='2'>
<p align='center'>
<input type='submit' value='Actualizar datos' name='B1'></td>
</tr>
</form>
</table>
<tr/>
</div>

";
}
if(isset($_POST["Id"])) {
$delete = $_POST["Id"];
$cantidad = count($delete);
for ($i=0; $i<$cantidad; $i++) {
$del_id = $delete[$i];
mysqli_query($conexion,"DELETE FROM usuarios WHERE Id='".$del_id."'")or
die("Problemas en el DELETE:".mysqli_error($conexion));
}

echo "<script>alert('Elementos eliminado');</script>";

echo "<script language='JavaScript'>window.self.location='BBDD_u suarios.php';</script> ";
}


echo"
<form method='post' action='form2.php'>
<input type='submit' name='borrar' value='Borrar fila'>
</form>

<form method='post' action='Nuevo_Usuario.php'>
<input type='submit' name='nuevo' value='Introducir nuevo'>
</form>
";
mysqli_close($conexion);
?>

</body>

</html>
  #6 (permalink)  
Antiguo 03/02/2016, 13:03
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas codigo al hacer un delete

Si estás usando un while() para imprimir un formulario por cada registro entonces no hay necesidad de usar la notación de array, ese sería un error a considerar.

Ahora, cuando recibas el formulario (una vez corregido) ¿podrías usar var_dump() para revisar qué valores vienen en el POST?

Código PHP:
Ver original
  1. var_dump($_POST);

¿Viene el Id o no?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 03/02/2016, 13:48
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

La verdad es que no lo pinta por pantalla.
He pegado el var_dump justo aqui:

var_dump($_POST);
if(isset($_POST["Id"])) {
$delete = $_POST["Id"];
$cantidad = count($delete);
for ($i=0; $i<$cantidad; $i++) {
$del_id = $delete[$i];
mysqli_query($conexion,"DELETE FROM usuarios WHERE Id='".$del_id."'")or
die("Problemas en el DELETE:".mysqli_error($conexion));
}


Porque si lo pongo dentro del isset esperando a que entre dentro del if, no se ejecuta var_dump ya que no recoge por post y no entra dentro del if.

Te pongo el resultado de var_dump fuera del isset:

array(1) { ["borrar"]=> string(11) "Borrar fila" }

"borrar" es el identificador del submit.

Y como has indicado he eliminado el array del identificador del checkbox.

Saludos
  #8 (permalink)  
Antiguo 04/02/2016, 08:18
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problemas codigo al hacer un delete

El código que pegaste arriba es de la página form2.php? Porque hacia allá es a donde estás dirigiendo el formulario. Si no tienes una página form2.php borra eso del action del formulario y déjalo así: action="".
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #9 (permalink)  
Antiguo 04/02/2016, 09:09
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

Buenas,


he probado a hacer lo que me indicas, pero no ha funcionado
Sigue indicando que la variable Id esta vacia ...debo hacer un if (isset($_POST['Id'])) dentro del isset del boton borrar? o directamente haciendo un post al identificado del checkbox ya recoje los checkbox que se han clickado?
  #10 (permalink)  
Antiguo 04/02/2016, 09:16
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problemas codigo al hacer un delete

Ya veo que estás haciendo mal, tienes los botones de eliminar y de nuevo usuario en forms separados a donde estan los checkbox por eso nunca llega el resto de controles. Debes colocar el botón eliminar dentro del primer formulario y eliminar lo del action como te dije antes.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #11 (permalink)  
Antiguo 04/02/2016, 16:47
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

Muchas gracias era eso!

como indicabas esta fuera del <form> donde estaba el checkbox.

Ahora me estoy peleando para que no salga un boton de borrar por cada fila, porque sino a la hora del delete solo borra la fila del boton pulsado. Ya me imagino que es poner el boton fuera del alcance del while ...si lo consigo subo el codigo por si hay alguien interesado.

Saludos y gracias!
  #12 (permalink)  
Antiguo 04/02/2016, 16:54
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas codigo al hacer un delete

Cita:
Muchas gracias era eso!
Yo ya te había mencionado lo mismo desde un inicio, en fin...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #13 (permalink)  
Antiguo 04/02/2016, 16:56
Avatar de chronos682  
Fecha de Ingreso: febrero-2004
Ubicación: Tunja - Boyacá - Colombia
Mensajes: 627
Antigüedad: 20 años, 2 meses
Puntos: 69
Respuesta: Problemas codigo al hacer un delete

Cita:
Iniciado por sentoki79 Ver Mensaje
Muchas gracias era eso!

como indicabas esta fuera del <form> donde estaba el checkbox.

Ahora me estoy peleando para que no salga un boton de borrar por cada fila, porque sino a la hora del delete solo borra la fila del boton pulsado. Ya me imagino que es poner el boton fuera del alcance del while ...si lo consigo subo el codigo por si hay alguien interesado.

Saludos y gracias!
Coloca el botón fuera del while para que sólo se vea al final.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #14 (permalink)  
Antiguo 05/02/2016, 09:44
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

Entendi al input del checkbox, no al boton de borrar ..no obstante muchas gracias por los consejos me han ido orientando por donde debía de ir
  #15 (permalink)  
Antiguo 05/02/2016, 09:45
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas codigo al hacer un delete

Cita:
Iniciado por pateketrueke Ver Mensaje
Yo ya te había mencionado lo mismo desde un inicio, en fin...

Entendi al input del checkbox, no al boton de borrar ..no obstante muchas gracias por los consejos me han ido orientando por donde debía de ir
  #16 (permalink)  
Antiguo 05/02/2016, 09:53
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problemas codigo al hacer un delete

Cita:
Iniciado por sentoki79 Ver Mensaje
Entendi al input del checkbox, no al boton de borrar ..no obstante muchas gracias por los consejos me han ido orientando por donde debía de ir
Sí claro, pero es obvio que no pueden estar en formularios diferentes si tienen relación entre si.

Eso lo aprendes leyendo un manual básico de HTML sobre formularios.

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Etiquetas: delete, mysql, select, sql, tabla, usuarios
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 07:04.