So mache ich es …
Hallo Julia,
also an HTML sollte es nicht liegen, dass ein Text nach dem ’ nicht mehr dargestellt wird, es sei denn, Du verwendest im HTML-Tag eben dieses Zeichen (z.B. so: ). Also bei mir klappt das hier z.B. problemlos: .
Um bei der Kommunikation zwischen HTML-Formular und mySQL-Datenbank keine Schwierigkeiten zu bekommen, verwende ich die folgenden Ersetzungen:
**$arrQS** = array("\\", '"', "\r\n", "\n"); _//QuerySearch_
**$arrQR** = array("\\\\", '\"', '\n', '\n'); _//QueryReplace_
**$query** = 'UPDATE tabelle' .
' SET inhalt="' .<u>str_replace(<b>$arrQS</b>, <b>$arrQR</b>, <b>$FormularInhalt</b>)</u>. '"' .
' WHERE ID=1';
**$arrES** = array( '"', '', '&' ); _// EchoSearch_
**$arrER** = array('"', '\<', '\>', '&'); _// EchoReplace_
**echo**'' .<u>str_replace(<b>$arrES</b>, <b>$arrER</b>, <b>$DatenbankInhalt</b>)</u>. '';
**echo**'';
Die Definition der vier Arrays erfolgt natürlich global irgendwo und nicht direkt vor der Aktion.
Voraussetzung dafür, dass es funktioniert, ist natürlich, dass bei der SET-Formulierung die doppelten Anführungszeichen verwendet werden, weil sonst die maskierten Zeichen (z.B. \n für den Zeilenumbruch) nicht übersetzt werden.
Andersrum müssen auch für die HTML-Tags doppelte Anführungszeichen verwendet werden, da sonst das einfache (’) nicht darstellbar ist, für das es leider keine HTML-Umschreibung gibt (wie " für das doppelte).
Wenn das allerdings beachtet wird, hat man meines Erachtens keine Probleme mehr. Ich hatte sie jedenfalls nicht und konnte beliebige Zeichen über das Formular in die Datenbank schicken und auch zurückladen.
Statt es einfachen Hochkommas würde ich übrigens lieber das ´ verwenden. Das ist nicht nur korrekt in „Julia´s Something“ (das Hochkomma ist da - genau genommen - falsch), sondern es verhindert auch Dein Problem und sieht zudem besser aus.
Viele Grüße,
Kristian