Foros del Web » Programando para Internet » PHP »

Cual es la mejor forma de pasar muchas variables?

Estas en el tema de Cual es la mejor forma de pasar muchas variables? en el foro de PHP en Foros del Web. Hola, en estos momentos estoy haciendo un proyecto bastante extenso en el cual tengo que gastar bastante el php. El problema es que me encuetro ...
  #1 (permalink)  
Antiguo 10/04/2003, 13:04
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 15 años
Puntos: 0
Cual es la mejor forma de pasar muchas variables?

Hola, en estos momentos estoy haciendo un proyecto bastante extenso en el cual tengo que gastar bastante el php. El problema es que me encuetro con que la mayoría de páginas necesitan pasar una gran cantidad de variables a la siguiente (unas 30) y es muy engorroso hacerlo mediante post o get. He oido que mediante sesiones puede resultar más cómodo.

Qué me aconsejais para solucionar de la mejor forma este problema? hasta ahora lo que hago es generar los links mediante bucles que leen el vector $HTTP_POST_VARS etc.

Gracias
  #2 (permalink)  
Antiguo 10/04/2003, 13:21
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. si, puedes usar una session .. en la sesion puedes guardarte el vector (array $HTTP_POST_VARS o $_POST ) y usarlo en las páginas q necesites o como variables individuales .. como mas te guste

.. Osese .. iras añadiendo mas variables a la session segun sea tu proceso de formularios entre tus várias páginas .. al final del proceso lees las variables de las session .. las procesas y si no las necesitas mas las borras y/o matas la sesión.

Pero entre un formulario (o variabels en una URL) y el servidor no ya otra foram q usar GET o POST. (q yo sepa)

Si explicas el proceso de "recolección" de datos se te podría orientar mejor .. Pero, en principio usando una sesion como te propongo es la mejor forma de SOLO propagar por GET/POST las variables que realmente estas usando (un formulario q envia datos . o en un URL)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 10/04/2003, 13:27
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 15 años
Puntos: 0
El problema concreto es el siguiente: tengo un formulario en el que introduzco una gran cantidad de fechas, en el php que proceso la info, compruebo que las fechas sean correctas, etc... pero si no son correctas lo que hago es poner un enlace para volver y corregirlas. Pues este enlace tiene que devolver esa animalada de variables para q el formulario aparezca con la info q introdujo.

Mi duda es más que nada por si hay alguna forma de programar estas cosas de forma más comoda.

Gracias cluster.
  #4 (permalink)  
Antiguo 10/04/2003, 13:44
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Mira yo lo haría así


<?
foreach( $_POST as $key => $value ) {
$link.=$key."=".$value."&";
}
?>

y en tu link de regresar:

<a href="formulario.php?<?echo $link;?>">Regresar</a>


Ahora en tu formulario en cada value pones el mismo nombre de tu campo pero con $_GET["nombreCampo"]


<input type="text" name="nombreCampo" value="<?echo $_GET["nombreCampo"];?>">

Lo que hara esto es que si viene la variable en el link, te pondrá el valor, de no ser así, o sea si es la primera vez q entra el usuario no te pondrá nada.

No se si haya otra forma más optima, pero weno Just my 2 cents]
  #5 (permalink)  
Antiguo 10/04/2003, 13:53
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 15 años
Puntos: 0
Gracias, la verdad que esta opción es algo más elegante que la que yo gasto pq lo que yo hacía era pasar las claves del array _POST a un vector y los valores a otro, jeje. Soy programador de C nato y no me hago la idea de que el php tiene tantas funciones.

Gracias otra vez
  #6 (permalink)  
Antiguo 10/04/2003, 14:03
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues .. guardanto $_POST en una session al llegar a tu script de proceso .. si hay error .. devuelves la pagina del formulario y usas los campos value= de los formularios para predefinir sus valores originales ..

Así no ves las variables en el URL (por GET) que hay que decirlo .. tieen un límite de tañamo (no sé ahora cual es .. pero lo tiene) ..


Tu formulario:
Código PHP:
<?
session_start
();
if (isset(
$_SESSION['variables'])){
   
$variables=$_SESSION['variables'];
} else {
   
$variables=array();
}

session_unregister("variables"); // me deshago del array sessiones . Opcional ..
?>


<input type="text" name="nombreCampo" value="<?echo $variables["nombreCampo"];?>">
Y tu formaulario que procesa ...

Código PHP:
<?
session_start
();
$_SESSION['variables']=$_POST;

// etc tu código de validacion . etc ..etc
?>
Incluso puedes pasar en la sesion algun otro array .. como uno de "codigos de error" y mostar los mensajes de error personalizados en cada campo del formulario . y no en la pagina que haces el proceso de los datos redireccionando automáticamente al formulario via:

header("location: formulario.php");

en caso de errror ..

(yo lo uso así todos mis formularios de proceso)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 10/04/2003 a las 14:08
  #7 (permalink)  
Antiguo 10/04/2003, 14:18
Avatar de josgat  
Fecha de Ingreso: noviembre-2002
Mensajes: 137
Antigüedad: 15 años
Puntos: 0
Gracias, la verdad es que de esta forma todo el código queda mucho más claro y elegante.

Lo pondré en práctica.

ADEU
  #8 (permalink)  
Antiguo 10/04/2003, 18:44
Avatar de urjose  
Fecha de Ingreso: diciembre-2001
Mensajes: 5.286
Antigüedad: 16 años
Puntos: 1
Cada dìa se aprende algo nuevo :D
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 09:14.