Mailinglisten-Archive |
Hallo, > ---------- > Von: Thomas Speck[SMTP:speck_(at)_zfw.uni-hildesheim.de] > > Ab und zu (ungefaehr alle 10 Eintraege in die Datenbank) schluckt > irgendetwas Daten. Das Problem tritt bei einer Kombination eine > (HTML) textarea mit einer (MySQL) text Spalte auf. Die Benutzer > des Formulars sollen im Anmeldeformular (in diesem Fall für die > Vortraege) eine Kurzfassung ihres Vortrags eingeben. > Dummerweise ist (wie erwaehnt bei ca. jedem 10. Eintrag) der > Eintrag in der Abstract Spalte unvollstaendig (nur 1 Zeile, beendet > mit einem "\" ). > .... > Das wird dann in einer PHP Datei nochmal angezeigt, damit die > Benutzer sicherstellen koennen, das ihre Angaben auch stimmen > und gleichzeitig als verstecktes Formularfeld an das naechste PHP- > Skript uebergeben: > <input type="hidden" name="abstract" value="<? echo $abstract; ?>"> > <? echo $abstract; ?> > ... > $result = mysql_query("insert into abstracts (..., abstract, ...) > values ( ... "', '".$abstract."', '" ...)", $link); > 2 Gravierende Probleme habt ihr hierbei: - Wenn im Abstract Anführungszeichen stehen ("), dann funktioniert die Weitergabe über das versteckte Formularfeld nicht mehr, da ja hier das Anführungszeichen die Begrenzung ist. Schnelle Lösung: Die Daten einfach noch mal in einer Textarea anzeigen. Saubere Lösung: Vorher alle Anführungszeichen durch was anderes er- setzen, hinterher wieder zurück. - Wenn im Abstract Hochkommas (') stehen, dann funktioniert das Speichern in der Datenbank nicht, da hier das Hochkomma für das Ende des Feldes bei values (...., '$abstrat',... ) steht. Saubere und schnelle Lösung: vor speichern in DB : $abstract = addslashes($abstract) ### kann man sich # sparen, wenn magic quotes runtime auf on sind hinterher beim auslesen : $abstract = stripslashes($abstract) Viele Grüße, Mathias --- *** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql
php::bar PHP Wiki - Listenarchive