Foros del Web » Programando para Internet » PHP »

pasar array en formulario

Estas en el tema de pasar array en formulario en el foro de PHP en Foros del Web. Hola de nuevo! Tengo el siguiente codigo: Código PHP: <?php include  "conexion.php" ; include  "functions.php" ; $c = 0 ; $i = 0 ; echo ...
  #1 (permalink)  
Antiguo 04/08/2012, 09:59
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
pasar array en formulario

Hola de nuevo!

Tengo el siguiente codigo:

Código PHP:
<?php

include "conexion.php";
include 
"functions.php";




$c=0;
$i=0;


echo
    
"<form action='resultadoBusqueda.php' method='POST'>";
while (
$c<=3)
{
    echo 
"
    <select name='idIngrediente' size='1'>"
;
    


            
$consulta2=mysql_query("SELECT * FROM ingredientes ORDER BY nombreIngrediente");
            while (
$fila=mysql_fetch_array($consulta2))
                {
                    echo 
"<option value='".$fila['idIngrediente']."'>".$fila['nombreIngrediente']."</option>";
                    
$i++;
                }


    ;
    echo
    
"
    </select>"
;

    
    
$c++;
}
echo 
"<input type='submit'>

    </form>"
;
?>
Pero ahora cuando me manda el formulario no se como recibir los datos en un array de tal forma que reciba los cuatro ingredientes en:

$idIngrediente[1]
$idIngrediente[2]
$idIngrediente[3]
$idIngrediente[4]

He intentado poniendo un contador $i de la siguiente forma:

Código PHP:
<?php

include "conexion.php";
include 
"functions.php";




$c=0;
$i=0;


echo
    
"<form action='resultadoBusqueda.php' method='POST'>";
while (
$c<=3)
{
    echo 
"
    <select name='idIngrediente' size='1'>"
;
    

$i=0;

            
$consulta2=mysql_query("SELECT * FROM ingredientes ORDER BY nombreIngrediente");
            while (
$fila=mysql_fetch_array($consulta2))
                {
                    echo 
"<option value='".$fila['idIngrediente'][$i]."'>".$fila['nombreIngrediente']."</option>";
                    
$i++;
                }


    ;
    echo
    
"
    </select>"
;

    
    
$c++;
}
echo 
"<input type='submit'>

    </form>"
;
?>
y recogerlo con

Código PHP:
<?php
include "conexion.php";
include 
"functions.php";

$i=0;
while (
$i<=4) {
    
$idIngrediente[$i] =$_POST['idIngrediente'][$i];
    
$i++;

}

?>
pero no me ha salido

Como podria solucionarlo?

Gracias!
__________________
Tecnología y tutoriales
  #2 (permalink)  
Antiguo 04/08/2012, 10:10
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: pasar array en formulario

No entiendo del todo lo que intentas hacer, se supone que el funcionamiento normal de un select options es enviar la opcion seleccionada

y recuperarla con el metodo y el nombre del elemento.
ej

Código HTML:
Ver original
  1. <select name="ingredientes">
  2. <option value="item1">item1</option>


Código PHP:
Ver original
  1. $opcionSeleccionada = $_POST['ingredientes'];

Explica un poco mejor a ver si estoy equivocado.

Saludos!
  #3 (permalink)  
Antiguo 04/08/2012, 10:14
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: pasar array en formulario

En primera esta mal tu código, usas un select donde solo se puede escoger una sola opción, para lo que pretendes tienes dos opciones, darle el formato a tu select para que sea de multiple selección o usar varios select con el mismo name:

Para el primer caso:
Código HTML:
Ver original
  1. <select name="idIngredientes" multiple="multiple">
  2.      <option value="opcion1">Opcion 1</option>
  3.      <option value="opcion2">Opcion 2</option>
  4.      <option value="opcion3">Opcion 3</option>
  5.      <option value="opcion4">Opcion 4</option>

o la opción dos:

Código HTML:
Ver original
  1. <select name="idIngredientes[]">
  2.      <option value="opcion1">Opcion 1</option>
  3.      <option value="opcion2">Opcion 2</option>
  4.      <option value="opcion3">Opcion 3</option>
  5.      <option value="opcion4">Opcion 4</option>
  6.  
  7. <select name="idIngredientes[]">
  8.      <option value="opcion1">Opcion 1</option>
  9.      <option value="opcion2">Opcion 2</option>
  10.      <option value="opcion3">Opcion 3</option>
  11.      <option value="opcion4">Opcion 4</option>
  12.  
  13. <select name="idIngredientes[]">
  14.      <option value="opcion1">Opcion 1</option>
  15.      <option value="opcion2">Opcion 2</option>
  16.      <option value="opcion3">Opcion 3</option>
  17.      <option value="opcion4">Opcion 4</option>

En ambos casos se recoge de la misma manera:
Código PHP:
Ver original
  1. foreach($_POST['idIngredientes'] as $id) {
  2.      echo $id;
  3. }
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #4 (permalink)  
Antiguo 04/08/2012, 10:15
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: pasar array en formulario

Cita:
Iniciado por gjx2 Ver Mensaje
No entiendo del todo lo que intentas hacer, se supone que el funcionamiento normal de un select options es enviar la opcion seleccionada

y recuperarla con el metodo y el nombre del elemento.
ej

Código HTML:
Ver original
  1. <select name="ingredientes">
  2. <option value="item1">item1</option>


Código PHP:
Ver original
  1. $opcionSeleccionada = $_POST['ingredientes'];

Explica un poco mejor a ver si estoy equivocado.

Saludos!
Hola GJX2 gracias por contestar.

El caso es que tengo 4 selects para enviar 4 ingredientes (como maximo) que pueda contener una receta.

Entonces de esos 4 ingredientes que se manden con los 4 selects, buscara que recetas incluyen estos 4 ingredientes.

Pero para no poner 4 veces el select, que seria una opcion, y luego recoger uno a uno, he puesto un while que me crea los 4 selects.


No se si habra quedado un poco mas claro ahora.
__________________
Tecnología y tutoriales
  #5 (permalink)  
Antiguo 04/08/2012, 10:23
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: pasar array en formulario

Nemutagk.... GRACIAS!!!
Claro! No habia caido en select multiple!!
Si es que todavia soy demasiado novato!!!
Voy a probarlo y te cuento como ha ido.
__________________
Tecnología y tutoriales
  #6 (permalink)  
Antiguo 04/08/2012, 10:32
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: pasar array en formulario

Nemutagk... me da en resultadoBusqueda.php el siguiente error:

Código PHP:
 WarningInvalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/recetas/resultadoBusqueda.php on line 5 
No se donde puede estar el fallo...
__________________
Tecnología y tutoriales
  #7 (permalink)  
Antiguo 04/08/2012, 11:12
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: pasar array en formulario

Cita:
Iniciado por dryant Ver Mensaje
Nemutagk... me da en resultadoBusqueda.php el siguiente error:

Código PHP:
 WarningInvalid argument supplied for foreach() in /Applications/XAMPP/xamppfiles/htdocs/recetas/resultadoBusqueda.php on line 5 
No se donde puede estar el fallo...
Muestra tu formulario y tu código PHP...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)
  #8 (permalink)  
Antiguo 04/08/2012, 11:38
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: pasar array en formulario

Mira el formulario es este:

Código PHP:
<?php

include "conexion.php";
include 
"functions.php";


echo
    
"<form action='resultadoBusqueda.php' method='POST'>




    <select name='idIngrediente' multiple='multiple'>
         <option value='opcion1'>Opcion 1</option>
         <option value='opcion2'>Opcion 2</option>
         <option value='opcion3'>Opcion 3</option>
         <option value='opcion4'>Opcion 4</option>
    </select>



<input type='submit'>

    </form>"
;
?>
Y el archivo de recogida de datos este:

Código PHP:
<?php

include "conexion.php";

foreach(
$_POST['idIngredientes'] as $id) {
    echo 
$id;
    }
?>
__________________
Tecnología y tutoriales
  #9 (permalink)  
Antiguo 04/08/2012, 11:53
Avatar de gjx2  
Fecha de Ingreso: agosto-2008
Ubicación: R.D
Mensajes: 1.153
Antigüedad: 15 años, 8 meses
Puntos: 139
Respuesta: pasar array en formulario

El error es obvio tu elemento select se llama idIngrediente y le estas pasando al foreach un elelemnto k no existe idIngredientes

Saludos!
  #10 (permalink)  
Antiguo 04/08/2012, 12:05
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: pasar array en formulario

Cita:
Iniciado por gjx2 Ver Mensaje
El error es obvio tu elemento select se llama idIngrediente y le estas pasando al foreach un elelemnto k no existe idIngredientes

Saludos!
Ya he quitado la s y sigue fallando....
Alguna otra solucion?
__________________
Tecnología y tutoriales
  #11 (permalink)  
Antiguo 04/08/2012, 16:47
Avatar de dryant  
Fecha de Ingreso: agosto-2009
Ubicación: Malaga, Ceuta, España....
Mensajes: 283
Antigüedad: 14 años, 8 meses
Puntos: 10
Respuesta: pasar array en formulario

Al final lo he solucionado con el tutorial de desarrolloweb que hay en
http://www.desarrolloweb.com/articulos/1576.php
Muchisimas gracias por vuestras respuestas :)
__________________
Tecnología y tutoriales

Etiquetas: formulario, sql
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 22:02.