Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/05/2007, 09:29
pcmac
 
Fecha de Ingreso: febrero-2004
Mensajes: 47
Antigüedad: 20 años, 2 meses
Puntos: 0
salto de linea

Hola a todos/as:
tengo el siguiente problema.
he tomado de la web y de los foros el codigo para hacer una encuesta y me funciona perfectamente, pero quisiera mejorarlo y me da errores.
aqui pongo el codigo de los dos fichero que quiero mejorar:

Fichero: dgrafica.php

<?php

mysql_connect
$enlace = mysql_connect('localhost',' ',' ');
mysql_select_db('encuesta');

//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,$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);

?>

En este fichero quiero por ejemplo la linea donde dice lo siguiente:
$leyenda = "Opcion ".$indice.": ". $texto." ($vot)";

Me gustaria porner un retorno de line asignandoselo a la variable $texto.
ocurre que cuando pongo
$texto = $texto + '\n';

o estos otros:
$texto = $texto + '<br>';
$texto = "$texto \n";
$texto = "$texto <br>";

ocurren varias cosas:
no me muestra bien los graficos o
no muestra ninguna imagen.

Tambien quisiera saber por que no puedo usar una instruccion echo o print para mostrar algun resultado.

El otro fichero que llama a este es el siguiente:

encuesta.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">

Espero que alguien me ayude rapidito, please.

saludos a todos los foreros.

pcmac2000

Si alguien