Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problema con un checkbox en PHP. (https://www.clubdelphi.com/foros/showthread.php?t=46230)

EgArOtH 26-07-2007 20:15:35

Problema con un checkbox en PHP.
 
Veran tengo una lista de checkbox con el siguiente name (Borrar[]) y el siguiente valor (VALOR="on"). Todo esto lo paso por el metodo POST a otro formulario. Una vez alli hago un count de forma correcta (count($_POST['Borrar']) y me cuenta bien todos los checkbox que tengo pero a la hora de mirar si los checkbox estan seleccionados no se bien como hacerlo. Se que al activar un checkbox se activa lo que tienes en el valor pero no se como utilizarlo. Lo e intentado de esta forma, pero esta mal (if ($_POST['Borrar']=="On")) y de esta otra tambien (if ($_POST[$Borrar[x]]=="On")) y ya nose que hacer. Espero que sepan hecharme una mano. Gracias de antemano a todos. Un saludo.

roman 26-07-2007 22:41:28

Si nombras "borrar[]" a tus checkbox, no sabrás realmente cuáles se seleccionaron. Vamos a suponer que tienes este formulario

Código:

<form method='post' action='checkbox.php'>
A <input type='checkbox' name='borrar[]'>
B <input type='checkbox' name='borrar[]'>
C <input type='checkbox' name='borrar[]'>
<input type='submit'>
</form>

Si seleccionas una sola casilla, no importa cual, siempre recibirás el mismo arreglo:

Código:

[borrar] => Array
                (
                                [0] => on
                )

Esto es así, porque PHP asigna los índices en automático. Si seleccionases las casillas B y C, recibirás esto:

Código:

[borrar] => Array
                (
                                [0] => on
                                [1] => on
                )

en lugar de lo que esperarías:

Código:

[borrar] => Array
                (
                                [1] => on
                                [2] => on
                )

Entonces, es mejor asignar tú mismo los índices en el formulario en sí:

Código:

<form method='post' action='checkbox.php'>
A <input type='checkbox' name='borrar[0]'>
B <input type='checkbox' name='borrar[1]'>
C <input type='checkbox' name='borrar[2]'>
<input type='submit'>
</form>

Así, recibirás los índices correctos. Para ver cuáles se seleccionaron, bastaría ver si el índice correspondiente está presente en el arreglo:

Código PHP:

if (array_key_exists($indice$_POST['borrar'])
{
  ...


Los índices de tu arreglo borrar[] pueden ser consecutivos como en el ejemplo, o bien, ya dependiendo de tu caso particular, alguna otra cosa. Por ejemplo, si las casillas corresponden a elementos de una base de datos, el índice podría ser el ID de cada registro.

// Saludos

EgArOtH 27-07-2007 09:20:32

Gracias...
 
Muchas gracias por resolverme la duda, ya me funciona todo perfecto, como tu bien decias corresponde a campos de la base de datos y e utilizado los id de los campos y me a resultado facil aunque sin tu respuesta.... otro gallo cantaria xDD. Gracias tambien por la brevedad en la respuesta. Un Saludo compañero.

Javier.


La franja horaria es GMT +2. Ahora son las 17:53:22.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi