Foros del Web » Programando para Internet » PHP »

Enviar informacion de una pagina a otra.

Estas en el tema de Enviar informacion de una pagina a otra. en el foro de PHP en Foros del Web. Hola, tengo un script en donde hay "articulos" los cuales tienes su descripcion y otras especificaciones. Muchas veces la descripcion y esas otras especificaciones no ...
  #1 (permalink)  
Antiguo 25/04/2006, 20:31
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Enviar informacion de una pagina a otra.

Hola, tengo un script en donde hay "articulos" los cuales tienes su descripcion y otras especificaciones. Muchas veces la descripcion y esas otras especificaciones no las tengo para ponerlas... Lo que pretendo es que los usuarios sean capaces de enviarme una descripcion u otra informacion del "articulo".. No deseo que el usuario sea capaz de modificar la base de datos directamente... Solo deseo que envien esa informacion por email.

El proceso que habia pensado era..

[PAGINA DEL ARTICULO (Generada por el sistema)]
|
|
[Se incluye un boton (button) para aportar la info. Este sera "POST" supongo pa enviar el nombre y url del articulo supongo.]
|
|
[Al dar click en el boton, se va a otra pagina donde se le muestra al usuario el nombre del articulo del cual va a aportar informacion, junto con campos de texto que llenara (Nombre, email, y otros).]
|
|
[Al final de esa forma hay un boton de enviar, el cual obvio.. le dan click y se envia la info a mi email. En este email pues solo ocupo que me diga cual es el nombre del articulo (llamado 'item' en mi sistema) y el resto pues es texto enviado y escrito en la forma.]
|
|
[Al haber enviado la forma pues que regresara a la pagina del articulo seria genial]

Bueno.... de todo esto que necesito no llegue muy lejos por mi solo.. Puedo generar el boton en la pagina del articulo y puedo pasar a otra pagina siguiente el nombre del articulo y su url... el primer gran problema y de donde no pude salir fue que el nombre del articulo solo me muestra la primera palabra del mismo.. Ejemplo: el articulo se llama "Señor de los Anillos" el sistema solo me muestra "Señor".

Ojala me puedan ayudar con estom, se los agradecere.
  #2 (permalink)  
Antiguo 26/04/2006, 09:41
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Cita:
Iniciado por Haggen
el articulo se llama "Señor de los Anillos" el sistema solo me muestra "Señor".
El nombre del articulo de la segunda pagina esta en una caja de texto?, y lo rellenas con value? En ese caso es muy posible que se te haya olvidado ponerle las comillas al value.

Código HTML:
<input type="text" name="nombre" value="<?=$nombre_articulo ?>"> 
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #3 (permalink)  
Antiguo 26/04/2006, 15:16
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Hmm, no parece ser el problema..

Agrego algo mas de info y links poara que vean el funcionamiento (tambien dejo mi codigo)

Esta es la pagina donde esta el articulo:
animerate.net/review_list.php?item_id=216&cat_id=1&sub_cat_id=2

Si se fijan debajo de la foto hay un boton con el codigo:

Código PHP:
echo "<form name=\"enviar\" method=\"post\" action=\"aportar_info.php\">\n";
echo 
"<input type=\"hidden\" name=\"item\" value=" $item ">\n";
echo 
"<input type=\"submit\" name=\"Submit\" value=\"Aportar Informacion de este Anime\">\n";
echo 
"</form>\n"
Con ese estoy mandando la informacion del $item (nombre del articulo), lo estoy mandando a aportar_info.php que contiene el siguiente codigo hasta ahora:
Código PHP:
<?
    $item
=$HTTP_POST_VARS['item'];
    
$ref getenv("HTTP_REFERER"); 

?>
<form method=post action=aportar_info.php>
Gracias por tu aporte a <? echo "<a href=$ref>$item</a>"?>
<table width=543 border=0 cellpadding=3 cellspacing=0> 
<tr><td width=11%>Tu nombre:</td>
<td width=89%>
<input type="text" name="nombre" value="tu nombre">
<input type="hidden" name="item" value="<?=$item ?>">
</td>
</tr>
<tr>
<td>Tu email:</td>
<td><input type="text" name="mail" value="tu e-mail"></td>
</tr>
<tr>
<td><div align="justify">Mensaje:</div></td>
<td><textarea name="mensaje" cols="50" rows="8" wrap="VIRTUAL"></textarea></td>
</tr>
<tr align="center">
<td colspan="2"><input type="submit" value="enviar" name="submit"></td>
</tr> </table></form>
Si lo ejecutan desde la pagina del articulo, veran que dice al inicio de la siguiente pagina solo dice: "Gracias por tu aporte a Saint" siendo que el articulo se llama "Saint Seiya".

Tambien en este segundo codigo (aportar_info.php) llamo la la url de donde viene, esto parece no causarme problema alguno.

Quiero ir paso a paso, lo primero seria lograr mostrar el nombre del "item" completo.

ven algun error por ahi?

Gracias
  #4 (permalink)  
Antiguo 27/04/2006, 02:28
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Pues sigo en mis trece, jeje. He visto el error, y te digo lo mismo que te decia antes :p comillas!

En esta parte del codigo de la pagina review_list.php

Código PHP:
;
echo 
"<input type=\"hidden\" name=\"item\" value=" $item ">\n"
prueba a ponerle el tipo "text" en vez de hidden, solo momentaneamente, para que veas que en realidad el problema esta ahi, que es en ese campo hidden en donde se corta la frase.

Para solucionarlo, pues lo dicho, ponerle comillas, que no tiene (las que tiene solo sirven para decirle al echo de php que se corta el string)

Código PHP:
;
echo 
"<input type=\"hidden\" name=\"item\" value=\"" $item "\">\n"
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.

Última edición por oskarL; 27/04/2006 a las 02:52
  #5 (permalink)  
Antiguo 27/04/2006, 12:13
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Yup... tenias TODA la razon... benditas comillas aun no se usarlas al 100% :(..

Bueno... si te parece me podrias ayudar con el resto? :D

Ya pase el nombre del item y su url... ahora.. como ves en "aportar_info.php" el usuario puede agregar una informacion para enviarla por email. Usare varios campos, pero solo para testiar esto usare el campo de sinopsis para enviar la info por mail.. He estado usando este codigo para enviar mail que esta bastante sencillo, pero no logro echarlo a andar:

Código PHP:
<?
    $item
=$HTTP_POST_VARS['item'];
    
$ref getenv("HTTP_REFERER"); 

$subject $_POST['subject']; 
$email $_POST['email'];
$sinopsis $_POST['sinopsis'];
$submit $_POST['submit'];

if(
$submit)
{

mail("[email protected]""$subject""$email""$sinopsis""$item");

}
?>
<form method="post"  action="aportar_info.php">
Gracias por tu aporte a <? echo "<a href=$ref>$item</a>"?><br>
Subject:<br /><input type="hidden" name="subject" value="Aporte de info para <?=$item ?>" size="20"><br /><input type="hidden" name="item" value="<?=$item ?>">
Email:<br /><input type="text" name="email" size="20"><br />
Sinopsis:<br /><textarea cols="20" rows="5" name="sinopsis" wrap="VIRTUAL"></textarea><br />
<input type="submit" value=" Enviar "> </form>
O conoceras algun buen snippet que pueda usar? Te agradezco la ayuda.
  #6 (permalink)  
Antiguo 28/04/2006, 02:53
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Ahora veo otro problemilla:

Al archivo "aportar_info.php" lo llamas de dos maneras diferentes.
1. Desde "review_list.php"
2. Desde si mismo

Entonces, al recoger la variable $submit = $_POST['submit']; estas recogiendo el submit del formulario de "review_list.php", por lo que entra en ese if en la primera llamada, e intenta mandar el mail antes de poder escribir nada en los formularios.

Solucion:

Darle otro nombre al submit de "aportar_info.php"



Aparte, la funcion mail no funciona asi, es asi:

mail (email_receptor, asunto, mensaje [, cabeceras])

las cabeceras son opcionales

Tienes que "montar" el mensaje antes, y si quieres poner quien manda el correo hay que modificar las cabeceras del mail


Seria asi, por ejemplo:

Código PHP:

<?
    $item
=$HTTP_POST_VARS['item'];
    
$ref getenv("HTTP_REFERER"); 

$subject $_POST['subject']; 
$email $_POST['email'];
$sinopsis $_POST['sinopsis'];
$submit2 $_POST['submit2'];

if(isset(
$submit2))
{     

   
$mensaje="Mensaje:\n".$item."\n".$sinopsis."\n";
   
$cabeceras="FROM: ".$email."\n";

     
mail("[email protected]"$subject$mensaje$cabeceras)

}else{
?>
<form method="post"  action="aportar_info.php">
Gracias por tu aporte a <? echo "<a href=$ref>$item</a>"?><br>
Subject:<br /><input type="hidden" name="subject" value="Aporte de info para <?=$item ?>" size="20"><br /><input type="hidden" name="item" value="<?=$item ?>">
Email:<br /><input type="text" name="email" size="20"><br />
Sinopsis:<br /><textarea cols="20" rows="5" name="sinopsis" wrap="VIRTUAL"></textarea><br />
<input type="submit" name="submit2" value=" Enviar "> </form>

<? ?>
Con cualquier duda, escribe
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #7 (permalink)  
Antiguo 28/04/2006, 17:36
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Me sale un error..

Parse error: parse error, unexpected '}' in /home/animerat/public_html/aportar_info.php on line 18

Algo hay de malo con el
Código PHP:
}else{ 
  #8 (permalink)  
Antiguo 02/05/2006, 02:22
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Vale, si has copiado y pegado directamente ya se que pasa. Es que se me paso poner un punto y coma al final de la funcion mail. Seguro que es ese es el problema

mail("[email protected]", $subject, $mensaje, $cabeceras);

}else{
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #9 (permalink)  
Antiguo 02/05/2006, 10:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Hmm, error de nuevo..

Parse error: parse error, unexpected $ in /home/animerat/public_html/aportar_info.php on line 22

Cosa rara, la linea 22 es la ultima de mi codigo.. no veo el posible error.

Código PHP:
<?
    $item
=$HTTP_POST_VARS['item'];
    
$ref getenv("HTTP_REFERER"); 

$subject $_POST['subject']; 
$email $_POST['email'];
$sinopsis $_POST['sinopsis'];
$submi2t $_POST['submit2'];

if(
$submit)
{

mail("[email protected]""$subject""$email""$sinopsis""$item");

}else{
?>
<form method="post"  action="aportar_info.php">
Gracias por tu aporte a <? echo "<a href=$ref>$item</a>"?><br>
Subject:<br /><input type="hidden" name="subject" value="Aporte de info para <?=$item ?>" size="20"><br /><input type="hidden" name="item" value="<?=$item ?>">
Email:<br /><input type="text" name="email" size="20"><br />
Sinopsis:<br /><textarea cols="20" rows="5" name="sinopsis" wrap="VIRTUAL"></textarea><br />
<input type="submit" name="submit2" value=" Enviar "> </form>
  #10 (permalink)  
Antiguo 02/05/2006, 10:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Ok, ya no me deja error al final... le agregue...

Código PHP:
<?php
};
?>
Ya se despliega como debe ser, pero no parece enviar el correo.

El codigo hasta ahora es:

Código PHP:
<?
$item
=$HTTP_POST_VARS['item'];
$ref getenv("HTTP_REFERER"); 
$subject $_POST['subject']; 
$email $_POST['email'];
$sinopsis $_POST['sinopsis'];
$submi2t $_POST['submit2'];

if(
$submit)
{

mail("[email protected]""$subject""$email""$sinopsis""$item");

}else{
?>
<form method="post"  action="aportar_info.php">
Gracias por tu aporte a <? echo "<a href=$ref>$item</a>"?><br>
Subject:<br /><input type="hidden" name="subject" value="Aporte de info para <?=$item ?>" size="20"><br /><input type="hidden" name="item" value="<?=$item ?>">
Email:<br /><input type="text" name="email" size="20"><br />
Sinopsis:<br /><textarea cols="20" rows="5" name="sinopsis" wrap="VIRTUAL"></textarea><br />
<input type="submit" name="submit2" value=" Enviar "> </form>
<?php
};
?>
Algun error?
Gracias
  #11 (permalink)  
Antiguo 03/05/2006, 02:44
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Mensaje

Veo que mucho mucho caso no me haces, jeje.

La funcion mail NO es como la has escrito en el ultimo post:
Cita:
Iniciado por Haggen
mail("[email protected]", "$subject", "$email", "$sinopsis", "$item");
Tiene que ser asi:

Código PHP:
mail($direccion_de_destino$asunto$cuerpo_del_mensaje$cabeceras
Por lo que te sugeri que crearas antes una variable de string con la informacion para el cuerpo del mensaje.



Veo que has cambiado el nombre del submit, pero ahora tambien tienes que cambiar el nombre de la variable por la que preguntas para entrar a enviar el email!!

El codigo completo corregido con estos fallos, quedaría asi
Código PHP:
<?
$item
=$HTTP_POST_VARS['item'];
$ref getenv("HTTP_REFERER"); 
$subject $_POST['subject']; 
$email $_POST['email'];
$sinopsis $_POST['sinopsis'];
$submit2 $_POST['submit2'];

if(
$submit2)
{
   
$mensaje="Mensaje:\n".$item."\n".$sinopsis."\n";
   
$cabeceras="FROM: ".$email."\n";

     
mail("[email protected]"$subject$mensaje$cabeceras);
     
}else{
?>
<form method="post"  action="aportar_info.php">
Gracias por tu aporte a <? echo "<a href=$ref>$item</a>"?><br>
Subject:<br /><input type="hidden" name="subject" value="Aporte de info para <?=$item ?>" size="20"><br /><input type="hidden" name="item" value="<?=$item ?>">
Email:<br /><input type="text" name="email" size="20"><br />
Sinopsis:<br /><textarea cols="20" rows="5" name="sinopsis" wrap="VIRTUAL"></textarea><br />
<input type="submit" name="submit2" value=" Enviar "> </form>
<?php
}
?>

PD: he quitado ese ultimo punto y coma del codigo, porque, aunque dices que te daba error, y al poner eso se ha solucionado, me parece muy extraño, porque es un error de sintaxis poner un punto y coma despues de corchete...

Espero que te funcione correctamente, y si no... postea de nuevo!! jeje

1Saludo
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #12 (permalink)  
Antiguo 03/05/2006, 12:33
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Ups! sorry oskarL.. tenias razon con respecto a la funciona mail.. la verdad es que se me paso ese detalle... Analizando los posts anteriores.. tenias razon.. se me feo por completo...

En fin.. efectivamente ya pude enviar la informacion y el email.. y por ahi tambien le agregue la opcion que mandara un mensaje de "EXITO" despues de enviar la forma ademas de agregarle algunas cositas mas...

Te agradezco muuuucho la ayuda y la paciencia sobre todo... si requiero alguna otra modificacion o agregado y me atoro.. retomare el tema :D

Muchas gracias
  #13 (permalink)  
Antiguo 03/05/2006, 18:06
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Hahahaha, regrese muuuy pronto! hahaha

Un detalle... ya logre enviar el email, se despliega un mensaje de exito

Código PHP:
   $cabeceras="FROM: ".$email."\n";
   
$confirmacion "Gracias por tu aporte!"
y luego le doy echo en:
Código PHP:
 mail("[email protected]"$subject$mensaje$cabeceras);
     echo(
"$confirmacion"); 
LO que quiero es poner en ese mensaje un link que regrese a la pagina del articulo... Trate de usa rel viejo JS "javascript:history.back(-2)" pero obviamente no funciono... Trate de llamar la $ref pero ya me toma la url de donde se envia la forma, no la del articulo...

Algo de ayuda con esto ya por ultimo
  #14 (permalink)  
Antiguo 04/05/2006, 02:31
Avatar de oskarL  
Fecha de Ingreso: mayo-2005
Ubicación: Madrid
Mensajes: 499
Antigüedad: 12 años, 7 meses
Puntos: 2
Parece que la pagina principal del listado la generas con las siguiente variables:

item_id=216&cat_id=1&sub_cat_id=2

Lo que podrias hacer es meter en campos hidden (como hacias con el nombre del item) esos datos, para luego poder utilizarlos en el enlace que tienes que escribir.



Por cierto, te sugiero una cosa. La funcion mail devuelve true o false dependiendo si ha conseguido enviar o no el correo. Eso lo puedes utilizar para mostrar un mensaje correcto al usuario.

Esto te lo digo porque tal y como lo escribiste en el ultimo post, aunque la funcion mail no haya enviado el correo, aparece el mensaje de confirmacion. Personalmente creo que deberias cambiarlo por esto:

Código PHP:


$enviado
=mail("[email protected]"$subject$mensaje$cabeceras);

if(
$enviado){
   echo 
$confirmacion;  
}else{
   echo 
"No se ha podido realizar tu aporte";

PD: el echo no lleva parentesis, y las comillas solo hacen falta para cadenas de caracteres
__________________
Solo hay 10 clases de personas, las que saben binario y las que no.
  #15 (permalink)  
Antiguo 04/05/2006, 14:56
 
Fecha de Ingreso: octubre-2004
Mensajes: 114
Antigüedad: 13 años, 1 mes
Puntos: 0
Muy buena ayuda... gracias.
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 10:00.