HTML-Quelltext in textarea laden

Moritz123

Erfahrenes Mitglied
Hallo!

ich habe derzeit ein kleines cms für private zwecke in der entwicklung.
Dabei wird der seiten-body, der dann auf der anzeigeseite dargestellt
werden soll, aus der datenbank gelesen.
Wenn ich nun einen Datensatz bearbeiten will, lade ich ihn in eine <textarea>. Das Problem ist nun folgendes: enthält der Datensatz selbst ein Formular (wie beispielsweise bei meiner Kontaktseite), dann
wird die textarea ziemlich "zerschossen". So wird beispielsweise der Quelltext bis zur im Datensatz auch vorkommenden </textarea> in der Bearbeitungstextarea , dann aber geschlossen und der rest ganz normal als html unterhalb der Textarea dargestellt. Das macht mir das bearbeiten des Datensatzes aber leider unmöglich.

Ich möchte nun wissen, ob ich den Datensatz so mit php "verwursten" kann, dass oben genanntes nicht auftritt?
Welche Möglichkeiten bestehen sonst?

Vielen Dank!


PS: sollte das nicht das richtige Forum sein, bitte Thema verschieben!
 
mein vorschlag wäre die < und > durch die passenden &xyz; ersetzen (hab die grad nich im kopf, sry)
und dann beim wieder in die datenbankschreiben rückgänig machen.
keine ahnung ob es wirklich so funzt, hab es noch nie gemacht.
 
Ich würde nicht mit den zugehörigen ASCII Codes arbeiten sondern mit beliebigen selbstkombinationen, z.B. -| statt < und |- statt >. Ganz einfach deshalb, weil wenn du z.B. ein & # 149 (spaces müssen sein, sonst macht das Board halt auch einen • draus) echost, dann steht das nicht da, sondern da wird dann wieder das entsprechende Zeichen draus.
 
ich habe ja nicht gesagt, dass er ascii codes verwenden soll
ich habe dabei eher daran gedacht:
< ersetzen durch &lt;
> ersetzen durch &gt;
 
ich würde das <form> und </form> tag einfach durch [form] und [/form] tags ersetzen. So umgehst du die Gefahr des zerschiessen und hast in deinem Textarea trotzdem noch einen übersichtlichen Code.
 
@Septacore: Das läuft aufs gleiche hinaus. Wenn du sowas echost, dann kommt das Originalzeichen dabei raus.

@tefla: Ja natürlich an das simpelste hatte ich natürlich wieder nicht gedacht, und fang hier an < durch -| zu ersetzen. Nee nee :p
 
Hallo!

erst mal vielen Dank für die zahlreichen Antworten.
Ich hab mir gedacht, ich "arbeite" sie einfach mal von oben nach unten ab.
Allerdings bin ich gleich beim ersten Vorschlag an einem MySQL-Fehler gescheitert. Der Code sieht jetzt folgendermaßen aus:
PHP:
$inhalt = str_replace("<","&lt;",$row->inhalt);
$inhalt = str_replace(">","&gt;",$inhalt);
echo "<textarea>$inhalt</textarea>";
Dann wird eingetragen und das Ganze wieder rückgängig gemacht.
Leider zeigt mir das Script nur an, dass der Updateprozess fehlgeschlagen ist.
Ich bräuchte daher eine Liste mit codes, die MySQL-Fehler anzeigen,
damit ich auf eine mögliche Fehlerquelle schlißen kann.

Vielen Dank !
 
Die Query sieht wie folgt aus:

PHP:
$aendern = "UPDATE content Set kategorie = '$kategorie', schluessel = '$schluessel', navon = '$navon', navname = '$navname', dataorder = '$dataorder', header = '$header', inhalt = '$inhalt2', footer = '$footer' WHERE id = '$id'";
if ($update = mysql_query($aendern)) $status = "<font color=green><b>OK</b></font>";
else $status = "<font color=red><b>Fehlgeschlagen</b></font>";

Und Fehlermeldung erhalte ich ja, wie gesagt, nur die, die von else ausgegeben wird.
 
versuch es mal so:

PHP:
$aendern = "UPDATE content Set kategorie = '$kategorie', schluessel = '$schluessel', navon = '$navon', navname = '$navname', dataorder = '$dataorder', header = '$header', inhalt = '$inhalt2', footer = '$footer' WHERE id = '$id'";
if(mysql_query($aendern)) $status = "<font color=green><b>OK</b></font>";
else $status = "<font color=red><b>Fehlgeschlagen</b></font>";

Ansonsten führe das mysql Query aus ohne die IF Schleife, dann bekommst du auch den MySQL Fehler Code. Lies dir mal etwas über Debugging durch!
 
Zurück