Hilfe bei Anführungszeichen

heikomi

Erfahrenes Mitglied
Moin Moin,
Mein Problem sind die sonderzeichen " und ' in Eingabefelder. In der Datenbank werden die richtig geschrieben aber die Ausgabe funktioniert nicht.

Zum Beispiel der Sportplatz von Markkleeberg nennt sich Sportpark "Camillo Ugi".
Wenn ich mir den aus der DB anzeigen lassen möchte steht da nur Sportplatz.

Frage 1: Wie wird er in die DB geschrieben
Frage 2: Wie wird er aus der DB gelesen und
Frage 3: Wie kann ich den String "Camillo Ugi" in einer Suchfunktion finden?

Vielen Dank und ein guts Nächtle.
LG Heiko
 
Hi,
Wenn ich mir den aus der DB anzeigen lassen möchte steht da nur Sportplatz.
Wie sieht denn der Quelltext aus? Für die HTML-Ausgabe musst Du die Daten mit htmlspecialchars bearbeiten, um etwas in die Datenbank einzutragen oder zu suchen mit mysql_real_escape_string.

LG
 
Problemmatisch sind die " eigentlich nur in <input> HTML Elementen. Der Trick wie man die " in die Felder bekommt ist folgender:

Du Musst für Value= unbedingt die " anfürhungszeichen verwenden. Mit einzelnen geht es nicht so einfach. Und machst dann auf den Wert der dort angezeigt wird htmlentities() dadurch werden die " aus der Datenbank zu &quote; und er stellt sie richtig da. Sie werden dann auch wieder richtig an die Datenbank gesendet.

Innerhalb MySQL Querys werden die ' zu "Problemfällen" das man aber mit dem befehl mysql_real_escape_string() umgehen kann, der alle gefährlichen Strings die Datenbankquerys zerstören könnten escapt.
 
Hi,

in der DB gespeichert wird es so:
PHP:
$stadion = $_POST['stadion'];

aus der DB gelesen wird es so:
PHP:
$stadion = $row['stadion'];

in Value erscheint es so:
PHP:
echo "<td><input id=\"formular_eingabe\" name=\"stadion\" value=\"".htmlentities($stadion)."\"></td>\n";

Es wird so richtig dargestellt, nur wenn ich am DS etwas ändern muss, erscheint bei einer neuen ausgabe im Feld Stadion \"123\" was unschön ist, dies immer wieder zu entfernen. Was wenn im GB ein Eintrag editiert werden muss mit zig " :-(


LG Heiko
 
mysql_real_escape macht aus " die \" aber nur einmal, wenn es mehrfach passiert und be jedem speichern mehr werden, dann ist ggf. magic_quotes auf deinem server installiert das automatisch die anführungszeichen escapt. mit strip_slashes() an den post daten lässt sich das z.B. umkehren..
 
Hi Michael,
auf den schnelltest erscheint nun

Fatal error: Call to undefined function strip_slashes() in /include/teamverwaltung.php on line 165.

Ich habe die Zeile
PHP:
$stadion = $_POST['stadion'];

durch diese ersetzt:
PHP:
$stadion = strip_slashes($_POST['stadion']);

edit:
auch strpslashes($_POST['stadion']) bringt die Fehlermeldung

LG
 
Zuletzt bearbeitet:
[phpf]stripslashes[/phpf] ist im Standardfunktionsumfang von PHP und müsste deshab bei dir installiert sein, es sei denn, du benutzt PHP3 oder eine noch frühere Version.

Sicher dass du es richtig geschrieben hast?

Ansonsten wäre es hilfreich, wenn du uns sagen könntest, ob magic_quotes aktiviert ist oder nicht.
Entweder bei [phpf]phpinfo[/phpf] reinschauen oder mit [phpf]get_magic_quotes_gpc[/phpf] (1 für an, 0 für aus).
 
also laut phpinfo Serverversion:
jeweils Local als auch Master....

magic_quotes_gpc = on
magic_quotes_runtime = off
magic_quotes_sybase = off

Ja Felix ich hab es richtig geschrieben bzw. kopiert :-D

LG

Edit.
doch falsch kopiert- o weh o weh
das i war nicht dabei

Und nun funktioniert es auch *megafreu*
Danke euch und ein Frohes gesegnetes Weihnachtsfest ;)

LG
 
Zuletzt bearbeitet:
Serverversion sagt gar nichts aus, die Versionsnummer ist das Wichtige ;)

Ansonsten kannst du es auch selber machen...

PHP:
<?php
$str = addslashes('test me i\'m an evil string with backslashes!\ ');
echo $str;
echo '<br>';
$search = array('\"', "\\'", '\\\\');
$reps = array('"', '\'', '\\');
$str = str_replace($search, $reps, $str);
echo $str;
?>

/edit:
Dann doch bitte noch auf "Erledigt" klicken, danke ;)
 
Zuletzt bearbeitet:
Zurück