Foros del Web » Programando para Internet » PHP »

Crear imagen para encuesta

Estas en el tema de Crear imagen para encuesta en el foro de PHP en Foros del Web. hola tengo el siguiente codigo para crear una imagen con los datos de una encuesta el tema es que me tira error me dice que ...
  #1 (permalink)  
Antiguo 19/06/2008, 20:58
Avatar de mauricioadrian  
Fecha de Ingreso: junio-2008
Mensajes: 157
Antigüedad: 15 años, 10 meses
Puntos: 0
Crear imagen para encuesta

hola tengo el siguiente codigo para crear una imagen con los datos de una encuesta el tema es que me tira error me dice que la imagen no se puede mostrar porque contiene errores. ojala puedan ayudarme yio hace horas que vengo mirando pero no la cacho che je.
aca dejo el script.
Código PHP:
<?php
//Fijaos en que esta vez tenéis que añadir vosotros la informacion en mysql_connect
include("../../conexion.php");
//Obtenemos el titulo de la última encuesta para colocarlo como título en nuestro gráfico
$consulta "SELECT * FROM encuestas ORDER BY fecha DESC LIMIT 1";
print 
$consulta;
$rs_consulta mysql_query($consulta); 
$lado=mysql_num_rows($rs_consulta);
$row mysql_fetch_array($rs_consulta) or die(mysql_error()); 
$titulo$row['titulo'];
$id_encuesta=$row['id_encuesta'];


//Obtenemos el numero de votos de cada opcion y los metemos en "votos[]"
$consulta "SELECT * FROM respuestas WHERE id_encuesta=$id_encuesta";
print 
"<br>";
print 
"consulta " .$consulta;
print 
"<br>";
$rs_consulta mysql_query($consulta); 
$lado=mysql_num_rows($rs_consulta);

while(
$row mysql_fetch_array($rs_consulta)){ 
  
//Guardamos el texto en la variable temp. Este texto nos servirá como 
    //índice en el array votos[]
  
$temp $row['texto'];  
  
$votos[$temp]= $row['votos']; 
}


//Variables del gráfico
$width 500;         //Ancho de la imagen
$espacioCol 30;    //Espacio que habrá del principio de una columna a otra
$altoCol 15;        //El alto de las columnas
$height 2*count($votos)*$espacioCol+45;    //El alto de la imagen
$maxvoto max($votos);    //Valor de la opcion mas votada
$maxlargo $width-50;        //Largo que tendrá la opción mas votada
$coeficiente = (int)($maxlargo $maxvoto);    //Coeficiente para calcular el largo de cada opcion


//Creamos la imagen con el alto y ancho asignados anteriormente
print " este es el ancho $width , este es el alto $height ";    
$image imagecreate($width,$height);

//Declaramos variables para los colores.    Al ser el gris el primer color que 
//declaramos, éste se quedará como color de fondo en la imagen
$gray imagecolorallocate($image0xC00xC00xC0);
$black imagecolorallocate($image0x000x000x00);
$blue imagecolorallocate($image0x000x000xFF);

//Recorremos el array 'votos'
for($i=0; list($texto$vot) = each($votos); $i++) {

  
$labelfont 2//Fuente empleada para etiquetas
  //Dibujamos las barras
  //Coordenadas para definir el rectángulo
  
$valign = ($i+1)*$espacioCol 15;
  
$halign 30;
  
$valign2 $valign $altoCol;
  
$halign2 $halign+$vot*$coeficiente;
  
imagefilledrectangle($image,$halign,$valign,$halign2,$valign2,$blue);
  
  
//Ponemos el índice de cada barra
  //Coordenadas para colocar los indices
  
$indice $i 1;
  
$halign 15;
  
imagestring($image$labelfont$halign$valign$indice$black);
  
  
//Leyenda: Numero de opcion + Texto + ( votos )
  //Coordenadas para colocar la leyenda
  
$valign = ($i+1)*$espacioCol + (count($votos)*$espacioCol)+ 15;
  
$halign 30;
  
$leyenda "Opcion ".$indice.": ".$texto." ($vot)";
  
imagestring($image$labelfont$halign$valign$leyenda$black);    
  
      
}

//Asignamos tipografía y colocamos el título en la parte superior izquierda
$titlefont 3;
imagestring($image$titlefont1010$titulo$black);

//Dibujamos el recuadro que encierra el contenido
imagerectangle($image$width 5305$height 5$black);    

//Devolvemos la imagen
header("Content-type: image/png");
imagepng($image);
imagedestroy($image);
print 
"aaa";
?>
  #2 (permalink)  
Antiguo 19/06/2008, 21:54
Avatar de mauricioadrian  
Fecha de Ingreso: junio-2008
Mensajes: 157
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: Crear imagen para encuesta

ya esta solucionado cuando uno crea una imagen con la libreria gd.dll no tiene que agregar ni siquiera un print.jjejje me habia olvidado de eso.! me estaba comiendo la cabeza! aca esta el codigo bien para que vean la dif. o por si a alquien le sirve.


<?
/**
* Atencion !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
* no agreagar nada ni un printr ni html ni nada ya que es el codigo con que se forma la imagen cualquier
* variacion no crea la imagen me llevo horas porpelotudo!!!!!!!!
*/

//Fijaos en que esta vez tenéis que añadir vosotros la informacion en mysql_connect
include("../../conexion.php");
//Obtenemos el titulo de la última encuesta para colocarlo como título en nuestro gráfico
$consulta = "SELECT * FROM encuestas ORDER BY fecha DESC LIMIT 1";
$rs_consulta = mysql_query($consulta);
$lado=mysql_num_rows($rs_consulta);
$row = mysql_fetch_array($rs_consulta) or die(mysql_error());
$titulo= $row['titulo'];
$id_encuesta=$row['id_encuesta'];


//Obtenemos el numero de votos de cada opcion y los metemos en "votos[]"
$consulta = "SELECT * FROM respuestas WHERE id_encuesta=$id_encuesta";
$rs_consulta = mysql_query($consulta);
$lado=mysql_num_rows($rs_consulta);

while($row = mysql_fetch_array($rs_consulta)){
//Guardamos el texto en la variable temp. Este texto nos servirá como
//índice en el array votos[]
$temp = $row['texto'];
$votos[$temp]= $row['votos'];
}


//Variables del gráfico
$width = 500; //Ancho de la imagen
$espacioCol = 30; //Espacio que habrá del principio de una columna a otra
$altoCol = 15; //El alto de las columnas
$height = 2*count($votos)*$espacioCol+45; //El alto de la imagen
$maxvoto = max($votos); //Valor de la opcion mas votada
$maxlargo = $width-50; //Largo que tendrá la opción mas votada
$coeficiente = (int)($maxlargo / $maxvoto); //Coeficiente para calcular el largo de cada opcion


//Creamos la imagen con el alto y ancho asignados anteriormente
$image = imagecreate($width,$height);

//Declaramos variables para los colores. Al ser el gris el primer color que
//declaramos, éste se quedará como color de fondo en la imagen
$gray = imagecolorallocate($image, 0xC0, 0xC0, 0xC0);
$black = imagecolorallocate($image, 0x00, 0x00, 0x00);
$blue = imagecolorallocate($image, 0x00, 0x00, 0xFF);

//Recorremos el array 'votos'
for($i=0; list($texto, $vot) = each($votos); $i++) {

$labelfont = 2; //Fuente empleada para etiquetas
//Dibujamos las barras
//Coordenadas para definir el rectángulo
$valign = ($i+1)*$espacioCol + 15;
$halign = 30;
$valign2 = $valign + $altoCol;
$halign2 = $halign+$vot*$coeficiente;
imagefilledrectangle($image,$halign,$valign,$halig n2,$valign2,$blue);

//Ponemos el índice de cada barra
//Coordenadas para colocar los indices
$indice = $i + 1;
$halign = 15;
imagestring($image, $labelfont, $halign, $valign, $indice, $black);

//Leyenda: Numero de opcion + Texto + ( votos )
//Coordenadas para colocar la leyenda
$valign = ($i+1)*$espacioCol + (count($votos)*$espacioCol)+ 15;
$halign = 30;
$leyenda = "Opcion ".$indice.": ".$texto." ($vot)";
imagestring($image, $labelfont, $halign, $valign, $leyenda, $black);


}





//Asignamos tipografía y colocamos el título en la parte superior izquierda
$titlefont = 3;
imagestring($image, $titlefont, 10, 10, $titulo, $black);

//Dibujamos el recuadro que encierra el contenido
imagerectangle($image, $width - 5, 30, 5, $height - 5, $black);

//Devolvemos la imagen
header("Content-type: image/png");
imagepng($image);
//imagedestroy($image);

?>
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 21:00.