Foros del Web » Programando para Internet » PHP »

salto de linea

Estas en el tema de salto de linea en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 17/05/2007, 10:29
 
Fecha de Ingreso: febrero-2004
Mensajes: 47
Antigüedad: 15 años, 9 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
  #2 (permalink)  
Antiguo 17/05/2007, 19:36
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: Ayuda uregente con salto de linea

Has hecho un mensaje muy difícil de leer, con texto y código mezclado. La próxima vez por favor usá las bbcode "[ php ]" y "[ /php ]" para separar los bloques de código.

Código PHP:
$texto $texto '\n';
$texto $texto '<br>';
$texto "$texto \n";
$texto "$texto <br>"
PHP concatena con el punto, no con +
Además '\n' no es lo mismo que "\n", las comillas simples no reconocen secuencias de escape más que \'

Para generar un salto de línea html, la 4º opción es correcta, aunque no veo por qué querrías agregarle un salto de línea a $texto si luego la vas a concatenar con $vot, mejor sería agregárselo a $leyenda...

¿Qué te impide "usar una instruccion echo o print para mostrar algun resultado."?

Saludos.
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 11:29.