Foros del Web » Programando para Internet » PHP »

ayuda con metodos GET y POST

Estas en el tema de ayuda con metodos GET y POST en el foro de PHP en Foros del Web. Buenas amigos, recien me registro en el foro, me gustaria que me ayudaran en una cosa, tengo un libro de php con el que me ...
  #1 (permalink)  
Antiguo 05/05/2008, 11:16
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
ayuda con metodos GET y POST

Buenas amigos, recien me registro en el foro, me gustaria que me ayudaran en una cosa, tengo un libro de php con el que me estoy iniciando, la cosa es que llegue aca y me trabe, hago un form que le pase la informacion de datos personales de un form a otro que lo muestra, la cosa es que cuando lo corro me sale un error como este:
Gustos:
Warning: Invalid argument supplied for foreach() in C:\Documents and Settings\Administrador\Mis documentos\php\mios\form23.php on line 18 FIN

El Form 1 es este (todo en HTML):
Código HTML:
<html>

<head>
  <title></title>
</head>


<body style="font-family:tahoma;font-size:24;font-color:#8000FF">
<b>Introduzca sus datos personales!</b>


<form name="formulario" method="POST" action="\form23.php">

<table width="50%" border="0" cellspacing="0" cellpadding="0">
<tr>
	<td width="24%">Nombre</td>
    <td width="76%"><input name="nombre" type="text" id="nombre"></td>
</tr>
<tr>
	<td>Apellido</td>
    <td><input name="apellido" type="text" id="apellido"></td>
</tr>
<tr>
	<td>Correo</td>
    <td><input name="correo" type="text" id="correo"></td>
</tr>
<tr>
	<td>Estado Civil</td>
    <td><select name="estado" id="estado">
    	<option value="soltero">Solero</option>
        <option value="casado">Casado</option>
        <option value="divorciado">Divorciado</option>
        <option value="viudo">Viudo</option>
        </select>
    </td>
</tr>
<tr>
	<td>Numero de Hijos</td>
    <td>0<input name="hijos" type="radio" value="0" checked>
    	1<input name="hijos" type="radio" value="1">
        2<input name="hijos" type="radio" value="2">
        3<input name="hijos" type="radio" value="3">
        4<input name="hijos" type="radio" value="4">
    </td>
</tr>
<td>
	<td>Gustos</td>
    <td>Informatica<input type="checkbox" name="gustos []" value="informatica">
	    Buceo<input type="checkbox" name="gustos []" value="buceo">
        Magia<input type="checkbox" name="gustos []" value="magia">
        Jazz<input type="checkbox" name="gustos []" value="jazz">
	</td>
</tr>
<tr>

	<td><input type="submit" value="Enviar"></td>
    <td>&nbsp;</td>
</tr>
</table>
</form>
<p>&nbsp;</p>
</tr>
<?php



?>

</body>

</html> 
y la pagina que recibe y muestra es esta, la cual solo mostraria los gustos de la pagina anterior:
Código PHP:
</head>

<body>

<?php


foreach($_POST as $indice => $valor)
{
    echo 
"$indice : $valor<br>";
}
echo 
"<br> Gustos: <br>";
$gustos=$_POST["gustos"];
foreach(
$gustos as $indice => $valor)
{
    echo 
"$indice: $valor<br>";
}
echo 
"FIN del Programita!!!";


?>

</body>

</html>
PLS ayuda, hace dias que estoy tratando de entender por que no anda este simple ejercicio, se que es una boludes.
estoy usando el PHp Expert Editor y el Ampp Serv for Windows.
Gracias
elTin

Última edición por jam1138; 05/05/2008 a las 16:47 Razón: Favor de utilizar etiquetas de código
  #2 (permalink)  
Antiguo 05/05/2008, 11:43
Avatar de seik!  
Fecha de Ingreso: mayo-2006
Mensajes: 492
Antigüedad: 18 años
Puntos: 6
Re: ayuda con metodos GET y POST

el problema no esta en el metodo.. la funcion foreach esta generando error.. pero los datos si son pasados por el metodo post
__________________
sEIK! -Chile-
Analista Programador.
  #3 (permalink)  
Antiguo 05/05/2008, 11:45
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

y cual seria el problema, ayudenme no puedo avanzar de aca, estoy clavado!!!
  #4 (permalink)  
Antiguo 05/05/2008, 11:46
 
Fecha de Ingreso: abril-2008
Ubicación: Montevideo - Uruguay
Mensajes: 156
Antigüedad: 16 años
Puntos: 5
Re: ayuda con metodos GET y POST

Hi !

El error se genera aqui:
Código PHP:
$gustos=$_POST["gustos"];
foreach(
$gustos as $indice => $valor
Y es porque no puedes pasarle $_POST["gustos"], puedes pasarle unicamente $_POST ( o $_GET)... Lo que hace es recorrer cada $_POST que venga desde otro lado... Si haces eso del $_POST["gusto"] podrias imprimir su valor directamente y ya... Con for each imprimirá todos los POST que llegen.

Espero hayas entendido algo :S

-ByE-
  #5 (permalink)  
Antiguo 05/05/2008, 12:08
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

no ent¡indo cual seria la solucion, por que el autor de este libro lo escribe asi y dice que debe andar???
como seria para que ande??, si le saco el ["gustos"] directamente me tira el error en la linea siguiente.
  #6 (permalink)  
Antiguo 05/05/2008, 16:59
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Re: ayuda con metodos GET y POST

Cita:
Iniciado por Proguri Ver Mensaje
[...]
Y es porque no puedes pasarle $_POST["gustos"], puedes pasarle unicamente $_POST ( o $_GET)... [...]
Error. $_POST['cualquiercosa'] puede ser una arreglo --como en su código-- y entonces puede tratarse como cualquier otro arreglo (recorrerlo con foreach, por ejemplo).

eltin_vcp:
Tu error es de HTML. No tiene que haber espacios entre el texto y los corchetes:
Código HTML:
<input type="checkbox" name="gustos[]" value="xxx"> 
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #7 (permalink)  
Antiguo 05/05/2008, 18:01
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

no señores, eso no es como dice jamm1138, me sigue tirando el mismo error, pero ahora salto a la linea 19 jajaja, pls ayuda!!!
  #8 (permalink)  
Antiguo 05/05/2008, 18:10
 
Fecha de Ingreso: febrero-2006
Mensajes: 858
Antigüedad: 18 años, 2 meses
Puntos: 4
Re: ayuda con metodos GET y POST

Que tal, junta los corchetes y ya no te debe dar el error

<td>Informatica<input type="checkbox" name="gustos[]" value="informatica">
Buceo<input type="checkbox" name="gustos[]" value="buceo">
Magia<input type="checkbox" name="gustos[]" value="magia">
Jazz<input type="checkbox" name="gustos[]" value="jazz">
__________________
*La amistad se multiplica cuando se divide*
  #9 (permalink)  
Antiguo 05/05/2008, 19:02
 
Fecha de Ingreso: febrero-2006
Mensajes: 217
Antigüedad: 18 años, 2 meses
Puntos: 0
Re: ayuda con metodos GET y POST

Segun yo, es lo que dice Proguri. Podrias tratar en method del formulario, podrias poner que sea evaluado por la pagina en la que tienes tu script, luego usar

if (isset($_POST['gusto'])) y despues el resto.,
  #10 (permalink)  
Antiguo 06/05/2008, 00:01
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Re: ayuda con metodos GET y POST

Cita:
Iniciado por reimonfranco Ver Mensaje
Que tal, junta los corchetes y ya no te debe dar el error
Fue lo que dije y ya ves :-/... Igual digo que es ese el error.

Cita:
Iniciado por eltin_vcp Ver Mensaje
no señores, eso no es como dice jamm1138, me sigue tirando el mismo error, pero ahora salto a la linea 19 jajaja, pls ayuda!!!
Y la línea 19 es... ¿?.

¿Quedaron sin espacio entre el texto y los corchetes todos los names de los checkboxes?, ¿seleccionaste alguno?, ¿más de uno?...

Si te sigue dando el error lo mejor sería que volvieras a poner el código "limpio" (que el anterior no esa completo) y comentado donde te da el error.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #11 (permalink)  
Antiguo 06/05/2008, 06:09
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

Bueno sigo intentando y cualquier cosa les pregunto de nuevo, Gracias por sus paciencias.
El TIn
  #12 (permalink)  
Antiguo 06/05/2008, 07:26
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

bueno amigos,si no me dan una mano no se que hago, he hecho todo lo que me dijeronk, y me sigue saliendo este error
Warning: Invalid argument supplied for foreach() in C:\Documents and Settings\Administrador\Mis documentos\php\mios\merindo.php on line 16
que es la linea donde esta el segundo FOREACH. a ver al que me diga como lo hago andar o me dice como es le pago un asadito con todo pero me tiene que andar heee.
Por Favor Gente, se los suplico
El Tin
  #13 (permalink)  
Antiguo 06/05/2008, 07:55
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: ayuda con metodos GET y POST

Vuelve a escribir todos los codigos de las paginas que utilices aki, osea de las implicadas ( no pognas la web entera xD )
  #14 (permalink)  
Antiguo 06/05/2008, 08:04
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

lo que escribi es lo de arriba solo que con los arreglos que me dijeron, sin los espacios antes de los corchetes, y busque cosas asi y llegue a coregir varios errores pero el problema me lo tira en la pagina2.php donde me dice Warning: Invalid argument supplied for foreach() in C:\... on line 16 que si vamos arriba y vemos lo que es la linea, es la que muestra el segundo foreach, la pagina si la corro sola me dice lo mismo.
el codigo de la pagina es:

<?php
foreach($_POST as $indice => $valor)
{
echo "$indice : $valor<br>";
}
echo "<br> Gustos: <br>";
$gustos=$_POST["gustos"];
foreach($gustos as $indice => $valor)
{
echo "$indice: $valor<br>";
}
echo "FIN del Programita!!!";
?>

o simplemente denme un ejemplo de como pasar informacion entre formularios asi puedo seguir con el capitulo del libro que sigue.
Saludos
  #15 (permalink)  
Antiguo 06/05/2008, 08:17
 
Fecha de Ingreso: enero-2007
Ubicación: Buenos Aires, ARG
Mensajes: 71
Antigüedad: 17 años, 3 meses
Puntos: 2
Re: ayuda con metodos GET y POST

hola, mirà asi lo acabo de probar y me funciona bien. Pone esto en un archivo test.php y ejecutalo a ver si te anda. Despues adecualo a lo q queres. Espero te sirva, saludos

Código PHP:
<?php
if( isset($_POST['gustos']) ){
foreach( 
$_POST['gustos'] as $valor){
    echo 
'Valor '$valor;
}
}

?>

<form method="post" action="">
Informatica<input type="checkbox" name="gustos[]" value="informatica">
        Buceo<input type="checkbox" name="gustos[]" value="buceo">
        Magia<input type="checkbox" name="gustos[]" value="magia">
        Jazz<input type="checkbox" name="gustos[]" value="jazz">
<input type="submit" value="Enviar">
</form>
  #16 (permalink)  
Antiguo 06/05/2008, 08:21
 
Fecha de Ingreso: septiembre-2005
Mensajes: 840
Antigüedad: 18 años, 7 meses
Puntos: 84
Re: ayuda con metodos GET y POST

mmmm

Creo que los checkbox, llegan al array sin indexar, es decir,

en tu caso tendrias gustos[0] , gustos[1], gustos[2], pero q no son indices validos para usar como markas en el foreach.

dime si cambiando esto :

Código PHP:

$gustos
=$_POST["gustos"];

foreach(
$gustos as $indice => $valor)
{
         echo 
"$indice: $valor<br>";

por esto

Código PHP:

$gustos
=$_POST["gustos"];

var 
i=;

foreach(
$gustos as $valor)
{
       echo 
"$i: $valor<br>";
       
$i++ ;

te funciona.

Si no lo hace, escribe:

echo 'Este es el Echo de $gustos: ' . $gustos ;


y copia la linea que te salga aqui :]
  #17 (permalink)  
Antiguo 06/05/2008, 10:21
 
Fecha de Ingreso: enero-2008
Mensajes: 233
Antigüedad: 16 años, 3 meses
Puntos: 4
Re: ayuda con metodos GET y POST

escucho ofertas!
  #18 (permalink)  
Antiguo 06/05/2008, 10:36
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Re: ayuda con metodos GET y POST

intenta hacer un print_r($_POST); antes del foreach() haber ke pasa...
  #19 (permalink)  
Antiguo 06/05/2008, 18:29
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Re: ayuda con metodos GET y POST

Cita:
Iniciado por eltin_vcp Ver Mensaje
[...] pero el problema me lo tira en la pagina2.php donde me dice Warning: Invalid argument supplied for foreach() in C:\... on line 16 que si vamos arriba y vemos lo que es la linea, es la que muestra el segundo foreach, la pagina si la corro sola me dice lo mismo.
Estás aprendiendo, ¿cierto?... ¿entiendes el error? (como aprendiz debes analizarlo). Lo que dice el mensaje de error es que el parámetro pasado a foreach() no es válido.

Como habrás visto, foreach() se utiliza para iterar con matrices (arreglos, arrays...), entonces, te dará error por dos cosas:
- El parámetro, la variable, no existe (osea, no hay con qué iterar)
- El parámetro, la variable, no es un array (osea, no se puede iterar)

Entonces... ¿por qué te da a ti el error?
- No seleccionaste ningún checkbox, no envias datos, la variable no existe... (para eso se ha mencionado la función isset(), pero tú no buscas solucionar un problema, sino aprender, ¿cierto?)
- La variable no es un arreglo... pero según tú código sí lo es. Los checboxes son un arreglo y si se selecciona alguno ese arreglo estará dentro de $_POST (otro arreglo, por eso tienes dos foreach's).


Pero poco ayudas a entender lo que pasa... el error era lo de los espacios... por lo demás no debería haber problema (salvo, claro, no selecciones ninguno). Nuevamente te invito a colocar tu código completo y la salida ... porque teniendo dos foreach debiste ver el error (¿qué se muestra en el primero?).

Cita:
Iniciado por eltin_vcp Ver Mensaje
[...]
o simplemente denme un ejemplo de como pasar informacion entre formularios asi puedo seguir con el capitulo del libro que sigue.
Saludos
Lo estás haciendo. Todo cae en $_POST, $_GET o $_REQUEST siendo identificado por el "name" del elemento del formulario.

www.php.net/variables.external

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 02:30.