Probleem Enkele én Dubbele quotes

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Dennis Jongerden

Dennis Jongerden

26/03/2007 21:33:00
Quote Anchor link
Beste Allemaal,

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)
PHP script in nieuw venster Selecteer het PHP script
1
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";
?>

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
 
PHP hulp

PHP hulp

04/10/2024 08:35:06
 
Martijn B

Martijn B

26/03/2007 21:38:00
Quote Anchor link
Als je iets in de database stopt dan moet je dan escapen, dat doe je bijvoorbeeld met mysql_real_escape_string().

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 &#039;mooie&#039; zomerdag

edit:

wel eerst htmlspecialchars() doen!!!
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Baarr

Baarr

26/03/2007 21:40:00
Quote Anchor link
Ik ga echt een keer een tutorial schrijven over het gebruik van quootjes.

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:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo '<input type="text" name="title" id="title" value="' . $var .  '">';


of

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="text" name="title" id="title" value="<?php echo $var; ?>">
 
Dennis Jongerden

Dennis Jongerden

26/03/2007 21:41:00
Quote Anchor link
Hoi Martijn,

Je bedoelt dat ik de data nogmaals filter met htmlspecialchars.
Hierdoor worden quotes natuurlijk omgezet naar bijv. &quot;

Dit resulteert dan echter weer een een niet fraaie weergave in mijn formulier veld..

In plaats van [ Een 'mooie' zomerdag ] wordt het dan [ Een &quot;mooie&quot; zomerdag ]

En dat is natuurlijk ook niet helemaal de bedoeling
 
PHP Newbie

PHP Newbie

26/03/2007 21:43:00
Quote Anchor link
Bij inserten in de database mysql_real_escape_string() gebruiken.

Verder geen htmlspecialchars() gebruiken.
 
Martijn B

Martijn B

26/03/2007 21:44:00
Quote Anchor link
Nee, je browser maakt van &quot; gewoon '.

Net als hier op PHPhulp...
 
Martijn B

Martijn B

26/03/2007 21:45:00
Quote Anchor link
@PHP Newbie:

Waarom niet??

edit:

Oeps :D
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Dennis Jongerden

Dennis Jongerden

26/03/2007 21:46:00
Quote Anchor link
Er zijn schijnbaar een hoop mensen online! Dat is mooi!

Ik denk dat ik de basis wel aardig begrijp, dat is het probleem niet, maar kijk eens naar onderstaande code voorbeelden:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<input type='text' name='title' id='title' value='Foto's'>
?>


en

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
<input type="text" name="title" id="title" value="Foto's">
?>


De eerste gaat fout, de tweede gaat prima!
Is meer een probleem in de html..
 
Martijn B

Martijn B

26/03/2007 21:48:00
Quote Anchor link
<input type="text" name="title" id="title" value="Foto&#039;s">

Zo zou het ook moeten lukken...
Gewijzigd op 01/01/1970 01:00:00 door Martijn B
 
Frank -

Frank -

26/03/2007 21:50:00
Quote Anchor link
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 link. Dat kan je een hoop werk schelen in PHP, maak er zelf dankbaar gebruik van.
 
Nicoow Unknown

Nicoow Unknown

26/03/2007 21:51:00
Quote Anchor link
jah maar bij de eerste begin je bij value='
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
 
Dennis Jongerden

Dennis Jongerden

26/03/2007 21:55:00
Quote Anchor link
Ok, volgens mij is dit de beste optie

Bij je formfields dubbele quotes gebruiken en htmlspecialchars gebruiken voor de variabele die je in je input field wil weergeven:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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 ."\">
?>
Gewijzigd op 01/01/1970 01:00:00 door Dennis Jongerden
 
Jan Koehoorn

Jan Koehoorn

26/03/2007 21:55:00
Quote Anchor link
In HTML is het de bedoeling dat je dubbele quotes gebruikt om attributen in de HTML tags mee te geven. Als je je hele string tussen enkele quotes zet, hoef je nooit iets te escapen, behalve in het zeldzame geval dat je een enkele quote in je string zelf nodig hebt.

Er is 1 uitzondering: MySQL queries. Deze bevatten heel vaak enkele quotes. Daarom is het handiger juist die met dubbele quotes te omgeven.
 
Dennis Jongerden

Dennis Jongerden

26/03/2007 22:00:00
Quote Anchor link
Beste Allemaal,

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!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.