Foros del Web » Programando para Internet » PHP »

Problemas al recoger de un ckeckbox el id recogido de la base de datos

Estas en el tema de Problemas al recoger de un ckeckbox el id recogido de la base de datos en el foro de PHP en Foros del Web. Buenas! Vereis estoy creando un backend, y mi intención es crear en cada fila de una tabla un checkbox que si lo selecciona el usuario ...
  #1 (permalink)  
Antiguo 23/01/2016, 04:22
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Problemas al recoger de un ckeckbox el id recogido de la base de datos

Buenas!

Vereis estoy creando un backend, y mi intención es crear en cada fila de una tabla un checkbox que si lo selecciona el usuario y confirma en borrar se elimine esa fila. Para identificar que fila se selecciono a traves del checkbox se me ha ocurrido indicar en el atributo name el ID que tiene asignado cada fila en la BBDD.

EL problema lo tengo al comprobar dentro de un if que reciba que ID ha sido seleccionado. SI lo hago con un isset me da error de que el index is offset. Y si lo ejecuto como muestro en el codigo que adjunto en el mensaje, eliga el checkbox que eliga empieza siempre eliminando la última fila:

$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 $ID;
$login=$reg['NombreUsuario'];


echo "<form method='post' action='BBDD_usuarios.php' enctype='multipart/form-data'>";
echo "<input type='checkbox' name='$ID' >&nbsp";




mysqli_close($conexion);
echo "<form method='post' action='BBDD_usuarios.php' enctype='multipart/form-data'>";
echo "<input type='submit' name='borrar' value='borrar'>" ;
echo "</form>";
$borrar=$_REQUEST['borrar'];

if ($borrar){
$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));


if($_POST[$ID]=true){
echo "hola";
$selecc=$_POST[$ID];
echo $selecc;


mysqli_query($conexion,"delete from usuarios where id='.$selecc.'") or
die("Problemas en el delete:".mysqli_error($conexion));
echo "<form method='post' action='BBDD_usuarios.php' enctype='multipart/form-data'>";
}

mysqli_close($conexion);
}



Gracias de antemano por la ayuda!
  #2 (permalink)  
Antiguo 23/01/2016, 07:58
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 al recoger de un ckeckbox el id recogido de la base de datos

El id deberías colocarlo en el value no en el name y dejar el mismo name para todos con eso solo debes recorrer el array de checkbox al hacer submit del formulario y eliminar cada fila seleccionada.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #3 (permalink)  
Antiguo 23/01/2016, 15:07
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas al recoger de un ckeckbox el id recogido de la base de datos

Gracias por responder :)

Lo que ocurre es que eso seria ideal si utilizara ID como campos correlativos y que coincidera con el array del name en el checkbox. Pero no es asi

Ademas ahora he cambiado a que la clave primaria sea el nombre de usuario, con lo que he eliminado el ID como identificador.

No se en algo me pierdo, porque no veo como indicar que la fila seleccionada muestre el value para pasarlo como campo en la sentencia del delete.
Entiendo que con $_POST[nombreLogin] recogo el campo pero por las pruebas que he hecho ese post no esta recogiendo el nombreLogin que concuerda con la fila elegida.

Si me podeis dar más indicaciones estaría muy agradecido.

Saludos!
  #4 (permalink)  
Antiguo 23/01/2016, 15:33
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 al recoger de un ckeckbox el id recogido de la base de datos

Sigo insistiendo en que deberías colocar en el value de cada checkbox el valor del campo que uses como clave primaria, no deberías usar el nombre como clave primaria mejor dejar un campo numérico con autoincrement para evitar errores si se ingresa otro usuario a la bd con el mismo nombre.
__________________
Si te gustó la respuesta dale +1

HERNÁN G. SIABATO M.
[email protected]
  #5 (permalink)  
Antiguo 23/01/2016, 18:32
Avatar de xfxstudios  
Fecha de Ingreso: junio-2015
Ubicación: Valencia - Venezuela
Mensajes: 2.448
Antigüedad: 8 años, 9 meses
Puntos: 263
Respuesta: Problemas al recoger de un ckeckbox el id recogido de la base de datos

Cita:
Iniciado por sentoki79 Ver Mensaje
Gracias por responder :)

Lo que ocurre es que eso seria ideal si utilizara ID como campos correlativos y que coincidera con el array del name en el checkbox. Pero no es asi

Ademas ahora he cambiado a que la clave primaria sea el nombre de usuario, con lo que he eliminado el ID como identificador.

No se en algo me pierdo, porque no veo como indicar que la fila seleccionada muestre el value para pasarlo como campo en la sentencia del delete.
Entiendo que con $_POST[nombreLogin] recogo el campo pero por las pruebas que he hecho ese post no esta recogiendo el nombreLogin que concuerda con la fila elegida.

Si me podeis dar más indicaciones estaría muy agradecido.

Saludos!
Te podria decir que lo que te indican es la unica solucion, debes colocarles el mismo nombre a todos los checkbox y en el value va la id a procesar, ahora eso de colocar el nombre de usuario como clave primaria es un error garrafal, las coincidencias de nobres son tal que tendrias problemas con ello, es mejor una id numerica incremental de esa manerta puede indentificar mas facilemente todo
__________________
[email protected]
HITCEL
  #6 (permalink)  
Antiguo 24/01/2016, 07:57
 
Fecha de Ingreso: enero-2016
Mensajes: 3
Antigüedad: 8 años, 2 meses
Puntos: 0
Respuesta: Problemas al recoger de un ckeckbox el id recogido de la base de datos

Como te indican deberías ponerle el mismo nombre a todos los checkbox, luego puedes recorrer mediante un foreach todas las filas a borrar.

No hay problema en utilizar el username como identificador único, pero yo dejaría un ID como clave primaría. Lo único que con la decisión que has tomado deberías comprobar que no existe ningún usuario con dicho username en base de datos antes de crear un usuario nuevo..

Como value de los checkboxes debes poner el id que utilizaras en base de datos para borrar dichas filas.

Para acceder a los datos $_POST[NOMBRE DE LOS CHECKBOXES], de ahí que le pongas a todos el mismo nombre.

Un código de ejemplo:
Código PHP:
Ver original
  1. <form action="">
  2. <?php foreach ($usuarios as $usuario => $id): ?>
  3.         <?php echo $usuario ?>
  4.         <input type="checkbox" name="borrar" value="<?php $id ?>">
  5. <?php endforeach ?>
  6. </form>

Para recibir:
Código PHP:
Ver original
  1. $_POST['borrar']
  #7 (permalink)  
Antiguo 30/01/2016, 11:04
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problemas al recoger de un ckeckbox el id recogido de la base de datos

Muchas gracias! lo he hecho así y me ha salido bien!

Saludos!

Etiquetas: mysql, recoger, registro, 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 15:39.