Ajuda com Input e Retorno de Consulta Mysql

22/07/2024

0

Montei um formulário para cadastrar notícias que vão aparecer no sistema.

O formulário, input no banco, pesquisa tudo certo, só empaquei numa coisa

A notícia tem parágrafos, quebra de linha entre parágrafos etc. No banco está gravando direitinho com as quebra na consulta volta certo, só que quando monto a pagina de retorno vem como se fosse só uma linha.

Como fazer ele respeitar como foi cadastrado no banco, com parágrafos, quebra de linhas etc?

Formulário de Imput:
<div class="form-group">
<label class="col-sm-12 control-label"><h4>Conteúdo da Notícia</h4></label>
<div class="col-sm-8">
<textarea class="form-control" rows="5" cols="4" id="conteudo" name="conteudo" placeholder="Digite o conteúdo da nova enquete"></textarea>
</div>


Consulta:

?php
$id=$_GET['id_noticia'];
require ("conexao.php");
$bd = mysql_select_db("db_postagens");
$sql = "SELECT * FROM tb_noticia where cd_noticia = '$id'";
$resultado = mysql_query($sql);
while($linha = mysql_fetch_array($resultado))
{
?>


Pegando o Resultado:


<section id="news" style="background-color: white; padding: 20px;">
<div class="row featurette">
<div class="col-md-7" id='<?php echo $linha['nm_noticia']?>'>
<h1 class="featurette-heading"> <?php echo $linha['nm_noticia']?></h1>
<hr>
<p class="lead"><p Align="justify"><?php echo $linha['ds_noticia'];?></p>
</div>
<div class="col-md-5 col-sm-12">
<?php echo "<img class='featurette-image img-fluid mx-auto' style='max-height:300px; min-width: 90%;' src='admNoticias/uploads/".$linha['nm_imagem_noticia']."'>";?>
</div>
</div>


Montando o retorno:


<section id="news" style="background-color: white; padding: 20px;">
<div class="row featurette">
<div class="col-md-7" id='<?php echo $linha['nm_noticia']?>'>
<h1 class="featurette-heading"> <?php echo $linha['nm_noticia']?></h1>
<hr>
<p class="lead"><p Align="justify"><?php echo $linha['ds_noticia'];?></p>
</div>
<div class="col-md-5 col-sm-12">
<?php echo "<img class='featurette-image img-fluid mx-auto' style='max-height:300px; min-width: 90%;' src='admNoticias/uploads/".$linha['nm_imagem_noticia']."'>";?>
</div>
</div>
</section>
Roberto

Roberto

Responder

Posts

22/07/2024

Arthur Heinrich

O texto em formato HTML desconsidera espaços e quebras de linha. Para que você possa quebrar a linha como no texto original, a quebra de linha precisa ser substituída pela tag "<br>", que introduz uma quebra de linha.

O texto:

"Linha 1
Linha2"

Aparece como "Linha 1 Linha 2"

Para corrigir, utilize "Linha 1<br>Linha 2".

Uma forma de fazer isso é pegando o texto na sua query:

SELECT * FROM tb_noticia where cd_noticia = '$id'

E fazer a substituição:

SELECT replace(mensagem, chr(10), '<br>') mensagem FROM tb_noticia where cd_noticia = '$id'

Dependendo de como a quebra foi introduzida, é possível que utilize a combinação #13+#10 (padrão Windows) ou apenas #10 (padrão Linux).

Você pode utilizar dois comandos replace. Um para substituir o padrão Windows para Linux e o final para introduzir a query:

SELECT replace(replace(mensagem,chr(13)+chr(10),chr(10)), chr(10), '<br>') mensagem FROM tb_noticia where cd_noticia = '$id'
Responder

23/07/2024

Roberto

O texto em formato HTML desconsidera espaços e quebras de linha. Para que você possa quebrar a linha como no texto original, a quebra de linha precisa ser substituída pela tag "<br>", que introduz uma quebra de linha.

O texto:

"Linha 1
Linha2"

Aparece como "Linha 1 Linha 2"

Para corrigir, utilize "Linha 1<br>Linha 2".

Uma forma de fazer isso é pegando o texto na sua query:

SELECT * FROM tb_noticia where cd_noticia = '$id'

E fazer a substituição:

SELECT replace(mensagem, chr(10), '<br>') mensagem FROM tb_noticia where cd_noticia = '$id'

Dependendo de como a quebra foi introduzida, é possível que utilize a combinação #13+#10 (padrão Windows) ou apenas #10 (padrão Linux).

Você pode utilizar dois comandos replace. Um para substituir o padrão Windows para Linux e o final para introduzir a query:

SELECT replace(replace(mensagem,chr(13)+chr(10),chr(10)), chr(10), '<br>') mensagem FROM tb_noticia where cd_noticia = '$id'


Obrigado pela ajuda, mas não funcionou, ela retorna com erro

SELECT REPLACE( ds_noticia, chr( 13 ) + chr( 10 ) , '<br>' ) mensagem
FROM tb_noticia
WHERE cd_noticia = '10'
LIMIT 0 , 30

Mensagens do MySQL : Documentação

#1305 - FUNCTION db_postagens.chr does not exist


Responder

23/07/2024

Roberto

O texto em formato HTML desconsidera espaços e quebras de linha. Para que você possa quebrar a linha como no texto original, a quebra de linha precisa ser substituída pela tag "<br>", que introduz uma quebra de linha.

O texto:

"Linha 1
Linha2"

Aparece como "Linha 1 Linha 2"

Para corrigir, utilize "Linha 1<br>Linha 2".

Uma forma de fazer isso é pegando o texto na sua query:

SELECT * FROM tb_noticia where cd_noticia = '$id'

E fazer a substituição:

SELECT replace(mensagem, chr(10), '<br>') mensagem FROM tb_noticia where cd_noticia = '$id'

Dependendo de como a quebra foi introduzida, é possível que utilize a combinação #13+#10 (padrão Windows) ou apenas #10 (padrão Linux).

Você pode utilizar dois comandos replace. Um para substituir o padrão Windows para Linux e o final para introduzir a query:

SELECT replace(replace(mensagem,chr(13)+chr(10),chr(10)), chr(10), '<br>') mensagem FROM tb_noticia where cd_noticia = '$id'


Obrigado pela ajuda, mas não funcionou, ela retorna com erro

SELECT REPLACE( ds_noticia, chr( 13 ) + chr( 10 ) , '<br>' ) mensagem
FROM tb_noticia
WHERE cd_noticia = '10'
LIMIT 0 , 30

Mensagens do MySQL : Documentação

#1305 - FUNCTION db_postagens.chr does not exist




Consegui resolver usando nl2br na montagem da tela

 <?php echo nl2br($linha['ds_noticia']); ?>


Obrigado
Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar