Foros del Web » Programando para Internet » PHP »

como extraer valores de un array en página nueva

Estas en el tema de como extraer valores de un array en página nueva en el foro de PHP en Foros del Web. hola foro, tengo un php que recibe las variables de un formulario con un array Código: <?php $msg = "Este es el contenido del formulario:\n\n"; ...
  #1 (permalink)  
Antiguo 05/12/2005, 14:45
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 20 años
Puntos: 0
como extraer valores de un array en página nueva

hola foro, tengo un php que recibe las variables de un formulario con un array
Código:
<?php

$msg = "Este es el contenido del formulario:\n\n";

$KEY = array_keys($HTTP_POST_VARS); 
$VALOR = array_values($HTTP_POST_VARS

foreach($_POST as $KEY => $VALOR) {
	$msg .= $KEY.": ".$VALOR."\n\n";
}

$recipient = "[email protected]"; 
$subject = "sujeto del correo"; 
$mailheaders = "From: [email protected]\n";
$mailheaders .= "Reply-To: ".$_POST['email']. "\n\n";	
mail($recipient, $subject, $msg, $mailheaders)
header('location:m_gracias.php'); 

?>
Me gustaría saber como puedo extraer y pasar estas variables a la página de respuesta m_gracias.php.. He probado varias cosas que he visto por los posts pero no me han funcionado.
Código:
header('location:m_gracias.php?nombre=$VALOR[0]&direccion=$VALOR[1]')

Última edición por j0rmaz; 07/12/2005 a las 08:29
  #2 (permalink)  
Antiguo 07/12/2005, 08:35
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 20 años
Puntos: 0
nadie puede ayudar en este tema, gracias
  #3 (permalink)  
Antiguo 07/12/2005, 08:52
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 20 años, 1 mes
Puntos: 4
Puedes probar de acerlo con sesiones.

Recuerda que si estas recibiendo las variables por url tienes que recojerlas con $_GET[] no con $_POST[]...

Saludos,

PD. Aprovecho para celebrar mi post número 500!
__________________
sergiold
  #4 (permalink)  
Antiguo 07/12/2005, 09:52
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 20 años
Puntos: 0
Hola gracias por responder, la verdad es que lo de las sesiones no se muy bien como funciona todavía. El problema por lo que yo entiendo es que envia las variables como una cadena y no extrae el valor del array
Código:
header('location:m_gracias.htm?nombre=$VALOR[0]');
en la página m_gracias
Código:
<?php
echo "nombre:" $_GET['nombre'];
?>
y lo que escribe es esto
Código:
nombre: $VALOR [0]'
gracias de nuevo
  #5 (permalink)  
Antiguo 07/12/2005, 11:07
 
Fecha de Ingreso: octubre-2004
Mensajes: 751
Antigüedad: 20 años, 1 mes
Puntos: 4
Pues la verdad no estoy seguro de si funcionará pero prueba así:

Código PHP:
header('location:m_gracias.htm?nombre='.$VALOR[0]); 
Saludos,
__________________
sergiold
  #6 (permalink)  
Antiguo 07/12/2005, 13:07
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
No es necesario que uses:

Código PHP:
<?php

$msg 
"Este es el contenido del formulario:\n\n";

$KEY array_keys($HTTP_POST_VARS); 
$VALOR array_values($HTTP_POST_VARS
con ..

Código PHP:
<?php

$msg 
"Este es el contenido del formulario:\n\n";

foreach(
$_POST as $KEY => $VALOR) {
    
$msg .= $KEY.": ".$VALOR."\n\n";
}
sobra.

Por otro lado .. recuerda que $_POST es un array y contiene todos los datos que recibes en ese script de proceso que envia el e-mail, así que lo que tendrás que hacer es propagar ese array en el URL .. para eso tienes esta FAQ que explica el proceso:

http://www.forosdelweb.com/showthrea...072#post262072

Un saludo,
  #7 (permalink)  
Antiguo 08/12/2005, 08:31
 
Fecha de Ingreso: noviembre-2004
Mensajes: 18
Antigüedad: 20 años
Puntos: 0
hola he estado probando lo que explica en el FAQ que me mandaste y por lo menos he conseguido ver el array en la barra de direcciones, osea que con la función y serializando salir, sale, pero no llega. expongo el código por si puedes decirme donde esta el error.

en la página de salida:

Código PHP:
<?php
function array_envia($array) { 

    
$tmp serialize($array); 
    
$tmp urlencode($tmp); 

    return 
$tmp


$msg "Este es el contenido del formulario:\n\n";

foreach(
$_POST as $indice => $valor) {
    
$msg .= $indice.": ".$valor."\n\n";
}
$recipient "[email protected]"
$subject "sujeto del mensaje";
$headers "From: [email protected]\n";
$headers .= "Reply-To: " .$_POST['email']. "\n\n";    

mail($recipient$subject$msg$headers);

$array=array($_POST); 
$array=array_envia($array); 

header('location:m3_gracias.php?array='.$array); 
?>
en la página de llegada:
Código PHP:
<? 
function array_recibe($url_array) { 
    
$tmp stripslashes($url_array); 
    
$tmp urldecode($tmp); 
    
$tmp unserialize($tmp); 

   return 
$tmp


$array=$_GET['array']; 
$array=array_recibe($array);

echo 
"Nombre: ".$array['indice'][3];

foreach (
$array as $indice => $valor){ 
echo 
$indice." = ".$valor."<br>"


?>
He intentado recogerlas con el indicie y con el foreach peso siempre sale esto:
Código:
NOmbre: 0 = Array
De todas formas en esta parte no entiendo muy bien de donde sale la variable ($url_array) de la función o si es que hay que cambiarla por otro valor.

Gracias por las respuestas y la paciencia, saludos
  #8 (permalink)  
Antiguo 08/12/2005, 08:49
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 10 meses
Puntos: 129
El uso sería:

En la página de salida:
Código PHP:
$array=array_envia($_POST); 
$_POST ya es un array ... no necisitas andar asignando a otras variables.

Y en la que recibe:
Código PHP:
$array=array_recibe($_GET['array']); 
Aquí usamos el array $_GET que contiene nuestro array serializado (en la variable "array"). Serializar implica transformar de "array" a "string" (cadena) pero con un formato tal que te permita volver a "reproducir" ese array tal cual era (por muy compleja que sea esta: multidimensional .. etc)

Y para acceder a un indice concreto .. no sé por qué usas "indice" .. Indice es un "concepto" referente a manejo de arrays .. no expresamente un nombre de un "indice" (asociativo) .. (Repasa un manual sobre uso de array's en PHP o en general ..)

Código PHP:
echo "Email: ".$array['email']; 
Como veras . .una vez desserializado la variable que contenía serializado todos los valores que enviastes desde tu formulairo y ahora propagastes a este script .. te vuelve a quedar otro array .. de nombre "$array" por qué así lo hicistes .. pero con la misma estructura que tu original "$_POST" (Correspondencia nombre campo formulario (como indice del array) y => valor)

El resto de problemas que tienes es sobre como funciona las funciones .. cuando tu le pasas un valor a una función por parámetro en la defición de la función se indica el nombre de la variable que tendrá y usaras -dentro- de la función .. no tiene nada que ver con el valor que le asignes (u otra variable) al llamar a la función. (Repasa el manual oficial de PHP en el capítulo de uso de funciones).

Otro detalle .. ten presente que el n° y cantidad de datos al propagar por el URL (GET) no son infinitos y su tamaño es muchoooo menor que lo que se propaga por el método POST. OJO con eso .. Por eso mismo se recomienda para estos casos (con tanta variable que ir propagando de un lado a otro) usar: Sesiones (www.php.net/session) (en las FAQ's de este foro PHP tienes ejemplos de uso ..)


Un saludo,
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:53.