Foros del Web » Programando para Internet » PHP »

obtener variables de formulario "variable"

Estas en el tema de obtener variables de formulario "variable" en el foro de PHP en Foros del Web. Buenos dias, el problema es el siguiente: Tengo un formulario de checkboxes que se llena segun consulta a una BD dependiendo de las opciones que ...
  #1 (permalink)  
Antiguo 13/05/2009, 10:24
 
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 51
Antigüedad: 15 años, 8 meses
Puntos: 0
obtener variables de formulario "variable"

Buenos dias, el problema es el siguiente:

Tengo un formulario de checkboxes que se llena segun consulta a una BD dependiendo de las opciones que haya seleccionado el usuario en un formulario anterior. Ya con esto han de imaginarse que el formulario en ciertas oportunidades puede conformarse por 5 checkboxes y en otras por cientos.
Lo que necesito saber es lo siguiente:
Para recibir la informacion de las variables en otra pagina (a traves del $_POST) es necesario navegar por la totalidad de campos que llenaron el formulario en principio (ejecutando el mismo query que se uso para llenar el formulario con los checkboxes) o hay alguna manera de recibir directamente solo aquellos valores que fueron seleccionados?

lo que quiero hacer luego es ingresar los valores que fueron seleccionados en el formulario en una tabla de la base de datos pero no hayo como hacerlo.
Agradezco su ayuda
  #2 (permalink)  
Antiguo 13/05/2009, 10:57
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: obtener variables de formulario "variable"

Si colocas estos checkbox en forma de array, solo recibiras los que fueron seleccionados. Por ejemplo:

Código html:
Ver original
  1. <input type="checkbox" name="chk[]" value="1">
  2. <input type="checkbox" name="chk[]" value="2">
  3. <input type="checkbox" name="chk[]" value="3">
  4. <input type="checkbox" name="chk[]" value="4">
  5. ......

De esta forma recibiras un arreglo llamado chk, el cual tendra los que fueron seleccionados.
Y puedes recorrer facilmente este arreglo con un foreach.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 13/05/2009, 11:25
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: obtener variables de formulario "variable"

incluso, si quieres mantener una asociación debes usar índices:

Código HTML:
<input name="foo[3]" value="99"/>
<input name="foo[9]" value="261"/>
<input name="foo[11]" value="125"/>

<input name="candy[bar][does]" value="nothing"/> 
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #4 (permalink)  
Antiguo 13/05/2009, 11:41
 
Fecha de Ingreso: septiembre-2004
Mensajes: 324
Antigüedad: 19 años, 7 meses
Puntos: 13
Respuesta: obtener variables de formulario "variable"

usa un foreach para recorrer el resultado:
foreach($_POST['chk'] as $valor){
echo $valor;
}
  #5 (permalink)  
Antiguo 13/05/2009, 14:24
 
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 51
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: obtener variables de formulario "variable"

Buen<s tardes muchachos
Estoy tratando de hacerlo como me indicaron pero me esta dando un error al momento de tratar de tomar los datos con el foreach. A continuacion les coloco los codigos:...
Codigo que crea el formulario:


$mostrado1=mssql_query("SELECT * FROM PFA.dbo.estados");
$p=0;
while($row=mssql_fetch_array($mostrado1))
{
$nombre_estado=$row['nombre_estado'];
$id_estado=$row['id_estado'];
echo"<label><input type='checkbox' name='idestado[$p]' value='$id_estado'/>$nombre_estado</label> <br />";
$p=$p+1;
}


Codigo en donde intento tomar la informacion de los checkbox seleccionados:

foreach($_POST['idestado'] as $valor)
{
echo $valor;
}

El mensaje de error que me da es el siguiente:

Warning: Invalid argument supplied for foreach() in C:\wamp\www\PFA\nuevo_estudio3.php on line 152

Última edición por josefrl; 13/05/2009 a las 14:40 Razón: Para colocar el mensaje de error
  #6 (permalink)  
Antiguo 13/05/2009, 15:25
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: obtener variables de formulario "variable"

Donde estas definiendo el formulario en la primera página, podrias mostrarnoslo?

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #7 (permalink)  
Antiguo 13/05/2009, 15:32
 
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 51
Antigüedad: 15 años, 8 meses
Puntos: 0
Seguro...
el formulario lo defino de la siguiente manera:

<form name="form2" method="post" action="nuevo_estudio3.php">
<table width="80%" border="0" align="center">
<tr bgcolor="#000033">
<td ><div align="center"><strong><font color="#FFFFFF" size="2" face="Verdana">SELECCIONAR ESTADOS A AUDITAR</font></strong></div></td>
</tr>
<tr bgcolor="#000033" > <td> <div style=" overflow: auto; height:100px">
<?PHP include "selecciona_estados.php"?> </div></td>
</tr>

<tr bgcolor="#000033">
<td><div align="center"><strong><font color="#FFFFFF" size="1" face="Verdana">
<input name="Submit" type="submit" class="boton" onClick="Javascript:return validar(this.form);" value="Siguiente>>>">
&nbsp;</font></strong><input name="id_estudio" type="hidden" value="<?php echo "$id_estudio";?>"></div></td>
</tr>
</table>
</form>

en la pagina selecciona_estados.php tengo el codigo que me genera el contenido del formulario (los checkboxes), el codigo es el siguiente:
<?php
conectar();
$estados=mssql_query("SELECT * FROM PFA.dbo.estados");
$query11=mssql_query("select count (*) from PFA.dbo.estados");
$num_estados = mssql_fetch_array($query11);
$num1=$num_estados[0];
$mostrado1=mssql_query("SELECT * FROM PFA.dbo.estados");
if ($num1>1)
{
echo"<p>";
while($row=mssql_fetch_array($mostrado1))
{
$nombre_estado=$row['nombre_estado'];
$id_estado=$row['id_estado'];
echo"<label>
<input type='checkbox' name='$id_estado' value='$id_estado' />
$nombre_estado</label>
<br />";
}

echo "</p>";

}
else
echo"NO EXISTEN PROVEEDORES";
desconectar();

?>

Última edición por GatorV; 13/05/2009 a las 15:38
  #8 (permalink)  
Antiguo 13/05/2009, 15:53
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: obtener variables de formulario "variable"

Lo veo bastante bien, solo decirte que :

Código php:
Ver original
  1. echo"<label>
  2. <input type='checkbox' name='id_estado[]' value='$id_estado' />
  3. $nombre_estado</label>
y en nuevo_estudio3.php
Código php:
Ver original
  1. foreach($_POST['id_estado'] as $var)
  2. {
  3. echo $var;
  4. }
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #9 (permalink)  
Antiguo 14/05/2009, 07:06
 
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 51
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: obtener variables de formulario "variable"

Hola the saint,
Hice el cambio y sin embargo me continua mostrando el mismo error
"Warning: Invalid argument supplied for foreach() in C:\wamp\www\PFA\nuevo_estudio3.php on line 150"
tendre que habilitar algo en el php.ini?
a continuacion coloco las lineas que indica el mensaje de error
149--> foreach($_POST['id_estado'] as $var)
150--> {
151--> echo $var;
152--> }
  #10 (permalink)  
Antiguo 14/05/2009, 07:58
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: obtener variables de formulario "variable"

Linea 150?
Y que tienes antes de eso?
Los nombres de los input son id_estado[], sin el $ al principio, y veo que tienes un hidden con ese nombre, deberias quitarlo o cambiarle el nombre.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
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 09:25.