Foros del Web » Programando para Internet » PHP »

pasar variables!!!

Estas en el tema de pasar variables!!! en el foro de PHP en Foros del Web. hola como haria para pasar dos arreglos o array de una consulta a otra pagina por medio del url.... lo vi en un material..pero pongo ...
  #1 (permalink)  
Antiguo 30/03/2005, 07:54
 
Fecha de Ingreso: diciembre-2004
Mensajes: 156
Antigüedad: 19 años, 4 meses
Puntos: 0
pasar variables!!!

hola como haria para pasar dos arreglos o array de una consulta a otra pagina por medio del url.... lo vi en un material..pero pongo el codigo y nada no pasa nada me sale un error en la pagina de la grafica...es decir, lo hago en una pagina de php la consulta atravez de un combo pero quiero que esos resultados se vean en una grafica que esta en otro archivo este esel codigo:
primero esto en la cabecera de la pagina:
<a href="grafico/llam_regiones.php?$fecha_va=$fecha[]$cantidad_va=$cantidad[]">Paso </a>

pagina consulta:
<?php
set_time_limit(0);
include("config_sql.php");
$conectID = mssql_connect("$sql_username","$sql_password ","");
mssql_select_db("$sql_host");
?>
<select name='select' onChange="javascript:enviarCombo(this,'femin.php') ;">
<option>Seleccionar Estado</option>
<option>Miranda</option>
<?
$result=mssql_query("select right(fecha,4),llamadas from T_resumen_minutos where (fecha >= CONVERT(char(8), DATEADD(DD, -59, GETDATE()), 112)) and (T_resumen_minutos.estado like 'mr') group by right(fecha,4),llamadas order by 1 asc");
// $result1=mssql_query("select metas.mes,metas.meta_traf from T_resumen_minutos inner join metas_regiones on right(left(T_resumen_minutos.fecha,6),2)like metas_regiones.mes where (fecha >= CONVERT(char(8), DATEADD(DD, -59, GETDATE()), 112))and (T_resumen_minutos.estado like 'mr') order by metas_regiones.mes asc");
if ($row = mssql_fetch_array($result)){
$fecha[] = $row[0];
$cantidad[]= $row[1];
/*$fecha_va=$fecha[];
$cantidad_va=$cantidad[];*/
<a href="grafico/llam_regiones.php?$fecha_va=$fecha[]$cantidad_va=$cantidad[]">Paso </a>
}
?>
?>

pagina de grafico:
<?php
set_time_limit(0);
$conectID = mssql_connect("F1645","SA","");
mssql_select_db("tabla");
;
$fecha=array();
$cantidad=array();
while($row = mssql_fetch_array($result)){
$fecha[] = $row[0];
$cantidad[]= $row[1];
}
//$result1=mssql_query("select metas.mes,metas.meta_traf from Nueva_esparta inner join metas on right(left(nueva_esparta.fecha,6),2)like metas.mes where fecha >= CONVERT(char(8), DATEADD(DD, -59, GETDATE()), 112) order by metas.mes asc");
$fecha1=array();
$cantidad1=array();
while($row1 = mssql_fetch_array($result1)){
$fecha1[] = $row1[0];
$cantidad1[]= $row1[1];
}


?>ta peluo???? gracias
  #2 (permalink)  
Antiguo 30/03/2005, 08:09
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
no puedes pasar un array por url. Lo que podrias hacer es usar las funciones:
explode($string,"separador")
implode($array,"separador")

Una te transforma un array a string y ahi lo pasas por url, la otroa te desarma el string de nuevo a un array.Todo utilizando un string separador, como un * o un #.
Suerte
  #3 (permalink)  
Antiguo 30/03/2005, 08:18
Avatar de grovervas
Usuario no validado
 
Fecha de Ingreso: junio-2002
Ubicación: Perú
Mensajes: 306
Antigüedad: 21 años, 10 meses
Puntos: 0
Pues si se puede pasar arreglos por un enlace yo lo trabajo de esta manera:

<a href='grafico51.php?valor[]=10&valor[]=33&valor[]=104&valor[]=307&valor[]=11&valor[]=9&valor[]=54&valor[]=84&valor[]=73&valor[]=0&valor[]=5&valor[]=0&valor[]=1&area[]=HW - Mantenimiento&area[]=HW - Instalación/Configuración&area[]=SW - Instalación/Configuración&area[]=SW - Siafc&area[]=SW - Novell&area[]=SW - Citrix&area[]=SW - Internet/Intranet/Correo&area[]=SW - Modificación de tablas&area[]=SW - Reportes&area[]=AD - Proyectos&area[]=AD - Informes&area[]=AD - Riesgos&area[]=SW - Capacitación'>

En la otra pagina solo recorro el arreglo de esta forma

$_GET["valor"][$i]
$_GET["area"][$i]

Donde $i es el indice del arreglo.

Espero que te resulte porque en mi server no he tenido problemas.
  #4 (permalink)  
Antiguo 30/03/2005, 08:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 163
Antigüedad: 19 años, 1 mes
Puntos: 0
Estamos de acuerdo en la forma que lo pasas grovervas. Me referia a la forma en que el lo hacia. Lo que planteas es una alternativa mas.
Saludos
  #5 (permalink)  
Antiguo 30/03/2005, 09:22
 
Fecha de Ingreso: diciembre-2004
Mensajes: 156
Antigüedad: 19 años, 4 meses
Puntos: 0
gracias grovervas....pero se me ocurrio mejor colocar la sentencia en la pagina donde va la grafica y solo pasar un solo parametro de una a otra es decir esto. "mr" que es con que se hace la consulta ..pero como rayos lo paso porque cuando lo coloco en php asi:
<?
$variable =="mr";
?>

y en la cabecera esto:
<a href="prueba.php?saludo='$variable'">Paso </a>

me pinta una paloma y me saleen la otra pagina esto:

"$variable" ..esto porque=??? si le digo en php que $variable es igual a mr????
  #6 (permalink)  
Antiguo 30/03/2005, 09:48
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
y en la cabecera esto:
<a href="prueba.php?saludo='$variable'">Paso </a>

me pinta una paloma y me saleen la otra pagina esto:

"$variable" ..esto porque=??? si le digo en php que $variable es igual a mr????
Por qué estás poniendo comillas simples en la mención a la variable .. NO coresponde ahí ninguna comilla .. Eso es parte de un link (y que cumple y rige el standard CGI):

Además .. si no muestras todo ese código bajo un echo (o print) .. la varaible PHP no se va a interpretar a su vez .. tendrías que hacer:

Código PHP:
<? 
$variable
="bblabal";
<
a href="prueba.php?saludo=<? echo $variable ?>">Paso </a>
Si la variable es probable que contenga espacios, acentos .. etc .. tendrías que usar:
urlencode() a su vez

Código PHP:
<? 
$variable
="bblabal blabl acéntós";
<
a href="prueba.php?saludo=<? echo urlencode($variable) ?>">Paso </a>
Y en prueba.php .. usar la función inversa:
urldecode() aplicada a esa variable ..

También te vendrá bien ver sobre el uso de stripslasses().

A todo esto .. en prueba.php deberías tomar ese valor de esa variable que propagas en el URL por el método esperado:

Código PHP:
echo $_GET['saludo']; 
Si tienes arrays que propagar por el URL (no es muy recomendable .. para eso usa mejor una sesión, Los datos que se pueden pasar por el URL así no son infinitos .. hay limite (creo que 256? .. ) no es mucho .. ), lee esta FAQ al respecto:

http://www.forosdelweb.com/f18/faqs-php-530600-post262072/

Por lo demás .. Normalmente lo que se suele hacer para taréas tipica de "ver detalle" de un registro .. es decir .. de un listado de N registros . .pulsas tu "link" que va a ver ese registro completo .. o generar algo a partir de esos datos .. Lo que se suele hacer es mandar a consultar otra vez a tu BD por ese "ID" de registro obtenido .. generando en tu listado simplemente links tipo:

ver_detalle_o_nose.php?id=$row['id']

Para que en "ver_detalle_o_nose.php" lo tomes y hagas una consulta SQL filtrada por esa condición ..

$sql="SELECT .... FROM ..... WHERE id='".$_GET['id']."'";

Si, .. es una consulta más que hacer a tu BD .. pero ten presente que entre que tu presentarias ese "listado" de registros a seleccionar y pasas al "ver detalle.php" .. podría haber algún tipo de movimiento de ese registro (borrado/actualizado) .. de esta forma (a costa de una consulta SQL más) te aseguras al menos evitar ese problema. Los datos que ahí se veran son los reales a ese instante (o validaciones tipo "ya no existe tal "registro").

Un saludo,

Última edición por Cluster; 30/03/2005 a las 09:53
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 07:11.