Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

felipebmfaria

Exibir texto igual ao que está no banco

Recommended Posts

Boa tarde,

 

estou com problemas na hora de exibir um texto que estah salvo no banco de dados: faltam os parágrafos.

 

sendo que no banco contem os paragrafos.

 

exemplo:

 

No banco tá assim:

Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira.
  Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira.

Mas tá exibindo assim:

Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feiraHoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feiraHoje é quinta-feira.
Hoje é quinta-feira Hoje é quinta-feira Hoje é quinta-feira.

vou postar o codigo de exibicao:

 

<div id="titulo" class="style6">
  <?php 
$busca=mysql_query("SELECT * FROM dicas ORDER BY id DESC LIMIT 0,1");
if(!mysql_num_rows($busca)){ // se não tiver, ele imprime um erro.
echo 'Nenhum dado cadastrado na base de dados';
}else{
while($ver=mysql_fetch_row($busca)){
$id=$ver[0];
echo "<strong>".$ver[1]."</strong><br>";
echo '<br>';
$post = nl2br($ver[2]); // aqui é o texto, já está com nl2br 
echo $post;
}}?>
</div>

nao estou definindo nada como align="center"...

 

alguem pode me ajudar?

 

vlw.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Felipe,

 

Tente assim meu brother:

 

$post = $ver[2]; // aqui é o texto, já está com nl2br 
 echo nl2br($post);//tenta assim

Não costumo usar o nl2br() sobre um array. Até não sei se existe alguma incompatibilidade.

 

Bom tenta ai senão observe como está cadastrado no banco de dados... ou seja será que realmente existem estas quebras de linha no banco?

 

 

Qualquer coisa posta aí!!!

 

 

ABC

Compartilhar este post


Link para o post
Compartilhar em outros sites

Caro Felipe,

 

Tente assim meu brother:

 

$post = $ver[2]; // aqui é o texto, já está com nl2br 
 echo nl2br($post);//tenta assim

Não costumo usar o nl2br() sobre um array. Até não sei se existe alguma incompatibilidade.

 

Bom tenta ai senão observe como está cadastrado no banco de dados... ou seja será que realmente existem estas quebras de linha no banco?

 

 

Qualquer coisa posta aí!!!

 

 

ABC

Gasparzinho,

fiz o que falou, mas nao deu, continua sem exibir paragrafos... no banco está com paragrafos...

será alguma coisa de collation??? Nao entendo mt disso(collation, iso)...

 

grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Acrescente as linhas em vemelho.

 

...

echo "<p style=\"text-indent:40px\">";

echo $post;

echo "</p>";

...

ps.: isto é apenas um exemplo de como pode proceder para resolver o problema, você vai ter que fazer outras linhas de comando para solucionar o problema para todas as situações ou usar de outro código CSS.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Isso é a marcação HTML cara...

o parágrafo <p> não tem identação na maioria dos browsers... coloca isso via CSS.

Exatamente como está o código no BD? está indo com tags HTML?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Inseri as linhas que o Prog indicou... o primeiro paragrafo ficou perfeito, porem os outros paragrafos continuam sem aparecer...

 

beleza, compreendi que eh um problema de marcacao HTML, soh nao sei bem como configurar isso via CSS...

 

vou postar a minha div e o css dela:

 

#titulo {

position:absolute;

width:346px;

height:303px;

z-index:42;

left: 193px;

top: 382px;

}

 

.style6 {

font-size: 11px;

font-family: Arial, Helvetica, sans-serif;

color: #006699;

}

 

<div id="titulo" class="style6">

<?php

$busca=mysql_query("SELECT * FROM dicas ORDER BY id DESC LIMIT 0,1");

if(!mysql_num_rows($busca)){

echo 'Nenhum dado cadastrado na base de dados';

}else{

while($ver=mysql_fetch_row($busca)){

$id=$ver[0];

echo "<strong>".$ver[1]."</strong><br>";

echo '<br>';

$post = ($ver[2]);

echo "<p style=\"text-indent:40px\">"; // linha adicionada por orientacao do Prog

echo nl2br($post);

echo "</p>"; // linha adicionada por orientacao do Prog

}}?>

</div>

 

 

Como configurar o CSS????

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara, nem precisa fazer nada de

 

echo "<p style=\"text-indent:40px\">"; // linha adicionada por orientacao do Prog

nem de CSS.

 

tente na hora de gravar no banco já enviar com a funcao nl2br. Ex.:

 

$var = nl2br($_POST['texto']);

Compartilhar este post


Link para o post
Compartilhar em outros sites

gravei no banco com a funcao nl2br: produziu o mesmo efeito das linhas indicadas pelo Prog, ou seja, os outros paragrafos nao foram exibidos, apenas o primeiro... alem disso foram inseridas quebras de linha(/br) entre os paragrafos...

 

quanto aos collations estou usando da seguinte forma:

 

Em minhas paginas HTML estou usando

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

Quando faço algum insert ou update no banco(cadastrar.php por exemplo), nao to especificando nada... é só <? code ?>

 

Estou definindo o banco com collation utf8_unicode_ci

E nas tabelas especifico com collation latin1_general_ci

 

este é o padrão?

 

Será que o problema pode estar por aí?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

é, outra coisa q você pode fazer eh alterar o charset da página que esta gravando no banco, de utf8 para iso ou vice versa. É mais uma alternativa.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Observei que o cadastro no banco acontece normalmente. O problema esta realmente na exibicao: o primeiro paragrafo eh exibido normalmente, mas a partir do segundo, o texto nao fica identado(como esta no banco)...

 

por que isso acontece, o 1º paragrafo identa, a partir do segundo, nao???

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você ta inserindo no banco com nl2br e puxando dele com a mesma funcao... nao era pra dar esse erro. talvez pode ser algum texto que você copiou bugado.. tente escrever normalmente no word por exemplo e depois colar lá. Como está seu textarea? algum plugin?

Compartilhar este post


Link para o post
Compartilhar em outros sites

se você ta inserindo no banco com nl2br e puxando dele com a mesma funcao... nao era pra dar esse erro. talvez pode ser algum texto que você copiou bugado.. tente escrever normalmente no word por exemplo e depois colar lá. Como está seu textarea? algum plugin?

 

Nenhum Plugin em meu textarea... tudo desenvolvido na mao e normalmente...

tentei escrever varias vezes o texto diretamente no banco e atraves do form, o resultado continua o mesmo...

 

Li em algum lugar que Browsers nao interpretam todos os paragrafos de um texto vindo do banco... jah ouviu falar nisso? Sera por isso que esta "paragrafando" apenas o primeiro paragrafo, e nao todos?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema esta justamente aí. O código gravado no banco de dados fica assim:

Texto\ntexto\ntexto\ntexto

 

Com a função nl2br fica assim:

Texto<br />texto<br />texto<br />texto

 

Você tem que converter as quebras de linhas em paragrafos, desta forma todo o seu texto será bem formatado, tente assim:

echo "<p style=\"text-indent:40px\">";
echo str_replace('\n', '</p><p style="text-indent:40px">', $post);
echo "</p>";

Outra forma, mais pratica:

echo "<pre>$post</pre>";

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema esta justamente aí. O código gravado no banco de dados fica assim:

Texto\ntexto\ntexto\ntexto

 

Com a função nl2br fica assim:

Texto<br />texto<br />texto<br />texto

 

Você tem que converter as quebras de linhas em paragrafos, desta forma todo o seu texto será bem formatado, tente assim:

echo "<p style=\"text-indent:40px\">";
echo str_replace('\n', '</p><p style="text-indent:40px">', $post);
echo "</p>";

Outra forma, mais pratica:

echo "<pre>$post</pre>";

Prog, fiz do jeito que disse, com o str_replace... continua na mesma, o segundo paragrafo nao é espaçado...

 

vou postar o texto para melhor visualização:

 

Texto original

Ao receber um bouquet de flores corte dois centímetros dos cabos na transversal, as flores devem ficar cerca de sete centímetros com os cabos submersos na água, trocando-a diariamente se possível adicionar conservante .
  Flores não gostam de ventos.
  Ao receber um arranjo mantenha em local arejado, evite locais de passagem de ventos, acrescente água na espuma floral diariamente, com esses cuidados seu arranjo vai durar muito mais.

Exibição do texto está assim:

Ao receber um bouquet de flores corte dois centímetros dos cabos na transversal, as flores devem ficar cerca de sete centímetros com os cabos submersos na água, trocando-a diariamente se possível adicionar conservante.
Flores não gostam de ventos.
Ao receber um arranjo mantenha em local arejado, evite locais de passagem de ventos, acrescente água na espuma floral diariamente, com esses cuidados seu arranjo vai durar muito mais.

Percebe que a 3º linha é um início de parágrafo, mas não tem o espaçamento que tem na 1º linha?

Na 4º linha acontece a mesma coisa...

 

Este comportamento é normal?

 

Grato.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Neste caso você precisa verificar como esta ficando o código HTML.

 

Dependendo do navegador utilizado, as formas para verificar o código HTML variam.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Que tal dá um str_replace nas quebras de linha adicionando um ou dois espaços no final?

 

echo str_replace('\n', '\n ', $post);

Note que no caso deixei o \n, ou seja, o script apenas trocou adicionando um espaço. Caso seu texto não esteja dentro de uma textarea você vai ter que trocar o segundo \n por <br>, transformando o texto em HTML.

 

Ficando assim:

 

echo str_replace('\n', '<br>  ', $post);

É uma solução talvez um pouco "porca" para alguns, mas creio que deva funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.