PDA

Ver la Versión Completa : heckbox...


Fr@n
02-06-2003, 09:07:11
Tema sesiones solucionado... ara tengo una consulta de Oracle, de una lista de personas... cada persona tiene asignado un checkbox, el codigo para saber si está checkeado es :

if ($nomvar)
{
echo "checkeado";
}
else
{
echo "no checkeado";
}

No ??????

Pués como puedo saber que persona es la que lo tiene checkeado y cual no ?? lo he probado haciendo la misma consulta en la pagina siguiente y haciendo:

stmt= ($conn, "select de la lista de personas" );
OCIExecute(stmt);

while (OCIFechtInto($stmt, &$data, OCI_ASSOC)
{
$nom=$data["NOMBRE_PERSONA"];
$ape=$data["APELLIDO_PERS"]

// Y aki pongo el if del checkbox

if ($checkbox)
{
echo "$nom $ape está checkeado";
}
else
{
echo "$nom $ape no está checkeado";
}
}

Pero siempre me pone la última persona mirada tantas veces como filas en el select como si no estuviera checkeado....

Es muy muy muy muy urgente puesto q me juego nota en un trabajo, agradeceria muchiiiiiiisimo un solución o almenos una respuesta aclarando algún posible fallo. Gracias por adelantado!!

roman
02-06-2003, 17:15:43
Creo que aquí estamos confundiendo las cosas.

Una cosa es la consulta SQL y otra los valores del formulario como los recibe PHP.

Primero asegurate de estar recibiendo correctamente los valores. La página del formulario podría verse así:

<form method='post' action='consulta.php'>
<input type="checkbox" name="persona1">
<input type="checkbox" name="persona2">
<input type="checkbox" name="persona3">
<input type="submit">
</form>


Y 'consulta.php' recibirá los valores. Aunque la forma que pones para verificarlos puede funcionar lo más correcto sería así:


check1 = isset($persona1);
check2 = isset($persona2);
check3 = isset($persona3);


Si estos valores los recibes bien entonces el problema está en cómo haces la consulta. Revísala y luego nos cuentas.

// Saludos

Emilio
02-06-2003, 22:31:21
Para controlar checkbox en bucles yo suelo usar algo parecido a esto...


<!--formulario.php -->
<form name="form" method="post" action="loquesea.php">
<?
while ($row = mysql_fetch_array($result)) {
?>
<input name="checkbox[]" type="checkbox" value="<? echo $row["CODIGO"]; ?>">
aquí todo el HTML que quieras....
<?
}
?>
</form>



<?
// loquesea.php
for ($i = 0; $i <= count( $checkbox ); $i++) {
echo "El cliente código ".$checkbox[$i]." ha sido seleccionado<br>";
}
?>


Ten en cuenta que checkbox no chequeados no son enviados por POST, por lo tanto si tienes 100 checkbox y sólo tres de ellos chequeados, únicamente esos serán enviados.

hacer uso de isset() está bien en ocasiones para controlar si recibimos o no un check, pero en bucles que generan los check no es muy buena técnica ya que a priori no sabes cuantos tienes que generar y controlar un chorro tan largo tendrías que hacer piruetas para asignarle valores y para controlar cuales llegan, por el contrario el uso de arrays en HTML en estos casos es más eficiente.

Saludos
Emilio