Pasar arreglos por Url

2,095 views
Skip to first unread message

Daniela Blanco

unread,
Aug 1, 2011, 2:21:05 AM8/1/11
to codeignit...@googlegroups.com
Hola, se me plantea el siguiente problema.
 
Tengo que colocar un link html hacia una funcion de un controlador, pero la funcion recibe dos arreglos (arrays). El link lo genero con img() sin problemas... el problema esta en como enviarle los parametros.
 
Para ponerlos un poco mas en tema, intento explicarlo mas claro, sin codeigniter seria:
1) En un html se genera el link
 
<img alt="grafico" src="grafica.php?leyendas=Array&valores=Array">
2) grafica.php recibe los array y genera el archivo de la imagen, mostrandola.
En codeigniter, hice lo mismo creando un controlador Grafico, que tiene una funcion Index, que recibe los dos arreglos y genera la salida de la imagen. 
Pero faltaria saber como hacer que los arreglos viajen por URL.
Espero que se entienda.
Muchas gracias por su tiempo. Saludos, 
Daniela
P.D.: si alguien ya utilizo alguna clase o similar donde utilizo la libreria GD se agradecen los comentarios de como les fue.

Jimmy Collazos || acido || cuatroxl.com

unread,
Aug 1, 2011, 4:44:09 AM8/1/11
to codeignit...@googlegroups.com
En php se puede pasar parámetros como array de la sigueinte manera:

miarreglo[var1]=pablo&miarreglo[var2]=marta&miarreglo[varN]=...

no es muy recomendable, pero por poder se puede.

--
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
:::::::::::::::: J i m m y  C o l l a z o s :::::::::::::::::::::
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::

Roberto Moreno P.

unread,
Aug 1, 2011, 7:20:24 AM8/1/11
to codeignit...@googlegroups.com
Creo que en este caso es recomendable pasar la información en formato JSON

Saludos

El día 1 de agosto de 2011 04:44, Jimmy Collazos || acido ||
cuatroxl.com <aci...@gmail.com> escribió:

> --
> ---
> Para anular la suscripción a este grupo, envía un mensaje a
> codeigniter-spa...@googlegroups.com
> Para obtener más opciones, visita este grupo en
> http://groups.google.com/group/codeigniter-spanish?hl=es.

--
Roberto Andrés Moreno Pérez

Daniela Blanco

unread,
Aug 1, 2011, 9:46:27 AM8/1/11
to codeignit...@googlegroups.com
Algun documento o sitio para saber de que se trata?

-----Mensaje original-----
De: codeignit...@googlegroups.com
[mailto:codeignit...@googlegroups.com] En nombre de Roberto Moreno P.
Enviado el: lunes, 01 de agosto de 2011 08:20 a.m.
Para: codeignit...@googlegroups.com
Asunto: Re: [codeigniter-spanish] Pasar arreglos por Url

Roberto Moreno P.

unread,
Aug 1, 2011, 9:55:08 AM8/1/11
to codeignit...@googlegroups.com
Puedes partir por aqui,

http://es.wikipedia.org/wiki/JSON

Lo que si deberas modificar un poco tu config.php para aceptar algunos
de los caracteres de este sistema de marcado

Saludos

El día 1 de agosto de 2011 09:46, Daniela Blanco
<danibl...@gmail.com> escribió:

Daniela Blanco

unread,
Aug 1, 2011, 9:59:02 AM8/1/11
to codeignit...@googlegroups.com
Por ahora lo solucione con estas funciones

/****************************************
* Prepara array para envio por url *
* que ya no este elegido *
* Parametros *
* array a convertir *
****************************************/
function _array_a_url($array) {
$tmp = serialize($array);
$tmp = urlencode($tmp);
return $tmp;
}

/****************************************
* Prepara array para recibir de url *
* que ya no este elegido *
* Parametros *
* array a convertir *
****************************************/
function _url_a_array($url_array) {
$tmp = stripslashes($url_array);
$tmp = urldecode($tmp);
$tmp = unserialize($tmp);
return $tmp;
}

Pero como decis, veo que tengo algun problema con los caracteres que genera
para la url....

-----Mensaje original-----
De: codeignit...@googlegroups.com
[mailto:codeignit...@googlegroups.com] En nombre de Roberto Moreno P.

Enviado el: lunes, 01 de agosto de 2011 10:55 a.m.

eycopia

unread,
Aug 2, 2011, 10:33:11 PM8/2/11
to CodeIgniter-spanish
hola, no se que tipo de informacion vaya en los array que quieres
enviar, pero si solo son tipo numerico y string, creo que esto la
class URI te podria ayudar.
http://codeigniter.com/user_guide/libraries/uri.html

En cuando a la funcion serialize() de javascript como han dicho se
tiene que cambiar el config, yo requiri hace poco algo como lo tuyo y
lo que hize fue codificar las valores toda la url en base 64 y luego
decodificarlo en el controlador. para eso cambie la expresion regular
del config como sigue:
$config['permitted_uri_chars'] = 'a-z 0-9 = ~%.:_\-';

Espero te ayude.

Julian Magnone

unread,
Aug 2, 2011, 10:37:02 PM8/2/11
to codeignit...@googlegroups.com
Para qué necesitarías pasar arreglos por la URL? Podrías poner un ejemplo?

De todos modos, a tener cuidado con el largo de la URL. Te podrías llevar una sorpresa si sobrepasas los 255 caracteres.

Daniela Blanco

unread,
Aug 3, 2011, 9:22:54 AM8/3/11
to codeignit...@googlegroups.com
El motivo es pasarlo a una funcion que grafica con la libreria gd. Necesita recibir un arreglo con las leyendas y los % que asigna a un grafico de barras.


De: codeignit...@googlegroups.com [mailto:codeignit...@googlegroups.com] En nombre de Julian Magnone
Enviado el: martes, 02 de agosto de 2011 11:37 p.m.
Para: codeignit...@googlegroups.com
Asunto: Re: [codeigniter-spanish] Re: Pasar arreglos por Url

Daniela Blanco

unread,
Aug 3, 2011, 9:33:28 AM8/3/11
to codeignit...@googlegroups.com
Trato de ponerlo mas claro, tengo un controlador que genera una imagen pgn (un grafico de torta) para esto necesita dos arreglos, uno con las leyendas y otro con los % de cada elemento a graficar. Para que funcione un html tiene que tener algo asi como:
 
<img src="...grafica/array_leyendas/array_porcentajes">
 
Por eso tengo que generar esa url pasando los parametros.
 
se entiende?
 

De: codeignit...@googlegroups.com [mailto:codeignit...@googlegroups.com] En nombre de Julian Magnone
Enviado el: martes, 02 de agosto de 2011 11:37 p.m.

Asunto: Re: [codeigniter-spanish] Re: Pasar arreglos por Url

Julian Magnone

unread,
Aug 3, 2011, 9:34:41 AM8/3/11
to codeignit...@googlegroups.com
Ok, entonces en la documentación te debe decir cómo pasar los parámetros. No creo que tengas que pasar serializado desde PHP, sino codificado en alguna forma especial que GD trabaje. En la documentación de GD te debe decir cómo pasar estos parámetros y luego sería cuestión de convertirlo desde PHP. Posiblemente necesites utilizar urlencode().

Saludos!

Julián



2011/8/3 Daniela Blanco <danibl...@gmail.com>
Reply all
Reply to author
Forward
0 new messages