Que mas amigos, estuve haciendo la encuesta pero ahora con bases de datos, cree la base, hice las paginas en dreamweaver y todo eso, la encuesta funciona excelente, el problema es que despues de votar, quiero ver los resultados en un grafico de barras pero no los muestra. estoy utilizando la libreria gd de php, me carga la pagina pero no me carga la imagen de los resultados, les dejo el codigo del script de la pregunta y el de los resultados:
encuesta.php(muestra la pregunta de la encuesta)
Código PHP:
<body>
<?php
//Conectamos con la base de datos
require('configuracion.inc.php');
$enlace = mysql_connect($host,$usuario,$password);
mysql_select_db($db,$enlace);
//Seleccionamos la informacion de la última encuesta insertada
$consulta = "SELECT * FROM encuestas ORDER BY fecha DESC LIMIT 0,1";
$consulta = mysql_query($consulta,$enlace);
while($row = mysql_fetch_array($consulta)){
$titulo=$row["titulo"];
$fecha=$row["fecha"];
$id=$row['id'];
}
?>
<body>
<form name="form1" method="post" action="votar.php">
<table width="350" border="1">
<tr>
<td colspan="2"><strong>Titulo</strong>: <?php echo $titulo; ?>
<input type="hidden" name="id" value="<?php echo $id;?>"></td>
</tr>
<?php
$sql = "SELECT texto, id FROM respuestas WHERE idenc=\"$id\"";
$sql = mysql_query($sql,$enlace);
while($row = mysql_fetch_array($sql)){
$texto=$row["texto"];
$idres=$row["id"];
?>
<tr>
<td width="51"><input type="radio" name="opcion" value="<?php echo $idres; ?>"></td>
<td width="283"><?php echo $texto; ?></td>
</tr>
<?php } ?>
<tr>
<td><input type="submit" name="Submit" value="Enviar"></td>
<td>Esta encuesta está desde el <?php echo date('d-m-y',$fecha); ?></td>
</tr>
<tr>
<td colspan="2"><a href="votar.php">Ver resultados</a></td>
</tr>
</table>
</form>
</body>
votar.php (hace las votaciones de la encuesta)
Código PHP:
<?
require('configuracion.inc.php');
$enlace = mysql_connect($host, $usuario, $password);
mysql_select_db($db,$enlace);
//Obtenemos el titulo de la encuesta
$consulta = "SELECT titulo FROM encuestas ORDER BY fecha DESC LIMIT 1,0";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)){
$titulo= $row['titulo'];
}
//Obtenemos el numero actual de votos para la opción elegida
//Comprobamos si $opcion no está vacío porque posteriormente este mismo
//fichero lo utilizaremos para ver resultados sin tener que votar necesariamente
if(!empty($opcion)) {
$consulta = "SELECT votos FROM respuestas WHERE id=$opcion";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)){
$votos= $row['votos'];
}
//Incrementamos en uno los votos totales
$votos = $votos + 1;
//Y actualizamos la base de datos
$consulta = "UPDATE respuestas SET votos = $votos WHERE id=$opcion";
mysql_query($consulta,$enlace);
}
?>
<img src="dgrafica.php">
dgrafica.php(script que dibuja la imagen del grafico de barras)
Código PHP:
<?php
//Fijaos en que esta vez tenéis que añadir vosotros la informacion en mysql_connect
$enlace = mysql_connect('localhost','root','0000');
mysql_select_db('encuestas');
//Obtenemos el titulo de la última encuesta para colocarlo como título en nuestro gráfico
$consulta = "SELECT titulo, id FROM encuestas ORDER BY fecha DESC LIMIT 0,1";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($consulta)){
$titulo= $row['titulo'];
$id=$row['id'];
}
//Obtenemos el numero de votos de cada opcion y los metemos en "votos[]"
$consulta = "SELECT votos, texto FROM respuestas WHERE idenc=$id";
$consulta = mysql_query($consulta,$enlace);
$lado=mysql_num_rows($consulta);
while($row = mysql_fetch_array($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,$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, $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);
?>
como informacion adicional, stoy usando en AppServ 2.5.6 para windows, pero lo q nnose es si se requiere configurar el php.ini, yo lo revise y vi que todo estaba bien, segun el tutorial de la encuesta, lo unico es q no me muestra los resultados. El php.ini trae el php_gd2.dll como libreria para imagenes, pero mi duda es hay que cambiar el php_gd2 por el php_gd? y de ser asi, donde puedo conseguir el php_gd?
Espero puedan ayudarme. Saludos