Foros del Web » Programando para Internet » PHP »

Dibujo de lineas de colores en php

Estas en el tema de Dibujo de lineas de colores en php en el foro de PHP en Foros del Web. Hola amigos!! Tengo un problema. Yo estoy dibujando una seria de lineas en php con la libreria GD. El Asunto es que cada una de ...
  #1 (permalink)  
Antiguo 05/03/2009, 14:44
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 3 meses
Puntos: 0
Dibujo de lineas de colores en php

Hola amigos!! Tengo un problema. Yo estoy dibujando una seria de lineas en php con la libreria GD. El Asunto es que cada una de esas lineas va a tener un color distinto de acuerdo a un estatus, los valores de los estatus lo tengo guardado en un arreglo q se llama $status4, donde este arreglo solo tiene 5 nombres de estatus diferentes, q son: Operativo, Planificado, Desincorporado, Al Aire, y Activo, Para cada estatus estoy tratando de pintar la linea de un color diferente, resulta q cuando el arreglo tiene en su contenido solo dos estatus: Operativo o Planificado se me dibujan las lineas correctamente con el color q le estoy dando, pero cuando el arreglo tiene mas de 2 estatus no se me dibuja la imagen, la verdad q no se porq eso sucede. La imagen es un archivo q se llama linea4.php q me dibuja el conjunto de lineas, les voy a colocar el archivo linea4.php para q lo revisen y me ayuden a determinar el problema:

<?php
$x1=$_GET['x1'];
$y1=$_GET['y1'];
$x2=$_GET['x2'];
$y2=$_GET['y2'];
$radios4=unserialize (urldecode ($_GET ['radi4']));
$status4=unserialize (urldecode ($_GET ['statu4']));
/*$col1=0;
$col2=0;
$col3=0;*/


$im = imagecreate(256,6000) or die("Error creando la imagen");
$fondo = imagecolorallocate($im, 255, 255, 255); // blanco

/*Dibujando las lineas de Radio-Radio que vienen de los nodos 2do tramo*/

if ($radios4!=0 and $radios4!="")
{
foreach($radios4 as $a => $va1)
{
$y11=80*$a;
$y1=10+$y11;
foreach($va1 as $i => $va2)
{
$resu1=pow($x2,2);
$resu2=pow($a,2);
$resu3=$resu1+$resu2;
$resu4=Sqrt($resu3);
$resu5=round($resu4);

/*Verifico el estatus del enlace antes de pintar la linea para establecer el color del enlace*/
switch($status4[$a][$i])
{
case 'Planificado':
//parametros para pintar la linea de color naranja=>StatusEnlace=>Planificado
$col1=255;
$col2=120;
$col3=30;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Operativo':
//parametros para pintar la linea de color verde=>StatusEnlace=>Operativo
$col1=0;
$col2=200;
$col3=0;
$linea = imagecolorallocate($im, $col, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Desincorporado':
//parametros para pintar la linea de color negro=>StatusEnlace=>Desincorporado
$col1=0;
$col2=0;
$col3=200;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Al Aire':
//parametros para pintar la linea de color amarillo=>StatusEnlace=>Al Aire
$col1=255;
$col2=255;
$col3=0;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
case 'Activo':
//parametros para pintar la linea de color amarillo=>StatusEnlace=>Al Aire
$col1=0;
$col2=255;
$col3=255;
$linea = imagecolorallocate($im, $col1, $col2, $col3); //color de la linea de enlace
imageline($im,$x1,$y1,$resu5,$y2,$linea);
$y2=$y2+80;
break;
}

}
}
}

header("Content-type: image/gif");
imagegif($im);
imagedestroy($im);

?>

El codigo me funciona pero solo cuando el arreglo $status4 contiene como maximo dos valores de estatus, cuando hay mas de tres valores distintos de estatus en el arreglo (Ejemplo: Operativo, Planificado, Desincorporado) no se me dibujan las lineas, por favor ayudenme con este problema, gracias...
  #2 (permalink)  
Antiguo 05/03/2009, 15:11
 
Fecha de Ingreso: octubre-2004
Mensajes: 2.627
Antigüedad: 19 años, 5 meses
Puntos: 48
Respuesta: Dibujo de lineas de colores en php

Son necesarios tambien los datos, tanto del array status4 como del que salen los datos i y a. Quizas esos arrays no tienen los datos que piensas y por eso falla el codigo.
  #3 (permalink)  
Antiguo 06/03/2009, 07:35
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Dibujo de lineas de colores en php

si tiene los datos porq ya hice un foreach de $status4 y ya los mostre, por eso te digo cuando hay mas de dos estatus distintos no se dibuja la imagen...
  #4 (permalink)  
Antiguo 06/03/2009, 08:07
Avatar de quinqui  
Fecha de Ingreso: agosto-2004
Ubicación: Chile!
Mensajes: 776
Antigüedad: 19 años, 8 meses
Puntos: 56
Respuesta: Dibujo de lineas de colores en php

En verdad hacen falta tus datos de prueba, si no, no podemos saber cómo leen tus foreach los arreglos. Yo lo probé tanteando estructuras de arreglos, hasta pillar una en que me dibuja todas las líneas, de todos los status. Estos son los arreglos de prueba que usé, dime si así es como lo diseñaste tú, o bien danos la estructura correcta, por favor, para poder ayudarte:

Código PHP:
$radios4    = array(=> array(1,2,3), 
                    
=> array(4,5,6,10),
                    
=> array(7,8,9));
$status4     = array(=> array("Planificado""Operativo""Al Aire"),
                    
=> array("Al Aire""Desincorporado""Planificado""Operativo"),
                    
=> array("Desincorporado""Activo")); 
PD: Y por favor, encapsula tu código en etiquetas de código [ code ] o [ php ] para poder facilitar la lectura del mismo y acelerar la ayuda, gracias.
__________________
pipus.... vieeeeeji plomius!!!
*quinqui site*
  #5 (permalink)  
Antiguo 06/03/2009, 09:52
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Dibujo de lineas de colores en php

ok quinqui, gracias x querer ayudarme, fijate aqui te pongo el codigo dond yo me traigo los estatus de una tabla en la base de datos y los voy guardando en el arreglo $status4:

if($radios4!=0 and $radios4!="")
{
foreach($radios4 as $a => $va1)
{
foreach($va1 as $i => $va2)
{
$cadena="SELECT * FROM tx_radios_instalados WHERE (corresponsal='$rad4[$a]' and radiobase='$va2') and radiobase like '$num_codrf%'";
$consulta=$conecta->seleccion($cadena);
while($resultado=mysql_fetch_array($consulta))
{
$status4[$a][$i]=$resultado['statusenlace'];
$idraInst4[$a][$i]=$resultado['id_radios_inst'];
}
}
}
}

y para comprobar que datos tiene el arreglo $status4 los mostre por pantalla de la siguiente forma para saber que datos me trajo la consulta:

if($status4!=0 and $status4!="")
{
foreach($status4 as $a => $va1)
{
foreach($va1 as $i => $va2)
{
echo $va2;
echo " ";
}
}
}

y el resultado es este:

Planificado Planificado Planificado Planificado Operativo Operativo Operativo Operativo Planificado Operativo Desincorporado Operativo Planificado Planificado Al Aire Planificado Operativo Planificado Planificado Planificado Planificado Planificado Operativo Operativo Operativo Planificado Operativo Planificado

Como puedes ver en ese resultado hay hasta 4 tipos de estatus, el caso es q cuando solamente los estatus son de dos tipos o bien sea operativo y planificado si se me muestra la imagen con los dos colores de linea correspondiente. Bueno espero q te haya servido, espero tu sugerencia, gracias!!
  #6 (permalink)  
Antiguo 06/03/2009, 13:57
(Desactivado)
 
Fecha de Ingreso: enero-2009
Mensajes: 103
Antigüedad: 15 años, 3 meses
Puntos: 0
Respuesta: Dibujo de lineas de colores en php

oye sera q esta vez nadien pudo echarme una manito??
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 08:40.