Save formatted text in Mysql DB

Asked

Viewed 2,592 times

3

I am developing a news system and need to save formatted text, with line break, images between a paragraph and another and bold/italic etc. It’s all working php posting, display and everything. Could someone show me how to save this way? If possible using Tinymce.

My Postage Code:

<body>
<?php
if(isset($_POST['enviar'])){
    $titulo = mysql_real_escape_string(trim(strip_tags($_POST['titulo'])));
    $postagem = mysql_real_escape_string(trim(strip_tags($_POST['postagem'])));

    $img = $_FILES['foto'];
    $name = $img['name'];
    $tmp = $img['tmp_name'];
    $size = $img['size'];
    $ext = end((explode('.', $name)));
    $pasta = 'imagens';
    $maxSize = 1024 * 1024 * 2;
    $permite = array('jpg','jpeg', 'png');

    if(empty($titulo) && empty($postagem) && empty($name)){
        echo '<script>alert("Por favor, preencha o formulário de postagem corretamente.");</script>';
    }else if(empty($titulo)){
        echo '<script>alert("Por favor, preencha o campo Título.");</script>';
    }else if(empty($postagem)){
        echo '<script>alert("Por favor, preencha o campo Postagem.");</script>';
    }else if(empty($name)){
        echo '<script>alert("Por favor, selecione uma imagem.");</script>';
    }else if(!in_array($ext, $permite)){
        echo '<script>alert("A extensão da imagem selecionada não é suportada.");</script>';
    }else if($maxSize < $size){
        echo '<script>alert("A imagem selecionada é grande demais.");</script>';
    }else{
        $name = uniqid().'.'.$ext;
        $sql = mysql_query("INSERT INTO postagem (titulo, postagem, imagem) VALUES ('$titulo', '$postagem', '$name')") or die(mysql_error());
        if($sql){
            $upload = move_uploaded_file($tmp, $pasta.'/'.$name);
            if($upload){
                echo '<script>alert("Postagem salva com sucesso!");</script>';
            }else{
                echo '<script>alert("A postagem não pôde ser salva corretamente.");</script>';
            }
        }else{
                echo '<script>alert("Desculpe, ocorreu um erro.");</script>';
            }
    }
}
?>
<div class="formulario">
    <div id="form_limites">
<form action="" method="post" enctype="multipart/form-data">
    <a class="textos">Título.:</a><br>
    <input type="text" id="titulo" name="titulo" maxlength="80"><br>
    <br><a class="textos">Conteúdo da postagem.:</a><br>
    <textarea type="text" id="postagem" name="postagem"></textarea><br>
    <br><a class="textos">Imagem.:</a><input type="file" id="foto" name="foto"><br>
    <input type="submit" id="enviar" name="enviar" value="Salvar postagem">
</form>
    </div>
</div>
</body>

Problem: My text simply does not return formatted when displaying on the site. It comes in a single row.

  • What’s your problem, anyway? What mistake are you getting? Why aren’t you getting it? Apparently it’s all right.

  • My text simply does not return formatted when displaying on the site. It comes in a single row.

  • Show me how it is being brought from the bank. I mean, how it appears to you. And, where are you displaying it? Can you show me how you do the SELECT in a post?

  • Yes, following my SELECT.: <?php $sql = mysql_query("SELECT * FROM posting ORDER BY data DESC LIMIT 3"); $account = mysql_num_rows($sql); if($account <= 0){ echo '<H2 class="strings">No posts found. </H2>'; }Else{ while($res = mysql_fetch_array($sql)){ ?>

1 answer

2


If the text formatted by Tinymce has html, remove the strip_tags of $postagem. This function removes all html tags so the text will be written to the database without any formatting.

change:

$postagem = mysql_real_escape_string(trim(strip_tags($_POST['postagem'])));

for:

$postagem = mysql_real_escape_string(trim($_POST['postagem']));

Browser other questions tagged

You are not signed in. Login or sign up in order to post.