Mantener espacios en blanco en un formulario

Tengo un formulario con un textarea donde se escribe un texto, si introduzco espacios en blanco al principio del texto, en la bbdd se insertan los espacios en blanco, pero luego a la hora de mostrar el texto se eliminan automáticamente esos espacios.
¿Cómo puedo mantener esos blancos?

1 respuesta

Respuesta
1
Cuando rellenas un formulario con varias líneas, al mostrar ese contenido no respeta los saltos de línea. Existe una función que permite cambiar los saltos de línea por <br>, que es la etiqueta de html para cambiar de línea. Te pongo un ejemplo:
<html>
<head>
</head>
<body>
<?php
if (isset($_POST['texto'])) {
echo "El texto es: " . nl2br($_POST['texto']);
} else {
echo "<form name='formu' method='POST'>";
echo "<textarea name='texto'></textarea>";
echo "<input type='submit'>";
echo "</form>";
}
?>
</body>
</html>
Este código de ejemplo primero muestra un formulario con el textarea y al pulsar el botón enviar se muestra el contenido del textarea respetando los saltos de línea. Como ves, si usas nl2br() te respeta los saltos de línea, pero sin usar esa función te pone todo seguido.
Entonces tienes que almacenar el texto del textarea en tu base de datos y tras recuperarlo, para mostrarlo tienes que pasarlo primero a través de la función nl2br.
Cierto, no respeta los espacios, solo los saltos de línea.
Para que te respete todo puedes usar la etiqueta html <pre>. Te pongo un código que he usado de prueba:
<?php
if ( !isset($_POST['texto']) ) {
echo "<form name='formulario' method='POST'> \n";
echo "<textarea name='texto'></textarea> <br>";
echo "<input type='submit' value='Enviar'>";
echo "</form> \n";
} else {
echo "<pre> ". $_POST['texto'] ."</pre>";
}
?>
Como ves, ahora no es necesario usar la función nl2br() y te respeta tanto espacios como saltos de línea.
Lo único que me queda por probar es almacenarlo en la base de datos y al recuperarlo comprobar que sigue funcionando bien. No veo motivo para que falle usando la base de datos.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas