Foros del Web » Programando para Internet » PHP »

Problema con checkbox

Estas en el tema de Problema con checkbox en el foro de PHP en Foros del Web. Hola, lo primero es agradeceros vuestra ayuda por leer mi post y también daros las gracias por el foro que hacéis, que ya me ha ...
  #1 (permalink)  
Antiguo 19/08/2004, 19:53
 
Fecha de Ingreso: agosto-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Problema con checkbox

Hola, lo primero es agradeceros vuestra ayuda por leer mi post y también daros las gracias por el foro que hacéis, que ya me ha resuelto alguna que otra duda.

Bien, soy algo inexperta, así que puede que mi duda sea una tontería, ruego me perdonéis. Al tema: he hecho una tabla que te enseña unos registros y que en la última columna tiene un checkbox para marcar los registros que quiera eliminar. El código (resumido) es este:

Código PHP:
<form action="admin_usuarios2.php" method="post">
<?
$y
=0;
while (
$row=mysql_fetch_array($result))
  {
  echo (
'<tr><td>'.$row["id_cli"].'</td>');
  echo (
'<td>'.$row["nombre"].'</td>');    
  echo (
'<td><input type="hidden" name="$valor[$y]" value="$row["id_cli"]">
          <input type="checkbox" name="$vector[$y]"></td><tr>'
);
  
$y=($y+1);
  }
?>
<input type="submit" value="Eliminar" name="elim">
La estructura del código la copié de una que funcionaba bien, pero que era de tamaño fijo. El problema viene al utilizar variables para hacer la tabla de tamaño arbitrario. En mi caso los arrays $valor[] y $vector[] parecen no almacenar ningún valor, cómo debería utilizarlos? con comillas simlpes? con comillas dobles? sin nada?.

He hecho muchos experimentos sin resultado alguno, así que agradecería mucho vuestra ayuda.
  #2 (permalink)  
Antiguo 20/08/2004, 04:56
Avatar de cometron  
Fecha de Ingreso: mayo-2003
Ubicación: Madrid
Mensajes: 151
Antigüedad: 20 años, 10 meses
Puntos: 0
Código PHP:
<form action="admin_usuarios2.php" method="post">
<?
$y
=1;
while (
$row=mysql_fetch_array($result))
  {
  echo (
'<tr><td>'.$row["id_cli"].'</td>');
  echo (
'<td>'.$row["nombre"].'</td>');    
  echo (
'<td><input type=\"hidden\" name=\"$valor[$y]\" value=\"$row['id_cli']\">
          <input type=\"checkbox\" name=\"$vector[$y]\"></td><tr>'
);
  
$y++;
  }
?>
<input type="submit" value="Eliminar" name="elim">
Prueba asi a ver si te funciona
  #3 (permalink)  
Antiguo 20/08/2004, 10:09
 
Fecha de Ingreso: agosto-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Muchas gracias por la respuesta.

Siento mucho decir que sigue sin funcionar .Tal y como está da un error "parse error, unexpected T_STRING".

Código PHP:
echo ('<td><input type=\"hidden\" name=\"$valor[$y]\" value=\"$row['id_cli']\">
<input type=\"checkbox\" name=\"$vector[$y]\"></td><tr>'
); 
Tanteando un poco he visto que poniendo el "id_cli" con comillas dobles ya no da error, pero el vector valores sigue sin almacenar nada. Además tal y como está en la respuesta ni siquiera aparecen los "check", sale un campo de texto con el nombre de la variable que debería ir ahi.

¿Alguna solución?. Quizás me esté complicando mucho, ¿Existe alguna otra manera de hacer lo mismo?

Muchas gracias por todo
  #4 (permalink)  
Antiguo 20/08/2004, 10:32
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 3 meses
Puntos: 5
Prueba esto:

Código PHP:
print "<td><input type=\"hidden\" name=\""$valor[$y]."\" value=\""$row['id_cli']."\"> <input type=\"checkbox\" name=\"".$vector[$y]."\"></td><tr>"
Es que al incluir matrices en cadenas de texto sin cerrarlas creo que da problemas. O sea cada vez que incluyes una array cierras y luego vuelves a abrir, si no tendrás problemas :S (creo que es por eso)

Salu2 ;)

Última edición por yoseman; 20/08/2004 a las 10:36
  #5 (permalink)  
Antiguo 20/08/2004, 13:31
 
Fecha de Ingreso: agosto-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Muchísimas cracias por la aclaración, de ahora en adelante lo haré así.

Pero he debido hacer algo mal porque sigue sin hacer lo que yo esperaba

Código PHP:
echo (count($valor)."<br>"); 
Cuando después hago esto para que me diga el tamaño del vector siempre me da 0. ¿Alguna idea de cuál puesde ser el problema? los vectores están mal inicializados? mal usados?

Gracias de antemano.
  #6 (permalink)  
Antiguo 20/08/2004, 15:08
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 5 meses
Puntos: 1
a ver zari. Donde defines $valor ???
cuando haces esto:

Código PHP:
print "<td><input type=\"hidden\" name=\""$valor[$y]."\" value=\""$row['id_cli']."\"> <input type=\"checkbox\" name=\"".$vector[$y]."\"></td><tr>"
lo unico que generas es HTML. No defines nada, antes de hacer eso debiste haber definido la variable $vector, $valor como arreglos y llenarlas con algun contenido.
Podrias mostrarme el codigo donde lo haces?

un saludo
  #7 (permalink)  
Antiguo 21/08/2004, 08:12
 
Fecha de Ingreso: agosto-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Hola, no se si me habré explicado bien del todo, lo que yo quiero hacer es generar un html similar a esto (esto si funciona y $valor y $vector si q tienen valores):

Código:
<form action="exp2.php" method="post">
opcion1 <input type="hidden" name="valor[0]" value=" uno">
<input type="checkbox" name="vector[0]"><br>
opcion2 <input type="hidden" name="valor[1]" value=" dos">
<input type="checkbox" name="vector[1]"><br>
opcion3 <input type="hidden" name="valor[2]" value=" tres">
<input type="checkbox" name="vector[2]"><br>
<input type="submit" name="proc">
¿Cómo debería hacerse el código PHP para que genere cualquier número de checkbox?. ¿Es posible hacer eso en PHP?. ¿Si no se puede hacer así hay alguna otra forma de hacerlo?.

Saludos y mil gracias
  #8 (permalink)  
Antiguo 21/08/2004, 16:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Cita:
¿Cómo debería hacerse el código PHP para que genere cualquier número de checkbox?. ¿Es posible hacer eso en PHP?. ¿Si no se puede hacer así hay alguna otra forma de hacerlo?.
Te suenal los bucles? (for() por ejemplo ...) ? ..

Un saludo,
  #9 (permalink)  
Antiguo 22/08/2004, 08:57
 
Fecha de Ingreso: agosto-2004
Mensajes: 5
Antigüedad: 19 años, 7 meses
Puntos: 0
Hola.
Cita:
Te suenal los bucles? (for() por ejemplo ...) ? ..
Creo que eso se da por hecho y disculpadme pero esto no sé a cuento de qué viene.

Mi duda es simplemente que por qué los "checkbox" y los "hidden" en el código en HTML funcionan correctamente, y sin embargo en el código PHP que puse anteriormente (que supuestamente genera lo mismo) no lo hacen. Si alguien conoce la respuesta a esto estaría muy agradecida si me la explica (no es necesario que nadie me explique qué es un "for").

Saludos y gracias.
  #10 (permalink)  
Antiguo 22/08/2004, 18:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 2 meses
Puntos: 129
Bueno . disculpa por qué leí tu pregunta fuera de contexto y no ví que ya de cierta menera usabas bucles para representar tus N checkbox ..

El caso es que hablando en HTML .. un checkbox puede tener valor y para que PHP asocie un grupo de checkbox estos han de ser de nombre tipo "vector" (array): name="variable[]" .. puedes usar [] para indicar que el indice del array será autonumérico (comenzando en cero) ..

Código PHP:
<form action="admin_usuarios2.php" method="post"> 
<? 
while ($row=mysql_fetch_array($result)) 
  { 
  echo (
'<tr><td>'.$row["id_cli"].'</td>'); 
  echo (
'<td>'.$row["nombre"].'</td>');     
  echo (
'<td><input type=\"checkbox\" name=\"id[]\" value=\"$row['id_cli']\"></td><tr>'); 
  } 
?> 
<input type="submit" value="Eliminar" name="elim">
El campo "hidden" no amerita en este caso ya que el checkbox ya contiene su valor asociado. NOTA: sólo pasan los valores de los checkbox seleccionados .. los demás indices NO estarán definidos para tu script PHP.

Y en admin_usuarios2.php los recibiras y podrías procesarlos como indica esta FAQ que habla justamente de este tema:

http://www.forosdelweb.com/showthrea...710#post518710

Un saludo,
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 17:00.