TinyMCE и PHP проблемы - PullRequest
       11

TinyMCE и PHP проблемы

2 голосов
/ 25 августа 2011

Хорошо, вчера я наконец-то заставил TinyMCE работать над своим сайтом.Я также скачал для него плагин, который предлагал подсветку кода, но плагин, кажется, вызывает некоторую «путаницу».

Как мы, кто его использовал, знаем, TinyMCE использует <textarea></textarea> для ввода данных пользователем.Ну, и плагин подсветки кода, который я скачал для него.До сих пор я никогда не использовал textarea, но похоже, что вы не можете вкладывать одно в другое.Если я добавляю пример кода в свой текст с помощью плагина, TinyMCE, кажется, думает, что статья заканчивается закрывающим тэгом для текстовой области, которую написал плагин, а не в нижней части статьи.Кто-нибудь может порекомендовать лучший плагин?

Что касается PHP, то я в недоумении.Вчера мой код работал мгновенно, но как только я попытался использовать его сегодня, время истекло.Все, что я пытался сделать, - это обновление MySQL для записи, которая была загружена в TinyMCE.Я знаю, что не mysql вызвал проблему, потому что я все еще могу войти в систему с phpmyadmin и работать над любой базой данных там.Я понятия не имею, с чего начать с поиска неисправностей, поэтому, если кто-то может предоставить руководство, это будет очень признательно.

Для справки, вот ошибка, которую я получаю, когда пытаюсь отправить свою форму, икод php позади него:

Warning: PDO::__construct() [pdo.--construct]: [2002] A connection attempt failed because the connected party did not (trying to connect via tcp://localhost:3306) in D:\xampp\htdocs\logansarchive\admin\articlework.php on line 16 Fatal error: Maximum execution time of 60 seconds exceeded in D:\xampp\htdocs\logansarchive\admin\articlework.php on line 0

Код динамически генерирует форму, основанную на том, какое действие было выбрано пользователем (создать новую статью или отредактировать существующую).

<?php
    switch($action) {
        case "Edit":
            $query = "SELECT * FROM Articles WHERE ArticleTitle = '".$target."'";
            $result = mysql_query($query) or die ("Error in query:<br />".$mysql_error());
            if (mysql_num_rows($result) > 0) {
                list($ArticleID, $Category, $ArticleDate, $ArticleTitle, $ArticleContent) = mysql_fetch_row($result);
                    $cat = $Category;
                    $title = $ArticleTitle;
                    $content = $ArticleContent;
            }

            $query = "SELECT CategoryName FROM Categories WHERE DeletedYN = 'No'";
            $result = mysql_query($query) or die ("Error in query:<br />".$mysql_error());

            echo "<form name=\"editarticle\" method=\"post\" action=\"articlework.php\">".
                "<table>".
                "<tr>".
                "<td>Article Title<br /><input type=\"text\" name=\"article_title\" value=\"".$title."\" style=\"width: 300px;\" /></td>".
                "<td>Category<br />".
                "<select name=\"article_cat\">".
                "<option selected value=\"".$cat."\">".$cat."</option>".
                "<option>----------------------</option>";
                if (mysql_num_rows($result) > 0) {
                    while($row = mysql_fetch_array($result)) {
                        echo "<option value=\"".$row['CategoryName']."\">".$row['CategoryName']."</option>";
                    }
                }
            echo "</td>". 
                "</tr>".
                "<tr>".
                "<td colspan=\"2\"><textarea id=\"article_content\" name=\"article_content\" rows=\"15\" cols=\"80\" style=\"width: 80%;\">".$content."</textarea>".
                "<tr>".
                "</table>".
                "<div class=\"RightAlign\">".
                "<input type=\"submit\" name=\"btnSubmit\" value=\"Update Article\" />".
                "<input type=\"hidden\" name=\"srctitle\" value=\"".$title."\" />".
                "<input type=\"hidden\" name=\"action\" value=\"".$action."\" /></div>".
                "</form>";
        break;
        case "New":
            echo "<form name=\"newarticle\" method=\"post\" action=\"articlework.php\">".
                "<table>".
                "<tr>".
                "<td>Article Title<br /><input type=\"text\" name=\"article_title\" style=\"width: 300px;\" /></td>".
                "<td>Category<br />".
                "<select name=\"article_cat\">";    

                $query = "SELECT CategoryName FROM Categories WHERE DeletedYN = 'No'";
                $result = mysql_query($query) or die ("Error in query:<br />".$mysql_error());
                if (mysql_num_rows($result) > 0) {
                    while($row = mysql_fetch_array($result)) {
                        echo "<option value=\"".$row['CategoryName']."\">".$row['CategoryName']."</option>";
                    }
                }
            echo "</td>".
                "</tr>".
                "<tr>".
                "<td colspan=\"2\"><textarea id=\"article_content\" name=\"article_content\" rows=\"15\" cols=\"80\" style=\"width: 80%;\"></textarea></td>".
                "</tr>".
                "</table>".
                "<div class=\"RightAlign\">".
                "<input type=\"submit\" name=\"btnSubmit\" value=\"Create Article\" />".
                "<input type=\"hidden\" name=\"action\" value=\"".$action."\" /></div>".
                "</form>";
        break;
    }
?>

Вот код, который выполняет работу в базе данных:

<?php
    $action = $_REQUEST["action"];
    $target = $_REQUEST["target"];
    $srctitle = $_POST["srctitle"];
    $title = $_POST["article_title"];
    $cat = $_POST["article_cat"];
    $content = $_POST["article_content"];

    // Set database server access variables:
    $host = "localhost";
    $user = "root";
    $pass = "root";
    $db = "logansarchive";

    // Open connection
    $dbh = new PDO('mysql:host='.$host.';dbname='.$db, $user, $pass);   

    $date = date('Y-m-d H:i:s');
    switch ($action) {
        case "Edit":
            $query = $dbh->prepare("UPDATE Articles ".
                "SET ArticleTitle = :title, Category = :cat, ArticleDate = :date, ArticleContent = :content ".
                "WHERE ArticleTitle = :srctitle");
            $query->bindParam(':title', $title);
            $query->bindParam(':cat', $cat);
            $query->bindParam(':date', $date);
            $query->bindParam(':content', $content);
            $query->bindParam(':srctitle', $srctitle);
            $query->execute();
        break;
        case "New":
            $query = $dbh->prepare("INSERT INTO Articles(Category, ArticleDate, ArticleTitle, ArticleContent) ".
                "VALUES(:cat, :date, :title, :content)");
            $query->bindParam(':cat', $cat);
            $query->bindParam(':date', $date);
            $query->bindParam(':title', $title);
            $query->bindParam(':content', $content);
            $query->execute();
        break;
        case "Delete":
            if ($target != "") {
                $query = $dbh->prepare("UPDATE Articles ".
                    "SET DeletedYN = :del ".
                    "WHERE ArticleTitle = :title");
                $query->bindValue(':del', "Yes");
                $query->bindParam(':title', $target);
                $query->execute();
            }
            else {
                header("Location: index.php?result=failed");
            }
        break;
    }

    header("Location: index.php?result=success");
?>

1 Ответ

0 голосов
/ 25 августа 2011

Нет, TinyMCE не использует <textarea></textarea> для пользовательского ввода. Tinymce инициализируется для html-элемента, который скрывается при запуске tinymce. Tinymce использует удобный iframe для редактирования контента и его оформления. В особых случаях содержимое редактора записывается обратно в прежний элемент html (во многих случаях текстовое поле). Tinymce имеет встроенную функцию очистки, которая будет очищать ваш контент в зависимости от ваших настроек tinymce. Я думаю, теги textarea будут очищены. Вам нужно будет добавить их в список valid_elements и, возможно, в список valid_children.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...