Foros del Web » Programando para Internet » PHP »

como recogo variables de un formulario en array?

Estas en el tema de como recogo variables de un formulario en array? en el foro de PHP en Foros del Web. Hola a todos. Parecerá una tontería lo que os planteo, pero llevo cerca de dos horas con el tema y no se como sacarle punta. ...
  #1 (permalink)  
Antiguo 06/07/2005, 17:57
 
Fecha de Ingreso: noviembre-2004
Mensajes: 72
Antigüedad: 13 años
Puntos: 0
como recogo variables de un formulario en array?

Hola a todos.
Parecerá una tontería lo que os planteo, pero llevo cerca de dos horas con el tema y no se como sacarle punta. He hecho búsquedas y he hallado cosas interesantes, pero no consigo que me de resultado lo que quiero. Os comento:

Tengo un formulario tal que así:

Código PHP:
<form action="a3_agentes.php" method="post">
           <?php echo "<input name = 'usuario' type = 'hidden' value = '".$usuario."'>"?>
          <table width="75%" border="0" align="center" cellpadding="0" cellspacing="0" style="border: 1px solid #007ab1">
          <?php 
        
while ($p_acti mysql_fetch_array($result))
            {                
            echo 
"<tr align='center'>";
            echo 
"<td align='left' class='text'><img src='/zona_r/img/espacio.gif' width='10' height='5'>".$p_acti['nombre_promo']."</td>";
            echo 
"<td align='right'>";
            echo 
"<input type='checkbox' name= '".($p_acti['nombre_promo'])."' id= '".($promo_activas['nombre_promo'])."' value= 'SI'>";

            echo 
"</td>";
            echo 
"</tr>";
            }
        
?>
          <tr align="center">
          <td colspan="2"></td>
          </tr>
        <tr>
         </table>
         <input type="submit" name="Submit" value="Finalizar" class="boton2">
              </form>
Con este formulario mando a a3.php el campo oculto que se como se llama y las variables de los chekbox que el usuario active. De esta manera pueden llegarme 3 o 5 o las que sean variables (selección del cliente hecha a una bd) más la variable oculta.
El caso es que me voy a a3.php y escribo esto (cosecha de Cluster, búsqueda foro) para ver que recibo:

Código PHP:
foreach ($_POST as $nombre_var => $valor){
   echo 
$nombre_var." = ".$valor."<br>";

y recibo lo siguiente:

Array ( [usuario] => Luis [Dunas] => SI [Palmeras] => SI [Submit] => Finalizar )

Se puede ver que el formulario envía correctamente, el campo oculto (usuario), y en este caso dos variables que han sido activadas con los checkbox.
El caso es que quiero pasar todo este array a un array y poder tratarlo, es decir, que pueda llamar a
$var[0] para usar el campo usuario y luego con un count() saber cuantas variables he recibido y poder trabajar con ellas, para modificar la bd correspondiente.
El caso es que no se como hacerlo . Los arrays me traen frito. Necesito alguna ayuda para seguir.
Gracias a todos y un saludo
  #2 (permalink)  
Antiguo 07/07/2005, 04:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Hola But11, no entiendo muy bien que utilidad le quieres dar dentro de tu script con esto. Si no te importa, detalla un poco más que es lo que quieres hacer para darte una solución mejor.

Por otra parte, cuando quieras saber el contenido que tiene un array existe una función propia del PHP que lo hace:

print_r ($nombre_array);

la ventaja que tiene esta función es que si dentro de un array existe un subarray también lo muestra, mientras que el foreach que tu describes no creo que lo haga.

saludos.
  #3 (permalink)  
Antiguo 07/07/2005, 05:15
 
Fecha de Ingreso: noviembre-2004
Mensajes: 72
Antigüedad: 13 años
Puntos: 0
HOla pellagofio
El problema que tengo es que no se que nombre recibe el array que es mandado por el formulario a a3.php. Para comprobar que es lo que viene del formulario uso lo siguiente:

print_r($_POST);

que me devuelve esto:

Array ( [usuario] => Luis [Dunas] => SI [Palmeras] => SI [Submit] => Finalizar )

Estas son las variables que viene del formulario vía POST. Una es usuario, y las otras dos restantes (que pueden ser más, porque el usuario puede seleccionar en los chekbox los que quiera) son las que tengo que recibir pero no se como hacerlo.
He leído las faqs y había encontrado y script de Cluster donde podía ver que variables me venían, por eso lo he usado, solo para comprobar que vienen.

He intentado recoger ese array en a3.php pero no consigo recogerlo. Teoricamente el checkbox donde genero el array es:

Código PHP:
echo "<input type='checkbox' name= '".($p_acti['nombre_promo'])."' id= '".($promo_activas['nombre_promo'])."' value= 'SI'>"
El caso es que me parece que no viene ningún array, sino que vienen variables, y como el cliente puede seleccionar las que quiera, no puedo controlar los nombres que vienen.
El caso es que he probado varias líneas para generar el chekbox, pero no lo consigo. Aquí tengo algunos intentos:

Código PHP:

echo "<input type='checkbox' name= 'npromo[]' id= 'npromo['".($p_acti['nombre_promo'])."']' value= 'SI'>";
echo 
"<input type='checkbox' name= 'npromo['".($p_acti['nombre_promo'])."']' id= 'npromo['".($p_acti['nombre_promo'])."']' value= 'SI'>"
El primer chekbox, envía esto a a3.php
Array ( [usuario] => Luis [npromo_] => SI [Submit] => Finalizar )

El segundo chekbox, envía esto a a3.php
Array ( [usuario] => Luis [npromo_] => SI [Submit] => Finalizar )

Osea, que no lo consigo. Sigo leyendo y probando.
Gracias.
bye
  #4 (permalink)  
Antiguo 07/07/2005, 06:37
 
Fecha de Ingreso: noviembre-2003
Mensajes: 383
Antigüedad: 14 años
Puntos: 2
Veamos, dices que que el print_r ($_POST) te devuelve ...

Array ( [usuario] => Luis [Dunas] => SI [Palmeras] => SI [Submit] => Finalizar )

... entonces estas recibiendo 3 variables ...

usuario
Dunas
Submit

... lo único que te queda hacer es trabajar con ellas, por ejemplo ...

Código PHP:
if ( $_POST['usuariò'] == ... 
o

Código PHP:
$promocionID$_POST['npromo']; 
Ahora bien, dices que serán más las variables que recibirá el script en función de lo que seleccione el usuario.
Pues entonces lo que puedes hacer es determinar si la variable existe o no ...

Código PHP:
if ( isset($_POST['nombreVariable']) ) ...  //SI esta declarada entonces ... lo que sea. 
o

Código PHP:
if ( $_POST['nombreVariable']!="") ...  //SI la variable NO esta vacia ... lo que sea. 
[PHP]

o

Código PHP:
if ( !empty($_POST['nombreVariable'] ) ...  //SI la variable NO esta vacia... lo que sea 

Espero que te aclare algo.

saludos.
  #5 (permalink)  
Antiguo 07/07/2005, 14:45
 
Fecha de Ingreso: noviembre-2004
Mensajes: 72
Antigüedad: 13 años
Puntos: 0
Bueno lo que quería ya lo he conseguido.

Gracias pellagofio por tu ayuda. En tu último mensaje, me has hecho ver que mi enfoque o planteamiento estaba mal o no sabía como expresarlo. Tu me decías que recogiera la variable, pero el problemna era que no sabía el nombre del array. Esto me ha hecho cambiar la filosofía del checkbox y plantearme que envez de recibir un SI, recibiera el valor de la variable. De esta forma, ya se que todas las que rec ibo del formulario tienen SI, y lo que me interesaba eran los nombres de las variables porque luego hay que modificar un registro en la bd con esos campos. El checkbox quedaría algo asín:

Código PHP:
echo "<input type='checkbox' name= 'npromo[]' value= '".($p_acti['nombre_promo'])."'>"
Antes si te das cuenta en el checkbox ponía en el name, el array con el valor de la variable, además del id con el valor de la variable. Por eso no recibía bien los valores del checkbox. De esta forma recibo lo siguiente:

Array ( [usuario] => Luis [npromo] => Array ( [0] => Dunas [1] => Palmeras ) [Submit] => Finalizar )

Donde usuario es una variable normal que viene oculta y el array npromo[] en este caso tiene dos campos con los que ya puedo trabajar.

En fín, gracias de nuevo

bye
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 12:39.