TinyMCE редактор и извеждане на резултата от MySQL

vinsbg

Registered
Първо да се извиня за заглавието, но не можах да реша точно как да кръстя темата.
Та използвам въпросния редактор и записвам текста в базата данни. Проблема е, че когато се записва в базата изглежда така

Код:
<p><strong>тест</strong></p>
<ol>
<li><strong>323232</strong></li>
<li><strong>тест</strong></li>
<li><strong>тест</strong></li>
<li><strong>тест,fs</strong></li>
<li><strong>тест</strong></li>
<li></li>
</ol>
Което е точно както съм го въвел в редактора. Искам обаче, когато го изкарвам на страницата да си излиза, както трябва.. т.е.
<ul> си е ul ... <li> li и т.н. <strong> да си е удебелен текст.. Сега резултата ми е това:
Код:
<p><strong>тест</strong></p> <ol> <li><strong>323232</strong></li> <li><strong>тест</strong></li> <li><strong>тест</strong></li> <li><strong>тест</strong></li> <li><strong>тест</strong></li> <li></li> </ol>
Това използвам за изкарване, но явно не е то..
Код:
'. htmlentities(stripslashes($row['post_text'])) .'

Ако махна htmlentities изкарва <strong>-а например, но не изкарва <ul>, <li> ...
 
Добре така изкарва само - bold и italic
булети примерно не ги изкарва.. а в базата са си запазени нормално, така:
Код:
<p><strong>Болд тест</strong></p>
<ul>
<li>Аз съм булет</li>
</ul>
<ol>
<li>Аз съм нъмбер лист</li>
</ol>
<p><em>Италик тест</em></p>

Когато го отворя в браузера само текста на болд си е болд и текста на италик си е изталик..
<ul>, <li>, <ol> и т.н. изкарва само текста между таговете...
 
raiden каза:
Активирал ли си plugin-ите за списъци (advlist, lists)?
Нищо допълнително не съм активирвал :idea: :shock:

Само това имам и съм сложил в хеда на страницата
Код:
<script src="//tinymce.cachefly.net/4.1/tinymce.min.js"></script>
<script>tinymce.init({selector:'textarea'});</script>

edit:
Добре намерих ги тия плъгини и ги активирах, но те са в сила само за формата, какви бутони да има по нея ... как да изглежда и т.н. .. мисля, че нямат общо с това как да извежда резултата от базата.
 
За да могат да се запишат трябва да са активирани. Проблема е, че трябва да имаш целия tinymce на хостинга, понеже плъгините са отделни файлове
 
raiden каза:
За да могат да се запишат трябва да са активирани. Проблема е, че трябва да имаш целия tinymce на хостинга, понеже плъгините са отделни файлове
Сложих го на хоста целия, но същата работа.. :(
 
Не знам какво си направил или какво точно искаш(не знам дали и другите са те разбрали), НО ето какво да направиш:

В този файл кадето искаш да имаш редактора сложи този код във скрипт тагове.
[js]tinymce.init({
selector: ".wysiwyg",
plugins: [
"advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste moxiemanager"
],
toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image"
});
[/js]

Сега на текстареата, на която искаш да се показва, сложи този клас: wysiwyg и трябва да е готово.
HTML:
form ... 
<textarea class='wysiwyg'></textarea>
end form ..

Когато извеждаш, за да е така както го виждаш, използвай функцията nl2br, както ти бях казал по-горе.
PHP:
echo nl2br($row['tvoqta_kolona_tam']);

И ще стане :)

:?:
 
Това имам в head-а на страницата където ми е формата
Код:
<script>
tinymce.init({
    selector: "textarea#text",
    theme: "modern",
    plugins: [
         "advlist autolink link image lists charmap print preview hr anchor pagebreak spellchecker",
         "searchreplace wordcount visualblocks visualchars code fullscreen insertdatetime media nonbreaking",
         "save table contextmenu directionality emoticons template paste textcolor"
   ],
   toolbar: "insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | l      ink image | print preview media fullpage | forecolor backcolor emoticons", 
   style_formats: [
        {title: 'Bold text', inline: 'b'},
        {title: 'Red text', inline: 'span', styles: {color: '#ff0000'}},
        {title: 'Red header', block: 'h1', styles: {color: '#ff0000'}},
        {title: 'Example 1', inline: 'span', classes: 'example1'},
        {title: 'Example 2', inline: 'span', classes: 'example2'},
        {title: 'Table styles'},
        {title: 'Table row 1', selector: 'tr', classes: 'tablerow1'}
    ]
 }); 
</script>
Текстареата ми
Код:
<textarea id="text" name="text" rows="15" cols="80" style="width: 80%"></textarea>
Това е където изкарвам резултата
Код:
<p>' . nl2br($row['post_text']) . '</p>
И отново само болд текст и италик излиза... Не знам вече, какво да правя :roll:
 
А какви фуннцкии използваш за филтрация ? Пробвай да ги махнеш и да видиш без никакви филтрации, ако пак не стане нз. :/
 
Говоря за филтрация, когато вкарваш в ДБ. И ако може да дадеш кода за вкарване и изкарване, може да е нещо малко, което не се вижда на пръв поглед :) :idea:
 
joTunkiq каза:
Говоря за филтрация, когато вкарваш в ДБ. И ако може да дадеш кода за вкарване и изкарване, може да е нещо малко, което не се вижда на пръв поглед :) :idea:
Това е кода за добавяне
Код:
if (isset($_POST['add'])) {

    $text = $_POST['text'];
    $title = $_POST['title'];
    $category = $_POST['category'];
    $author = "";
    $fileName = $_FILES['userfile']['name'];
    $tmpName = $_FILES['userfile']['tmp_name'];

// make a new image name
    $ext = substr(strrchr($fileName, "."), 1);
    // generate the random file name
    $randName = md5(rand() * time());

    // image name with extension
    $myFile = $randName . '.' . $ext;
    // save image path
    $path = "../../../images/posts/" . $myFile;

        $result = move_uploaded_file($tmpName, $path);

        if (!$result) {
            echo "Error uploading image file <br />";
            exit;
        } else {
            $db = new mysqli("localhost", "user", "pass", "dbname");

            if (mysqli_connect_errno()) {
                printf("Connect failed: %s<br/>", mysqli_connect_error());
            }
            mysqli_set_charset($db, "UTF8");

            $query = "INSERT INTO posts (post_text, image_name, post_image, post_title, category, post_date, post_author) VALUES (?, ?, ?, ?, ?, NOW(), ?)";
            $conn = $db->prepare($query);
            if ($conn == TRUE) {
                $conn->bind_param("ssssis",$text, $myFile, $path, $title, $category, $author);
                if (!$conn->execute()) {
                    echo 'error insert';
                } else {

                    header("Location: index.php");
                    exit;
                }
            } else {
                die("Error preparing Statement");
            }
        }
} else {
    echo 'error';
}
А така ги изкарвам
Код:
if(isset($_GET['post_id']) && is_numeric($_GET['post_id'])){
                    $post_id = $_GET['post_id'];
			
		$query = $pdo->query("SELECT * FROM posts WHERE post_id = $post_id");
                foreach ($query as $row) {
                        
                        echo '<div class="col-lg-8 col-md-8 col-sm-12 col-xs-12">
                                <div class="portfolio-slider-wrapper">
                                    <ul id="portfolio-slider">
                                    <h4>'.$row['post_title'].'</h4>
                                    <hr>
                                        <li><img src="images/posts/'.$row['image_name'].'" alt="" class="img-responsive"/> </li>
                                    </ul>
                                </div>
                            <div class="blog-desc">
                                
                                <ul class="post-meta-links list-inline">
                                    <li><a href="#"> <span><i class="fa fa-user"></i></span>'.$row['post_author'].'</a></li>
                                    <li><a href="#"><span> <i class="fa fa-calendar"></i></span>'.$row['post_date'].'</a></li>                                    
                                </ul>
<p>' . nl2br($row['post_text']) . '</p>
                </div>
 
vinsbg каза:
joTunkiq каза:
Говоря за филтрация, когато вкарваш в ДБ. И ако може да дадеш кода за вкарване и изкарване, може да е нещо малко, което не се вижда на пръв поглед :) :idea:
Това е кода за добавяне
Код:
if (isset($_POST['add'])) {

    $text = $_POST['text'];
    $title = $_POST['title'];
    $category = $_POST['category'];
    $author = "";
    $fileName = $_FILES['userfile']['name'];
    $tmpName = $_FILES['userfile']['tmp_name'];

// make a new image name
    $ext = substr(strrchr($fileName, "."), 1);
    // generate the random file name
    $randName = md5(rand() * time());

    // image name with extension
    $myFile = $randName . '.' . $ext;
    // save image path
    $path = "../../../images/posts/" . $myFile;

        $result = move_uploaded_file($tmpName, $path);

        if (!$result) {
            echo "Error uploading image file <br />";
            exit;
        } else {
            $db = new mysqli("localhost", "user", "pass", "dbname");

            if (mysqli_connect_errno()) {
                printf("Connect failed: %s<br/>", mysqli_connect_error());
            }
            mysqli_set_charset($db, "UTF8");

            $query = "INSERT INTO posts (post_text, image_name, post_image, post_title, category, post_date, post_author) VALUES (?, ?, ?, ?, ?, NOW(), ?)";
            $conn = $db->prepare($query);
            if ($conn == TRUE) {
                $conn->bind_param("ssssis",$text, $myFile, $path, $title, $category, $author);
                if (!$conn->execute()) {
                    echo 'error insert';
                } else {

                    header("Location: index.php");
                    exit;
                }
            } else {
                die("Error preparing Statement");
            }
        }
} else {
    echo 'error';
}
А така ги изкарвам
Код:
if(isset($_GET['post_id']) && is_numeric($_GET['post_id'])){
                    $post_id = $_GET['post_id'];
			
		$query = $pdo->query("SELECT * FROM posts WHERE post_id = $post_id");
                foreach ($query as $row) {
                        
                        echo '<div class="col-lg-8 col-md-8 col-sm-12 col-xs-12">
                                <div class="portfolio-slider-wrapper">
                                    <ul id="portfolio-slider">
                                    <h4>'.$row['post_title'].'</h4>
                                    <hr>
                                        <li><img src="images/posts/'.$row['image_name'].'" alt="" class="img-responsive"/> </li>
                                    </ul>
                                </div>
                            <div class="blog-desc">
                                
                                <ul class="post-meta-links list-inline">
                                    <li><a href="#"> <span><i class="fa fa-user"></i></span>'.$row['post_author'].'</a></li>
                                    <li><a href="#"><span> <i class="fa fa-calendar"></i></span>'.$row['post_date'].'</a></li>                                    
                                </ul>
<p>' . nl2br($row['post_text']) . '</p>
                </div>
Защо полваш 2 вида кънекция за БД?
 
Защото тая форма принципно само аз ще я ползвам и друг няма да има достъп до нея и най-вече, защото не ми се занимава да я пренаписвам и нея, след като ми върши работа така..

Не ми се вярва това да е проблема..??
 
Може би вече си гор пробвал, но не видях никъде по темата.

PHP:
echo '<pre>';
var_dump($row['post_text']);
echo '</pre>';

Провери как изглежда изходът (source-a) - има ли ги там тея тагове?
След това - с inspect element на bold и italic текстовете, виждаш ли в конзолата <ul>-таговете?
По тези въпроси нищо не си писал :D
 
anonimen каза:
Може би вече си гор пробвал, но не видях никъде по темата.

PHP:
echo '<pre>';
var_dump($row['post_text']);
echo '</pre>';

Провери как изглежда изходът (source-a) - има ли ги там тея тагове?
След това - с inspect element на bold и italic текстовете, виждаш ли в конзолата <ul>-таговете?
По тези въпроси нищо не си писал :D

PHP:
echo '<pre>';
var_dump($row['post_text']);
echo '</pre>';
Връща само текст ... без тагове.
В сорса пък излизат
<p><ul><br />
<li>тест</li><br />
<li>тест</li><br />
<li>тест</li><br />
</ul><br />
<b>тест</b><br />
<i>тест</i> <pre> </pre></p>
 
joTunkiq каза:
Яяя пробвай ейтака, просто да съм сигурен :D
PHP:
echo htmlspecialchars_decode(nl2br($row['post_text']));
:idea:
Така ще стане. Преди малко работих по една система и използвах такъв код. Това е най-лесният и работещ вариант, който може да използва, а повярвай, аз пробвах всякакви начини.

Извинявам се за спама.
 
joTunkiq каза:
Яяя пробвай ейтака, просто да съм сигурен :D
PHP:
echo htmlspecialchars_decode(nl2br($row['post_text']));
:idea:
Отново в текста на страницата излиза само текст, като отново болда и италика си излизат, като болд и италик, но останалото не.

В сорс на view-source на страницата се вижда така
Код:
<p><ul><br />
<li>fsdfdsfdsf</li><br />
<li>fdsfdsf</li><br />
<li>fsdfdsfdsfsdf</li><br />
</ul><br />
<b>fsdfdsfdsfsdf</b><br />
<i>fsdfdsfdsfsdf</i></p>
 

Back
Горе