Probleem Enkele én Dubbele quotes
Ik zit met een klein probleem. Ik heb data in een mysql database staan, welke ik wil bewerken. Dit kan door simpelweg de gegevens middels een query op te vragen, te strippen ( stripslashes ) en in variabelen te plaatsen.
Hierna wordt het formulier getoond met de data uit de database.
Echter... als ik in mijn database een tekst heb staan met dubbele quotes
en mijn formfield maakt gebruik van dubbele quotes, dan levert dit een probleem op:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// variable uit db
$var = "Een 'mooie' zomerdag";
// Het formfield
$field = "<input type='text' name='title' id='title' value=' '.$var.' ' />\n";
?>
// variable uit db
$var = "Een 'mooie' zomerdag";
// Het formfield
$field = "<input type='text' name='title' id='title' value=' '.$var.' ' />\n";
?>
Geeft als value in mijn formulier [Een] i.p.v. [Een 'mooie' zomerdag]
Dit geldt natuurlijk ook als ik dubbele quotes in mijn db heb staan en dubbele quotes in mijn formulier.
Is er een oplossing om ervoor te zorgen dat de value van mijn formulier altijd goed wordt weergegeven??
Gewijzigd op 01/01/1970 01:00:00 door Dennis Jongerden
Maar dat is je probleem niet volgens mij, samen met die functie hierboven kun je bijvoorbeeld htmlspecialchars() gebruiken.
edit:
Dit: Een 'mooie' zomerdag
wordt dan: Een 'mooie' zomerdag
edit:
wel eerst htmlspecialchars() doen!!!
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
FF simpel:
Als je in PHP text gaat echo-en, gebruik dan altijd single quotes, dat is beter dan dubbele quotes. Als je een variable wilt echo-en tussen die tekst doe je dat zo:
echo 'ik ben ' . $jaar . ' jaar oud';
echo "ik ben $jaar oud"; kan ook maar is minder goed.
Let op, als je een new-line of een tab wilt echo-en moet je die WEL tussen dubbele quotes zetten, dus "\n" en "\t".
wat ik hierboven zie is dat je html attributen single quotes geeft, deze moeten juist weer WEL met dubbele quotes geschreven worden.
Dus:
of
Je bedoelt dat ik de data nogmaals filter met htmlspecialchars.
Hierdoor worden quotes natuurlijk omgezet naar bijv. "
Dit resulteert dan echter weer een een niet fraaie weergave in mijn formulier veld..
In plaats van [ Een 'mooie' zomerdag ] wordt het dan [ Een "mooie" zomerdag ]
En dat is natuurlijk ook niet helemaal de bedoeling
Verder geen htmlspecialchars() gebruiken.
Net als hier op PHPhulp...
Ik denk dat ik de basis wel aardig begrijp, dat is het probleem niet, maar kijk eens naar onderstaande code voorbeelden:
en
De eerste gaat fout, de tweede gaat prima!
Is meer een probleem in de html..
link. Dat kan je een hoop werk schelen in PHP, maak er zelf dankbaar gebruik van.
Beetje offtopic: Wanneer je met PHP versie 5 aan het stoeien bent en je gebruikt PDO, dan kun je het quoten e.d. automatisch doen met prepare(). Zie hiervoor dus hij gaat er vanuit dat bij de volgende 'het gebeuren afgelopen is..
bij de tweede gaat hij er vanuit dat alles tussen "" staat en dan weergeeft hij de 'wel gewoon..
dit is meer logica dan een probleem denk ik :P
Bij je formfields dubbele quotes gebruiken en htmlspecialchars gebruiken voor de variabele die je in je input field wil weergeven:
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
// Je variabele
$name = htmlspecialchars(SafeStripSlashes($row['name']));
// je field
$field = "<input type=\"text\" name=\"name\" id=\"album_naam\" value=\" ". $name ."\">
?>
// Je variabele
$name = htmlspecialchars(SafeStripSlashes($row['name']));
// je field
$field = "<input type=\"text\" name=\"name\" id=\"album_naam\" value=\" ". $name ."\">
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis Jongerden
Er is 1 uitzondering: MySQL queries. Deze bevatten heel vaak enkele quotes. Daarom is het handiger juist die met dubbele quotes te omgeven.
Met dank aan alle reacties! Leuk, zo'n levendig forum!
Daarom gebruik ik nu PHP. Altijd wel iemand bereid om je even op de goede weg te helpen.
Mijn dank hiervoor!