Foros del Web » Programando para Internet » PHP »

Problema con tecla ENTER en php+MySQL

Estas en el tema de Problema con tecla ENTER en php+MySQL en el foro de PHP en Foros del Web. Buenas a todos. tengun un problema: inserto un campo observaciones en una base de datos, y ningun problema. el problema viene cuando inserto un ENTER ...
  #1 (permalink)  
Antiguo 15/02/2006, 12:44
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
Problema con tecla ENTER en php+MySQL

Buenas a todos. tengun un problema:

inserto un campo observaciones en una base de datos, y ningun problema. el problema viene cuando inserto un ENTER (intro del teclado). en la base de datos se guarda, pero a la hora de leer el resultado no me carga nada. he leido que hay que utilizar una funcion para que me lo interprete, pero no se cual es ni su funcionamiento.

a ver si alguien me puede ayudar.

salu2
  #2 (permalink)  
Antiguo 15/02/2006, 13:11
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
La funcion: nl2br($texto);
http://www.php.net/manual/es/function.nl2br.php
  #3 (permalink)  
Antiguo 15/02/2006, 13:23
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
gracias Claudiovega, te cuento lo que me pasa.

el tipo de campo en la bd es TEXT.

inserto en texto con los intros, y se inserta correctamente. te pongo el codigo que utilizo:

$prueba= nl2br($observaciones);

observaciones="<?=$prueba?>"

la idea es que tengo un loadVentana.php?id=12345

si el registro no contiene intro insertado, me da el resultado (lo tengo exportado como un xml para ver que funciona.)

pero en cambio, los registros que tienen intro, me da el siguiente error:

El carácter '<' no se puede usar en un valor de atributo. Error al procesar el recurso http://phpLoads/loaVentana.php...

y si le quito el observaciones, entonces me da el resultado correcto.

lo que hago es genera unas etiquetas xml para ver el resultado de la consulta on-line.

que hago mal?

salu2
  #4 (permalink)  
Antiguo 15/02/2006, 13:27
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Me parece que XML no te permite usar algunos caracteres como valores de atributo, no tiene nada que ver con los saltos de linea.
  #5 (permalink)  
Antiguo 15/02/2006, 14:04
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
entonces, con el xml no puedo tener un campo de texto con INTROS? no puedo hacerlo de ninguna manera?

salu2
  #6 (permalink)  
Antiguo 15/02/2006, 14:15
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
he comprobado claudiovega.

he obtenido la variable descripciones en un archivo php, y me muestra donde hay un intro un <br>.

el problema esta en el xml. no hay ninguna manera de que me reconozca esos caracteres?
  #7 (permalink)  
Antiguo 15/02/2006, 15:46
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Si es que eso es una regla de xml, entonces no podrás colocar nada. Ahora, puede ser que el tipo de dato que acepte el xml allí esté controlado por un DTD o hoja XSL y sea eso lo que no te permita escribir, en cuyo caso sólo tendrías que cambiar el DTD u hoja XSL.
  #8 (permalink)  
Antiguo 15/02/2006, 15:53
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
no entiendo lo que me dices claudiovega. que es lo que tengo que hacer?

salu2
  #9 (permalink)  
Antiguo 15/02/2006, 16:05
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Podrías colocar el ejemplo completo para probarlo?
  #10 (permalink)  
Antiguo 15/02/2006, 16:09
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
claro, el problema es que obtengo el resultado de una bd. no podras probarlo. puedo ponerte el xml

echo "<?xml version='1.0' encoding='iso-8859-1'?>";
echo "<?rss version='0.92'?>";
?>

<ivienda>
<insertado>
<?
if(mysql_num_rows($res)> 0) {
list($idvivienda,$zona,$tipo,$m2,$precio,$ptas,$ha b,$hab2,$comedor,$cocina,$terraza,$bano,$aseo,$obs ervaciones,$comunidad,$antiguedad,$ascensor,$foto1 ,$foto2, $foto3, $inmobiliaria, $poblacion) = mysql_fetch_array($res);
$prueba= nl2br($observaciones);

$inmoQuery = mysql_query("SELECT * FROM Inmobiliarias inner join poblaciones on (ID_POBLACION = poblaciones.ID) WHERE Inmobiliarias.id = '$inmobiliaria'") or die(mysql_error());
if (mysql_num_rows($inmoQuery) > 0)
{
$userArray = mysql_fetch_array($inmoQuery);
$totalInmuebles = mysql_query("SELECT id,poblacion FROM poblaciones WHERE id=$poblacion") or die(mysql_error());
$total = mysql_fetch_array($totalInmuebles);
?>
<promocion idvivienda="<?=$idvivienda?>" zona="<?=$zona?>" tipo="<?=$tipo?>" m2="<?=$m2?>" precio="<? echo number_format($precio,0, '','.');?>" ptas="<? echo number_format($ptas,0, '','.');?>" hab="<?=$hab?>" hab2="<?=$hab2?>" comedor="<?=$comedor?>" cocina="<?=$cocina?>" terraza="<?=$terraza?>" bano="<?=$bano?>" aseo="<?=$aseo?>" observaciones="<?=$prueba?>" antiguedad="<?=$antiguedad?>" comunidad="<?=$comunidad?>" ascensor="<?=$ascensor?>" foto1="<?=$foto1?>" foto2="<?=$foto2?>" foto3="<?=$foto3?>" poblacion="<?=$total["poblacion"]?>" nombreInmo="<?=$userArray['NOMBRE']?>" direccionInmo="<?=$userArray['DIRECCION']?>" telefonoInmo="<?=$userArray['TELEFONO']?>" faxInmo="<?=$userArray['FAX']?>" mailInmo="<?=$userArray['EMAIL']?>" logoInmo="<?=$userArray['LOGO']?>" codigoInmo="<?=$userArray['CODIGO_OLD']?>"/>
<?
}}
?>
</insertado>
</vivienda>
</rss>

y el error es el siguiente:

No se puede mostrar la página XML
No se puede ver la entrada XML con la hoja de estilo XSL. Corrija el error y haga clic en el botón Actualizar, o inténtelo de nuevo más tarde.


--------------------------------------------------------------------------------

El carácter '<' no se puede usar en un valor de atributo. Error al procesar el recurso http://phpLoads/loadVentana.php...

<promocion idvivienda="VIL11-1111" zona="1" tipo="Piso" m2="1" precio="111.111" ptas="18.487.314" hab="1" hab2="1" com...

salu2
  #11 (permalink)  
Antiguo 15/02/2006, 16:24
Avatar de claudiovega  
Fecha de Ingreso: octubre-2003
Ubicación: Puerto Montt
Mensajes: 3.667
Antigüedad: 21 años, 1 mes
Puntos: 11
Yo te decía si tenias esa hoja de estilo XSL o el DTD. Alli se define que tipo de datos son aceptados por los atributos, si esa definicion no acepta lo que estas ingresando, deberás modificarla o simplemente renuncia a colocar ese dato.
  #12 (permalink)  
Antiguo 15/02/2006, 16:26
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
donde esta esa hoja de estilo XSL o DTD?

si estoy trabajando con un servidor web,podre modificar algo?
  #13 (permalink)  
Antiguo 15/02/2006, 17:24
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 20 años, 3 meses
Puntos: 102
Tu problema no es con PHP ni con MySQL sino con XML... el error mostrado es del navegador referente a tu estructura XML.

... el propio XML (como lenguaje) te impide utilizar ciertos carácteres como atributos y/o contenidos, es el caso de <, >, &, comillas (").

Lo que puedes probar por parte de PHP, es utilizar la función htmlspecialchars(), aunque con mis dudas de que sirva:
Código PHP:
$pruebahtmlspecialchars(nl2br($observaciones)); 
Te aconsejaria investigaras sobre XML porque... igual tu estructura, no es que este mal, pero podría estar mucho mejor; por el tipo de datos a utilizar te conviene crear canales independientes para esas "observaciones".

Código:
<vivienda>
    <observaciones>
       <![CDATA[
            El <html> que quieras
        ]]>
    </observaciones>
<!-- etc -->
El DTD es un archivo que determina las "reglas" para un XML particular; que tipo de atributos ha de tener, el tipo de datos, los canales, etc. Tú estás indicando que tu archivo es un RSS 0.92, por lo que deberías cumplir ciertas normas, deberías tener canales ya definidos (item, title, description, link...) cosa que no haces; no es un RSS!.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #14 (permalink)  
Antiguo 16/02/2006, 09:40
 
Fecha de Ingreso: enero-2002
Mensajes: 1.872
Antigüedad: 22 años, 10 meses
Puntos: 3
un placer saludarte jam.

pues he dado un paso más allá, aunque ahora no recibo el dato. he hecho lo siguiente:

function parseaSaltos($observaciones)
{
$texto1 = str_replace(chr(10),"",$observaciones);
$textofinal = str_replace(chr(13),"<br>",$texto1);

return $textofinal;
}

<observaciones><![CDATA[<?=parseaSaltos($observaciones)?>]]></observaciones>

esto me devuelve lo siguiente:

<observaciones>
- <![CDATA[ Piso seminuevo en plena naturaleza<br>Carp. ext. aluminio<br>Carp. int. Sapely<br>Persianas automaticas<br>Suelo de terrazo<br>Parking<br>Todo exterior<br>Muy soleado
]]>
</observaciones>

el problema es que el campo de texto del flash no me coge el valor de observaciones. puede ser que sea,pq no este dentro del tag donde estan las demas variables, como idvivienda, tipo.. etc?

ya que el nodo no me devuelve el valor de foto.

salu2
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:59.