Foros del Web » Programando para Internet » PHP »

Consulta no muestra formato

Estas en el tema de Consulta no muestra formato en el foro de PHP en Foros del Web. Hola, trato de mostrar el resultado de una consulta a mysql (es un bloque de texto con puntos aparte, guiones y similares) el problema es ...
  #1 (permalink)  
Antiguo 11/01/2004, 10:33
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 0
Consulta no muestra formato

Hola, trato de mostrar el resultado de una consulta a mysql (es un bloque de texto con puntos aparte, guiones y similares) el problema es que me muestra el resultado pero el texto me sale todo seguido (como si no hubiera puntos y a aparte) os pego el código a ver si alguien ve donde cometo el error o el motivo de porqué no me sale el texto con formato.

Gracias

Código PHP:
open(); // función que conecta a la base de datos 
$query="SELECT nombre, contenido from secciones WHERE id=1";
$result mysql_query($query);

echo 
"<table border = '1'> \n";
echo 
"<tr> \n";
echo 
"<td><b>Nombre</b></td> \n";
echo 
"<td><b>Contenido</b></td> \n";
echo 
"</tr> \n";
while (
$row mysql_fetch_row($result)){
echo 
"<tr> \n";
echo 
"<td>$row[0]</td> \n";
echo 
"<td>$row[1]</td> \n";
echo 
"</tr> \n";
}

echo 
"</table> \n"
  #2 (permalink)  
Antiguo 11/01/2004, 10:54
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Esto es porque los saltos de linea (enters) no son tomados como tal por los navegadores que interpretan HTML.
Para resolver esto, debes aplicar la funcion nl2br() a la variable que muestras.
Tambien es recomendable aplicar antes otra funcion llamada htmlentities() para evitar posibles ataques al servidor.

Mira por estos lados:
http://ar.php.net/manual/es/function.htmlentities.php
http://ar.php.net/manual/es/function.nl2br.php


Un saludo.
  #3 (permalink)  
Antiguo 11/01/2004, 10:59
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Lo que te quiso decir Fran86

Lo que te quiso decir fran86 es que debes usar esa función (muy buena por cierto) que te da PHP. ¿Cómo?, pues fácil

Código PHP:
 open(); // función que conecta a la base de datos 
$query="SELECT nombre, contenido from secciones WHERE id=1";
$result mysql_query($query);

echo 
"<table border = '1'> \n";
echo 
"<tr> \n";
echo 
"<td><b>Nombre</b></td> \n";
echo 
"<td><b>Contenido</b></td> \n";
echo 
"</tr> \n";
while (
$row mysql_fetch_row($result)){
echo 
"<tr> \n";
echo 
"<td>".nl2br($row[0])."</td> \n";
echo 
"<td>".nl2br($row[1])."</td> \n";
echo 
"</tr> \n";
}

echo 
"</table> \n"
Cita:
Upsss Me equivoqué en un cosa, pero ya la corregí
Salu2
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 11/01/2004 a las 11:03
  #4 (permalink)  
Antiguo 11/01/2004, 11:08
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Reynier, no es exactamente asi, pues no puedes llamar a una funcion dentro de una cadena.
Lo correcto seria:
Código PHP:
echo "<td>".nl2br(htmlentities($row[0]))."</td> \n"
  #5 (permalink)  
Antiguo 11/01/2004, 11:18
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 0
Gracias fran86 no tenía ni idea de que existiera el htmlentities

Gracias ahora me muestra el resultado de la consulta con formato tal y como yo quería hacerlo

Saludos
  #6 (permalink)  
Antiguo 11/01/2004, 11:31
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Pero

Pos yo lo he hecho de esa forma que puse y me respeta los saltos de línea y los espacios y todo. POr qué? No sé

Salu2
__________________
Ing. Reynier Pérez Mira
  #7 (permalink)  
Antiguo 11/01/2004, 11:41
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 15 años, 4 meses
Puntos: 8
Como tu lo hiciste, luego de la correccion, funciona correctamente y soluciona lo de los saltos de linea. No tiene nada de malo.

El uso de htmlentities() es solo una recomendacion que le hice.
  #8 (permalink)  
Antiguo 11/01/2004, 14:12
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 0
Fran86 Ahora he modificado el código para hacerla funcionar con el htmlentities() pero no me funciona ya que me muestra los caracteres del html o sea por ejemplo <b>Producto </b> en lugar de aparecer en negrita ¿? pego el código a ver si veis el error lo he repasado varias veces pero no lo detecto.

Código PHP:
open();
$query="SELECT nombre, contenido from secciones WHERE id=1";
$result mysql_query($query);

echo 
"<table border = '20' cellspacing='15' bordercolor= '#000000'> \n";

while (
$row mysql_fetch_row($result)){
echo 
"<tr> \n";
echo 
"<td>......</td> \n";
echo 
"<td>".nl2br(htmlentities($row[0]))."</td> \n";
echo 
"</tr> \n";
echo 
"<tr> \n";
echo 
"<td>......</td> \n";
echo 
"<td>".nl2br(htmlentities($row[1]))."</td> \n";
echo 
"</tr> \n";
}

echo 
"</table> \n"
  #9 (permalink)  
Antiguo 11/01/2004, 14:38
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 14 años, 10 meses
Puntos: 1
cambialo todo por esto haber si te funciona

Código PHP:
open();
$result = @mysql_query ("SELECT nombre, contenido FROM secciones WHERE id=1");
  if (!
$result) {
      echo(
"<p>Error al seleccionar: " mysql_error() . "</p>");
      exit();
    }
    
    while (
$row mysql_fetch_array($result))
        {
    
$nombre nl2br(htmlspecialchars($row["nombre"]));
    
$contenido nl2br(htmlspecialchars($row["contenido"]));
    
echo 
"<table border = '20' cellspacing='15' bordercolor= '#000000'> \n";
echo 
"<tr> \n";
echo 
"<td>......</td> \n";
echo 
"<td>$nombre</td> \n";
echo 
"</tr> \n";
echo 
"<tr> \n";
echo 
"<td>......</td> \n";
echo 
"<td>$contenido</td> \n";
echo 
"</tr> \n";
}

echo 
"</table> \n"
suerte
  #10 (permalink)  
Antiguo 11/01/2004, 14:51
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 0
Gracias Macabro lo he probado pero me sigue sin funcionar, es decir me muesta todas las etiquetas html como por ejemplo: <h3> </h3>
OJO La única manera en que me funciona correctamente es con nl2br pero me han comentado que por seguridad es mejor usar el htmlentities junto con el nl2br, bueno a ver que os parece

Saludos
  #11 (permalink)  
Antiguo 11/01/2004, 15:16
Avatar de macabro  
Fecha de Ingreso: enero-2003
Ubicación: venus >> ((_\
Mensajes: 254
Antigüedad: 14 años, 10 meses
Puntos: 1
al momento de insertar has lo siguiente
Código PHP:

<input type='text' name='contenido'>

$contenido strip_tags($contenido);

//y agregas a tu base de datos 
$sql "INSERT INTO tu_tabla (contenido)values($contenido)"bla bla bla...... 
bueno es todo por ahora nos vemox al rrato ahora me voy a ver a las chivas
suerte
  #12 (permalink)  
Antiguo 11/01/2004, 15:33
Avatar de neofito  
Fecha de Ingreso: noviembre-2003
Mensajes: 138
Antigüedad: 14 años, 1 mes
Puntos: 0
Arreglado, gracias
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 13:32.