Robert: CMS mit tiny_mce

Hallo,

falls jemand Erfahrungen mit tiny_mce hat, könnte er/sie mir vielleicht bei folgendem Problem helfen. Im Forums-Archiv habe ich geguckt, aber nichts zu meinem Problem gefunden (hoffentlich nichts übersehen).
Ich habe ein kleines CMS mit PHP gebastelt, was auch gut funktioniert. Inhalte einer Seite werden zum Bearbeiten aufgerufen, indem sie vorher aus einer mysql-Datenbank gelesen werden und dann in ein textarea-Feld gebracht werden.
In einer Variablen $anzeigen ist das, was jetzt editiert werden soll:

echo "<textarea name='content' cols='90' rows='12'>";
echo "$anzeigen";
echo "</textarea>";

So weit, so gut.
Jetzt wollte ich gerne mit Hilfe von tiny_mce Formatierungsmöglichkeiten für den Text anbieten. tiny_mce ist durch die nötigen Javascript-Zeilen oben in die Datei eingebunden, die Symbole für fett, kursiv usw erscheinen auch schön beim Textfeld, aber der Text, der in $anzeigen steckt, wird nicht mehr angezeigt.
(ich hoffe, den Themenbereich richtig gewählt zu haben, denn tiny_mce ist natürlich Javascript).
Wenn jemand Rat weiß, wäre ich sehr dankbar.
Gruß
Robert

  1. Hi,

    aber der Text, der in $anzeigen steckt, wird nicht mehr angezeigt.
    (ich hoffe, den Themenbereich richtig gewählt zu haben, denn tiny_mce ist natürlich Javascript).

    Ich vermute mal, das dein Text irgendwo Quotes oder SInglequotes enthält, und dadurch das HTML nicht mehr stimmt, wäre sinnvoll zu wissen, was du im Fehlerfall als $anzeigen ausgibst.

    PS: Themenbereich geändert, da ich den Fehler im HTML vermute

    1. Hallo,

      zum testen habe ich jetzt mal in die Variable vorher nur ein Wort eingegeben:

      $anzeigen="test";

      um es dann im textarea-Feld anzeigen zu lassen. Geht auch nicht, müsste also an etwas anderem liegen.

      Vielleicht weiß jemand noch etwas? Jedenfalls schon mal danke!
      Robert

      1. Wie sieht denn der Seitenquelltext aus?

        1. Wie sieht denn der Seitenquelltext aus?

          Hi David Aurelio,

          oben im Kopf ist tiny_mce eingebunden:

          <script language="javascript" type="text/javascript" src="jscripts/tiny_mce/tiny_mce.js"></script>
          <script language="javascript" type="text/javascript">
          tinyMCE.init({
                mode : "textareas"

          });
          </script>

          Dann, nach Legitimationsprüfung zunächst das Lesen der Datenbankinhalte:

          if (isset ($bearbeiten) && ($bearbeiten) !=""){//Beginn des if-Bearbeiten
          echo "<h1 class=lang align='center'>Daten bearbeiten</h1>";

          $sql=("select inhalt, linkname,ueb2,inhalt2,ueb3,inhalt3 from seiten2 where id='$bearbeiten'");

          $ergibt=mysql_query($sql);
          $row=mysql_fetch_assoc($ergibt);
          $linkname1=$row[linkname];
          $anzeigen=$row[inhalt];
          $anzeigen2=$row[ueb2];
          $anzeigen3=$row[inhalt2];
          $anzeigen4=$row[ueb3];
          $anzeigen5=$row[inhalt3];
          ...
          schließlich der Teil, in dem es um das Füllen und Aktualisieren der Textareas geht:

          echo "<form enctype='multipart/form-data' action='update_seiten.php' method='post' >";
          echo "<span class=unterlegt2>Bild oben einfügen</span><input type='File' class=knopf name='pictures[]'>";
          // der erste Textbereich wird angezeigt
          echo "<textarea name='content' cols='90' rows='12'>";
          echo "$anzeigen";
          echo "</textarea>";

          // Jetzt kommt die Zwischenüberschrift für den zweiten Textbereich
          echo "<span class=unterlegt>Zwischenüberschrift&nbsp;</span><input type='text' name='ueb2' value='$anzeigen2'>";
          // es folgt der Text des zweiten Textbereichs
          echo "<textarea name='content2' cols='90' rows='12'>";
          echo "$anzeigen3";
          echo "</textarea>";
          echo "Bild </span><span class=unterlegt>links</span><span class=unterlegt2> einfügen</span><br><input type='File' class=knopf name='pictures[]'>  <span class=unterlegt2>Bild </span><span class=unterlegt>rechts</span><span class=unterlegt2> einfügen</span><br><input type='File' class=knopf  name='pictures[]'>";

          // Jetzt kommt die Zwischenüberschrift für den dritten Textbereich
          echo "<span class=unterlegt>Zwischenüberschrift&nbsp;</span><input type='text' name='ueb3' value='$anzeigen4'>";
          // es folgt der Text des dritten Textbereichs
          echo "<textarea name='content3' cols='90' rows='12'>";

          echo "$anzeigen5";
          echo "</textarea>";
          echo "<span class=unterlegt2>Bild </span><span class=unterlegt>links</span><span class=unterlegt2> einfügen</span><br><input type='File' class=knopf name='pictures[]'>  </td> <td align=right><span class=unterlegt2>Bild </span><span class=unterlegt>rechts</span><span class=unterlegt2> einfügen</span><br><input type='File' class=knopf name='pictures[]'>";
          echo "<input type='hidden' name='zahl' value='$bearbeiten'></input>";
          echo "<input type='hidden' name='pass' value='$pass'></input>";
          echo "<input type='hidden' name='na' value='$na'></input>";

          echo "<input type='Submit' class=knopf2 name='Aufnehmen' value='Änderungen bestätigen'>";
          echo "</form>";

          Das war´s.
          Vielen Dank für die Mühe, das anzugucken; für Hilfe wäre ich sehr dankbar.
          Robert

          1. Hallo Robert,

            $ergibt=mysql_query($sql);
            $row=mysql_fetch_assoc($ergibt);
            $linkname1=$row[linkname];
            $anzeigen=$row[inhalt];
            $anzeigen2=$row[ueb2];
            $anzeigen3=$row[inhalt2];
            $anzeigen4=$row[ueb3];
            $anzeigen5=$row[inhalt3];

            Hast Du mal kontrolliert, was so im array $row steht? Das geht mit
            print_r($row);

            echo "<form enctype='multipart/form-data' action='update_seiten.php' method='post' >";
            echo "<span class=unterlegt2>Bild oben einfügen</span><input type='File' class=knopf name='pictures[]'>";
            // der erste Textbereich wird angezeigt
            echo "<textarea name='content' cols='90' rows='12'>";
            echo "$anzeigen";
            echo "</textarea>";

            Kontrolliere doch bitte mal den ausgegebenen HTML-Quelltext, ob irgendetwas in der textarea ausgegeben wurde. Dann ließe sich schon einmal feststellen, ob es sich um ein Problem mit tiny_mce oder mit Deinem PHP-Script handelt. Du kannst Auch einfach Javascript abschalten, und nachsehen, ob etwas in der Textarea steht; ich hatte auch schon mal Probeleme mit mehreren Instanzen von tiny_mce auf der selben Seite (mit Firefox unter Linux).

            Ich rate Dir, Dich mit Templates zu beschäftigen, um Deinen HTML- und PHP-Code zu trennen. Das hält beides wesentlich übersichtlicher.
            Ein populäres Template-System ist Smarty, ich verwende zur Zeit sehr gerne phpsavant, da es keine eigene Template-Sprache verwendet, sondern auf PHP-Befehlen basiert.

            schönen Gruß,
            David

            1. Hallo David,
              du schreibst:

              Kontrolliere doch bitte mal den ausgegebenen HTML-Quelltext, ob irgendetwas in der textarea ausgegeben wurde. Dann ließe sich schon einmal feststellen, ob es sich um ein Problem mit tiny_mce oder mit Deinem PHP-Script handelt. »»

              Das habe ich alles gemacht, bzw vorher, das heißt ohne tiny_mce, läuft alles einwandfrei. Das CMS ist schon im Einsatz für die Schule, für die ich vertretungsweise zur Zeit unterrichte, und alles läuft, wie gesagt, gut, nur wäre es jetzt schön, den Text auch formatieren zu können (von Userseite aus).
              Dass ich das Ganze nicht richtig professionell gemacht habe, weiß ich, aber nach meinem bisherigen Wissensstand kann ich es nicht besser, ich bin ja schon happy, es so weit hinbekommen zu haben. Ich weiß, dass ich mich mal mit Templates beschäftigen müsste, ich gucke mir gerne mal die Links an, die mir genannt hast.
              Also, am PHP-Code alleine liegt es nicht, weil er ohne tiny_mce funktioniert. Die Formatierung von Text, den ich neu in das textarea-Feld schreibe, geht auch, also wirken auch die Javascript-Befehle von tiny_mce.
              Vielleicht muss ich einfach das Ganze komplett anders machen, wenn ich mal sehr viel Zeit habe.
              Mein Anliegen war es einfach, ein so einfach zu verstehendes CMS zu machen, das meine Schulleiterin auf Anhieb versteht; auf eine Adminseite gehen, Name und Passwort eingeben, die zu ändernde Seite im Kontrollkästchen ankreuzen und dann den text zum Ändern in einem textarea-feld zu haben. So weit ist mir das, glaube ich, auch gelungen, aber (jetzt fange ich an, mich zu wiederholen).
              Danke, viele Grüße
              Robert

              1. Hallo Robert,
                wenn es ohne tiny_mce funktioniert, liegt es natürlich nicht an Deinem PHP-Code. Probiere es bitte mal mit verschiedenen Browsern aus.
                Außerdem solltest Du den Inhalt der textarea vorher mit der PHP-Funktion html_specialchars bearbeiten, damit keine spitzen Klammern und keine '&'-Zeichen, die keine Entität einleiten, mehr in der Textarea stehen.

                Du könntest auch mal versuchen, nur eine Textarea auf der Seite zu verwenden, wie gesagt, damit hatte ich auch schon Probleme.

                Als letztes könntest Du auch nur mal den ausgegebenen HTML-Quelltext der ersten Textarea (also von <textarea name="dingens"> bis </textarea>) hier ins Forum kopieren.

                schönen Gruß, David

                1. Hallo,

                  erst mal schönen Dank für die Vorschläge und die Hilfe. Ich habe mir jetzt erstmal vorgenommen, eine Art Testumgebung aufzubauen, eine Mini-Datenbank, die nur das Textarea-Feld mit einem Satz füllt, gucken, ob es ohne tiny_mce geht (sollte es natürlich), und dann tiny_mce dazupacken.
                  Wenn es nicht klappt, frage ich noch mal nach. Also, nochmals Danke,
                  Robert

              2. Hi,
                hast du die neueste Version von tiny_mce? Ich hatte vor ein paar Tagen das Problem, das meine Fensterdefinitionen nit mehr mit der neuen Version kompatibel waren.