szyneczka
29.04.2006, 10:25:06
Zrobiłam formularz dodawania danych do bazy. Dwa pola jedno to textopwy input, drugie textare. Jeśli jedno z pól zostanie wypełnione, a drugie nie ma pojawić się błąd, ale treść ma pozostać w tym drugim taka jaka była. (Podobnie jak przy wypełnianiu formularzy rejestracji jeśli pojawi się błąd pozostałe nadal pozostają wypełnione.
Problem polega na tym, że do bazy danych wszystkei treśći dostają się z uwzględnieniem takeigo filtrowania:
$dane = mysql_escape_string(htmlspecialchars($_POST["cos"]));
W momencie kiedy po ponownym odświeczreniu strony tekst wstawiany jest w taki sposób
<textarea>$dane</textarea> Wszystkie znaki ENTERU zamieniane są na \r jak się tego pozbyć?
mike
29.04.2006, 10:30:05
1. Przy wstawianiu do bazy używaj tylko
, mysql_escape_string(),
htmlspecialchars() jest tu niepotrzebne;
2. Przy wyjmowaniu z bazy filtruj za pomocą:
stripslashes();
3. Przy wyświetlaniu dopiero dodawaj
htmlspecialchars().
---Aby znaki nowej linii przełożyć na HTMLa skorzystaj z
nl2br().
szyneczka
29.04.2006, 10:38:15
No tak, ale w tym przypadku to na jedno wyjdzie. Postępuje się tylko w dwóch krokach.
Wtedy było dodanie do bazy mysql_escape_string() następnie po pobraniu stripslashes(); i przy wyświetlaniu htmlspecialchars(). Chodzi mi o końcowy efekt, a więc wyświetlanie. Tu masz trzy kroki, a u mnie jeden (bez stripslashes(); i to na razie jest nieosttne bo usuwa tylko \ z treści zmiennej).
W momencie kiedy wstawiam zmienną między <textarea>$zmienna</textarea> wszystko jest wyświetlane, ale kazdy ENTER jest zamieniany na \r
Te trzy kroki, o ktorych wspomniałaś... jak pisałam na jedno wyjdzie, bo jeśli chcę edytować jakiś tekst umieszczony w bazie danych muszę umiecić go w textarea i czy ja dodam do bazy tekst tak jak powinien byź wyświetlany czy dopiero po pobranu go przefiltruję, wyjdzie na jedno. Chyba, że się mylę?
nblr nic nie daje... :- /