Foros del Web » Programando para Internet » PHP »

Formulario que no anda

Estas en el tema de Formulario que no anda en el foro de PHP en Foros del Web. Hola. Resulta que he escrito en mi escaso conocimiento del php este script que no me funciona como esperaba, quizas alguien me hecha una mano ...
  #1 (permalink)  
Antiguo 22/02/2005, 08:34
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
Formulario que no anda

Hola. Resulta que he escrito en mi escaso conocimiento del php este script que no me funciona como esperaba, quizas alguien me hecha una mano aclarandome porque me sale el mensaje de error:

Warning: Invalid argument supplied for foreach() in e:\www\php_pruebas\formu2.php on line 18

les dejo el codigo:

<?php
print "Bienvenido <b>$user</b><p>\n\n";
print "Tu direccion es<p><b>\n\n$adress</b><p>\n\n";

print "Tus productos son:<p>\n\n";
print "<ul>\n\n";

foreach( $products as $value ){ // <--- Esta es la jodida linea 18.

print "<li>$value<br>\n";

}

print "<ul>";
?>

la llamada al script es hecha desde un fichero html.

espero que puedan ayudarme, de antemano gracias a todos.
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
  #2 (permalink)  
Antiguo 22/02/2005, 09:06
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
Hola, pues veo muy poco de tu código, pero
Código PHP:
 <?php
 
echo "Bienvenido <b>".$user."</b><p>\n\n";
 echo 
"Tu dirección es<p><b>\n\n".$adress."</b><p>\n\n";
 
 echo 
"Tus productos son:<p>\n\n";
 echo 
"<ul>\n\n";
 
 foreach(
$products as $value){ // <--- Esta es la jodida linea 18.
 
 
echo "<li>$value<br>\n";
 
 }
 
 echo 
"<ul>";
 
?>
  #3 (permalink)  
Antiguo 22/02/2005, 09:15
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
gracias por tu rapida ayuda. olvide mencionar esto:

<form action="formu2.php" method="post">

<br>

<input type="text" name="user">

<br>

<textarea name="adress" rows="5" cols="40"></textarea>

<br>

<select name="products[]" multiple>

<option>Windows XP
<option>Windows 2000
<option>Linux
<option>MacOS

</select>

<br>

<input type="submit" value="Hit!">

</form>

este es el formulario html que llama al script php.

arregle lo de las variables y los puntos antes y despues de ellas como me aclaraste pero sigo obteniendo el mismo error:

Warning: Invalid argument supplied for foreach() in e:\www\php_pruebas\formu2.php on line 18
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
  #4 (permalink)  
Antiguo 22/02/2005, 10:46
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Provablemente tengas que usar los arrays globales $_POST o $_GET (en tu caso la primera) para acceder a la variable que envias desde el formulario. Revisa alguna de las primeras FAQs para saber mas sobre el tema.

Saludos
  #5 (permalink)  
Antiguo 22/02/2005, 11:01
Avatar de lado2mx
Colaborador
 
Fecha de Ingreso: agosto-2001
Ubicación: Veracruz
Mensajes: 3.720
Antigüedad: 16 años, 4 meses
Puntos: 9
No creo fran, porque hay algo que no encaja, tal vez si pasaras todo el script, posiblemente resulte. Porque lo paso así y no pasa nada en mi server local
  #6 (permalink)  
Antiguo 22/02/2005, 11:12
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Para mi sigue siendo eso, $products tiene que ser un array y como no llega nada tira ese error.
Una pregunta.... ¿ves los otros datos? algo asi como "bienvenido pepito tu direccion es blablabla"
Pero si.... quizas se escapa algo...
  #7 (permalink)  
Antiguo 24/02/2005, 17:12
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
la verdad es que no fran86.

el output al browser deberia decir:

Bienvenido $user
Tu direccion es: $adress

Tus productos son: blah blah blah

obviamente $user y $adress son lo que se ingresa en el formulario html y que procesa el script php. pero obtengo el output sin los valores asignados por medio del formulario html a las variables, y con el mensaje de error mas abajo.

cualquier nueva ayuda como siempre se las agradezco de antemano gente.

saludos!
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
  #8 (permalink)  
Antiguo 25/02/2005, 09:59
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Entonces es eso!, si en el explorador no ves ni siquiera los demas campos que se cargaron en el formulario como $user y $adress es porque esas variables nonca fueron creadas por PHP. prueba con $_POST['user'] y asi con las demas. Leiste la FAQ que te comente?
  #9 (permalink)  
Antiguo 02/03/2005, 07:27
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
muchas gracias por la ayuda que me han brindado.

ahora me asalta la sig. duda: he segudo vuestras indicaciones y todo comienza a marchar pero, sigo sin poder ver bien el problema con el foreach.

lo otro, he leido la faq la pregunta sobre los arrays super globales, pero no me ha quedado del todo claro...

mi duda es porque tendria que utilizar el $_GET o el $_POST y en qué casos.

gracias nuevamente de antemano.
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
  #10 (permalink)  
Antiguo 02/03/2005, 08:04
Avatar de JuanKa  
Fecha de Ingreso: septiembre-2004
Mensajes: 468
Antigüedad: 13 años, 3 meses
Puntos: 1
Hola mira
antes de hacer todo lo anterior primero tienes que ver si las variables que provienen de otro archivo los recoges bien en la pagina que bas a trabajar como por ejemplo:

form_datos.htm
<form action="recibir_parametros.php" method="post" name="frm_envio" id="frm_envio">
<p>
<input name="txt_nom" type="text" id="txt_nom">
</p>
<p>
<textarea name="txt_observaciones" id="txt_observaciones"></textarea>
</p>
</form>


ahora en el archivo =recibir_parametros.php haces:
<?
$nombre=$_POST["txt_nom"];
$observaciones=$_POST["txt_observaciones"];

// ahora para que visualices usas un simple echo de cada variable.

echo $nombre."<br>";
echo $observaciones."<br>";

con esto obtendras el valor de las varibales que proviene de la pagina donde se encuentra el formulario.
?>


Ahora para en que momento usar post y get, generalmente el metodo post se usa para recibir variables de una pagina a otra y el GET para que recibas variables provenientes de un URL.

Ejemplo cesta.php?cod=$num&nom=$descripcion&...........

entonces al igual que el post usas el get
$codigo=$_GET["num"];
$nombre=$_GET["descripcion"];

echo $codigo."<br>";
echo $nombre."<br>";

Bueno espero que te sirva esto en cuanto a variables se refiere

Saludos y suerte
  #11 (permalink)  
Antiguo 02/03/2005, 10:27
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
muchas gracias me has aclarado algo mas este tema.

tengo esto ahora, que he traajaod hoy en la mañana aver si me hacen algun comentario:

<?php

$products = array("CocaCola","Pepsi","Free","MacCola");

print "Welcome <b>".$_GET['user']."</b><p>\n\n";
print "Your adress is <b>".$_GET['adress']."</b><p>\n\n";
print "Your products are <p>\n\n";

print "<ul>\n\n";

foreach($products as $value){

print "<li>".$_GET['value']."<br>\n";

}

print "</ul>";

?>


este script arroja el username y su direccion, pero al seleccionar uno solo de los 4 productos, arroja...¡¡¡¡los cuatro!!!!

aqui les dejo el formulario html:

<form action="form8.php" method="GET">

<input type="text" name="user">

<textarea name="adress" rows="4" cols="10"></textarea>

<select name="products[]" multiple>

<option>Cocacola
<option>Pepsi
<option>Free
<option>MacCola

</select>

<input type="submit" value="Enviar">




</form>

nuevamente mil gracias a toda la comunidad que me ha ayudado.
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
  #12 (permalink)  
Antiguo 02/03/2005, 10:30
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
seme olvido agregar esto:

en definitiva, el array products no recoje lo seleccionado por el usuario en el formulario html, sino los cuatro valores. no se como restringir que se imprima por pantalla solo el valor seleccionado. y otra cosa: cuando hago:

$_GET['products'];

en la impresion no sale nada, pero si hago solo: $products salen los 4 productos, y no el unico que ha sido seleccionado.

saludos.
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
  #13 (permalink)  
Antiguo 02/03/2005, 10:53
Avatar de THE SILENT CULT  
Fecha de Ingreso: septiembre-2004
Ubicación: Chile
Mensajes: 17
Antigüedad: 13 años, 2 meses
Puntos: 0
Lamento mucho volver nuevamente a postear por tercera vez seguida pero solucinome mi problema asi:

Código PHP:
 <?php
 
print "Welcome <b>".$_GET['user']."</b><p>\n\n";
print 
"Your adress is <b>".$_GET['adress']."</b><p>\n\n";
print 
"Your products are <p>\n\n";
 
print 
"<ul>\n\n";
 
foreach(
$_GET['products'] as $value){
 
print 
"<li>".$value."<br>\n";
 
}
 
print 
"</ul>";
 
?>
en lo que me gustaria si es posible es en que me explicasen porque haciendo uso del $_GET en el mismo foreach si resulta que me sale el unico producto seleccionado por el usuario, y porque usando el $_GET dentro del foreach en la impresion de $value no sale bien.

saludos e infinitas gracias
__________________
EN ESTE MUNDO HAY 0010 TIPOS DE PERSONAS: LOS QUE ENTIENDEN BINARIO Y LOS QUE NO.
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 19:46.