Foros del Web » Programando para Internet » PHP »

librería GD

Estas en el tema de librería GD en el foro de PHP en Foros del Web. Saludos y feliz año a todos, tengo un pequeño problema a la hora de generar una gráfica con la librería GD. El problema no es ...
  #1 (permalink)  
Antiguo 04/01/2009, 09:49
 
Fecha de Ingreso: enero-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
librería GD

Saludos y feliz año a todos, tengo un pequeño problema a la hora de generar una gráfica con la librería GD. El problema no es que funciona mal ya que he conseguido mi objetivo, el problema reside a la hora de pasarle un parámetro al fichero .php que contiene toda la lógica para pintar la gráfica.

Para situraros un poco, este parámetro no se puede pasar por GET (sinó el problema estaría solucionado, ya que es una variable muy grande ,hay muchos números separados por comas, y el método GET, como sabeis, está limitado) ni por POST (ya que no se trata de un formulario).

La llamada a este fichero de lógica de la gráfica llamémoslo grafica.php se realiza através de la etiqueta <img src="grafica.php"> del fichero por ejemplo llamada.php

el problema principal es que tengo que enviar la variable por ejemplo "$disposicion" desde el fichero llamada.php al fichero grafica.php, pero no lo he conseguido. Por último probé crear un variable de sesión en llamada.php y recogerla en grafica.php, pero no me llegaba absolutamente nada.

Agradecería mucho vuestra ayuda, ya que no domino PHP. Os puedo facilitar el código.

Gracias por adelantado.
  #2 (permalink)  
Antiguo 04/01/2009, 11:10
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: librería GD

y si guardas la variable (o datos) en archivo.... ???

y luego, lo recuperas....
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.

Última edición por pateketrueke; 04/01/2009 a las 11:19
  #3 (permalink)  
Antiguo 04/01/2009, 14:21
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: librería GD

Hola bernidj, bienvenido al foro!

Cómo implementaste la variable de sesión? Porque al cargar la página llamada.php se crea la sesión y se envía el contenido HTML al nevagdor, y luego es que recién se procesa grafica.php (El navegador realiza un nuevo request para solicitar la imagen). Por lo tanto, en grafica.php deberías poder recoger la variable de sesión sin ningún problema.

Otras opciones son crear/guardar/borrar archivos temporales con los datos que deseas pasar, o en su defecto usar una base de datos (vale la pena?). Insisto, con sesiones deberías poder. Cómo es que tienes tu código?

  #4 (permalink)  
Antiguo 05/01/2009, 21:39
 
Fecha de Ingreso: enero-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: librería GD

Cita:
Iniciado por okram Ver Mensaje
Hola bernidj, bienvenido al foro!

Cómo implementaste la variable de sesión? Porque al cargar la página llamada.php se crea la sesión y se envía el contenido HTML al nevagdor, y luego es que recién se procesa grafica.php (El navegador realiza un nuevo request para solicitar la imagen). Por lo tanto, en grafica.php deberías poder recoger la variable de sesión sin ningún problema.

Otras opciones son crear/guardar/borrar archivos temporales con los datos que deseas pasar, o en su defecto usar una base de datos (vale la pena?). Insisto, con sesiones deberías poder. Cómo es que tienes tu código?

En realidad, no deseo hacer una consulta a BBDD en grafico.php, simplemente pasar por sesión el contenido tan extenso que anteriormente recupera de BBDD.

He probado de todo con la variable de sesión y en grafico.php no hay forma de recuperar el valor. Es muy extraño pero cuando hago if(!isset($_SESSION['dispo'])) me devuelve true, es decir como si no existiera esa variable de sesión.

Gracias por el interés
  #5 (permalink)  
Antiguo 05/01/2009, 21:40
 
Fecha de Ingreso: enero-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: librería GD

Cita:
Iniciado por pateketrueke Ver Mensaje
y si guardas la variable (o datos) en archivo.... ???

y luego, lo recuperas....
jejej es una posibilidad, al igual que recuperar desde base de datos, pero esto ya es cabezonería. ;)

No me explico como no funciona.
  #6 (permalink)  
Antiguo 05/01/2009, 21:46
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: librería GD

Asegúrate de que en ambas páginas estés colocando correctamente el session_start(). Repito... Cómo lo implementaste? (Vamos, que nos muestres tu código)

  #7 (permalink)  
Antiguo 06/01/2009, 08:22
 
Fecha de Ingreso: enero-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: librería GD

Cita:
Iniciado por okram Ver Mensaje
Asegúrate de que en ambas páginas estés colocando correctamente el session_start(). Repito... Cómo lo implementaste? (Vamos, que nos muestres tu código)

OK, siento no haber puesto el código antes, ahora mismo lo muestro.

FICHERO: llamada.php -->
Código:
<?session_start();?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="<?php echo $css1; ?>" />
<link rel="stylesheet" type="text/css" href="<?php echo $css; ?>" />
<body>
<div>&nbsp;</div>
<div class="componentheading">Disposición de los cables</div>
<span style="font:2em;"><b>Acometida:</b> </span>
<span class="descripcion">
<?php //echo $this->id_acometida ; ?>
</span>
<br/>
<span style="font:2em;"><b>Proyecto:</b> </span> 
<span class="descripcion">
<?php //echo $this->proyecto->desc_proyecto ; ?>
</span>
<br/>

<? if($this->disposicion->posiciones != ""){
        $_SESSION['dispo'] = $this->disposicion->posiciones;
?>
<img src="components/com_basor/views/verdisposicioncables/tmpl/grafica.php" />
<?}?>
</body>
</html>
FICHERO grafica.php ->
Código:
<?session_start();?>
<html><body>
<?
function error($numero,$texto){
    $ddf = fopen('error.log','a');
    fwrite($ddf,"[".date("r")."] Error $numero:$texto \n");
    fclose($ddf);
}
set_error_handler('error');


// Si no existe la sesion
if(!isset($_SESSION['dispo'])){
                // Guardamos un error
                error('001','No existe la variable de sesion');  // SIEMPRE APARECE EN EL LOG ESTO (NO EXISTE la variable session)}
else {
	$disposicion = $_SESSION['dispo'];
	$cadena = explode(",", $disposicion);
	$longitud = count($cadena);
                error('002','Todo bien');
}


$base = "5";
$altura = "5";

for($i=1; $i<3; $i+=1){
    if($i==1){
        $base = $cadena[$i];
    }

    if($i==2){
        $altura = $cadena[$i];
    }
    
}

if($base == "5"){
    $im = @imagecreate(300, 200) or die("Error creando la imagen");
}
else {
   // $base_int = (int)$base;
   // $altura_int = (int)$altura;
    
    $im = @imagecreate($base_int, $altura_int) or die("Error creando la imagen");
    //$im = @imagecreate(300.200, 200.500) or die("Error creando la imagen");
}
$fondo = imagecolorallocate($im, 0, 0, 0); // blanco
$linea = imagecolorallocate($im, 255, 255, 255); // negro

imageellipse($im, 50, 50, 30, 30, $linea);

header("Content-type: image/png"); 
imagepng($im); 
imagedestroy($im);
?> 
</body>
</html>
GRACIAS POR EL INTERÉS
  #8 (permalink)  
Antiguo 06/01/2009, 09:31
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: librería GD

Pues de entrada el problema que veo son las etiquetas <html><body> que envias en la grafica, eso corrompe el grafico y te genera un error al enviar las cabeceras de imagen, al igual que las de cierre.

Saludos.
  #9 (permalink)  
Antiguo 07/01/2009, 09:28
 
Fecha de Ingreso: enero-2009
Mensajes: 6
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: librería GD

Cita:
Iniciado por GatorV Ver Mensaje
Pues de entrada el problema que veo son las etiquetas <html><body> que envias en la grafica, eso corrompe el grafico y te genera un error al enviar las cabeceras de imagen, al igual que las de cierre.

Saludos.
Sigue ocurriendo el mismo error, es decir en el log aparece que no existe la variable de session, es muy extraño verdad?
  #10 (permalink)  
Antiguo 07/01/2009, 12:38
okram
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: librería GD

Pues si no está seteada en grafica.php hay varias cosas que debes verificar.

Uno, verifica que la variable en efecto se esté creando. Para ello, dado que la tienes dentro de un condicional if, debes asegurarte que $this->disposicion->posiciones tiene contenido en llamada.php.

Dos, asegúrate de tener cookies activadas.

Tres, usa session_id() para verificar que los ids de sesión en ambas poáginas sean los mismos. Si no lo son, el darle un nombre a la sesión podría solucionar el problema (session_name()).

Cuatro. Usa <?php en vez de <?.

  #11 (permalink)  
Antiguo 07/01/2009, 12:59
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: librería GD

si pones mas codigo te vamos a poder ayudar...

por que parece que tu $this->disposicion->posiciones tiene valor nulo... proba con unt print_r a esa variable a ver si que valor esta pasandole a la sesion
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
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 05:24.