Probleme mitZeichensatz von HTML-Textarea in MySQL-Datenbank

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
Feddie1200N

Probleme mitZeichensatz von HTML-Textarea in MySQL-Datenbank

Beitrag von Feddie1200N »

Hallo! Ich bin relativ neu, was HTML, CSS, PHP und MySQL angeht, und mitunter aus diesem Grund habe ich mal ein Forum aufgesetzt, also auch zum Lernen dieser Sprachen. Das Forum liegt auf www.fitness-ka.de - dort könnt ihr das Problem auch sehen - und immerhin habe ich schon ein paar Mods erfolgreich implementiert und ein paar Modifikationen vorgenommen.

Jetzt folgendes Problem:

Ich habe die index_body.html dergestalt verändert, dass je nach Zustand einer neuen Tabelle (TOPINFO) in der MySQL-Datenbank (STRATO) vor den einzelnen Foren ein Eintrag "Neueste Informationen" im Stil einer Forumskategorie angezeigt wird.

Die Datenbank hat folgende Struktur:
Nr. - Feld - Typ - Bedeutung
1 - logged - smallint(1) - User eingeloggt (0/1) -> das ist auch der eindeutige Schlüssel
2 - visible - smallint(1) - Topinfo wird angezeigt (0/1)
3 - message - mediumtext/blob (utf8_bin) - Text der Topinfo

Es sind genau 2 Datensätze enthalten, einer für angemeldete User (logged=1), einer für Gäste (logged=0), und ich kann wahlweise entscheiden, wer davon die Topinfo zu sehen bekommt und wer nicht, und welchen Text User und Gäste sehen.

Soweit so gut, wenn ich das in PHPmyAdmin eingebe funktioniert alles, also auch HTML-Tags, Zeilenumbrüche etc.

Jetzt habe ich für das ACP ein Modul geschrieben, in welchem ich mittels TEXTAREA die Texte als Admin direkt im Forum ändern kann, weil mir der Weg nach PHPmyAdmin zu umständlich ist. Das funktioniert auch prinzipiell, aber HTML-Formatierungs-Tags werden nicht übernommen. Bei der Eingabe direkt in PHPmyAdmin war das kein Problem.

Die Übergabe im ACP mache ich z.B. so:
<textarea name="T0" cols="35" rows="8" value="{T0}">{T0}</textarea>
<input type="checkbox" name="C0" value="1" {C0} /> {L_VISIBLE}

Und das Schreiben in die Datenbank so:
$message = $db->sql_escape(request_var('T' . $i, '', true));
$visible = ( isset($_POST["C$i"]) ) ? '1' :'0';
$sql = "UPDATE " . TOPINFO_TABLE . "
SET visible = '$visible', message = '$message'
WHERE logged = '$i'";
$db->sql_query($sql);

Wenn ich in die textarea z.B. folgendes eingebe <b>Fitness-KA.de</b>, steht in der Datenbank nachher folgendes: <b>fitness-ka.de!</b>

Das hat zur Folge, dass ich in der Ausgabe nachher die Tags in Klartext sehe und nicht umgesetzt.

Was mache ich falsch? Am liebsten würde ich dort sogar BBCode verwenden, aber irgendwie klappt das nicht, liegt wohl am CSS, aber davon habe ich noch weniger Ahnung...

Die Anzeige in der Index-Body sieht so aus:
<!-- IF TOPINFO_VISIBLE == 1 -->
<div class="forabg">
<div class="inner">
<span class="corners-top"><span></span></span>
<ul class="topiclist">
<li class="header"><dl><dt>{TOPINFO_TITLE}</dt></dl></li>
</ul>
<ul class="topiclist forums" style="padding: 5px">
<li>{TOPINFO_MESSAGE}</li>
</ul>
<span class="corners-bottom"><span></span></span>
</div>
</div>
<!-- ENDIF -->

Danke und Grüße,
Peer
Feddie1200N

Re: Probleme mitZeichensatz von HTML-Textarea in MySQL-Daten

Beitrag von Feddie1200N »

Konnte mir selber helfen, aber so ganz verstehe ich das nicht...

Ich habe die Ermittlung des Strings vor dem Schreiben in die Datenbank geändert.
vorher: $message = $db->sql_escape(request_var('T' . $i, '', true));
nachher: $message = ( isset($_POST["T$i"]) ) ? $_POST["T$i"] : '';

Das sql_escape ist wohl irgendwas phpbb-eigenes... muss ich nochmal suchen, wenn mir´s hier keiner erklären kann/will. Hatte das aus nem bestehenden Mod (Impressum) übernommen.
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“