cote et apostrophe dans PHP

Eléphant du PHP | 61 Messages

21 févr. 2010, 13:30

Bonjour,

j'ais un probléme une variable venant de Mysql et récupérée avec
 
<?PHP
while ($row=mysql_fetch_array($result)) 
         {
          $designation= stripslashes($row['designation']);
         }

Je vous fait grace du reste code

derriére cette récupération je fais un FORM pour modifier cette donnée.

 
echo "<br />VOUS MODIFIEZ  ".$designation." ";
echo "<br />texte<input  type='text' size='30' name='designation' value='".$designation."'>";


Je vous fait grace du reste code

alors mystére j'ais

VOUS MODIFIEZ l'age de pierre a l'aire des...
texte l


en fait si j'inverse

echo '<br />texte<input  type="text" size="30" name="designation" value="'.$designation.'">';
alors ça marche mais le probléme apparait lorsque j'écris

un homme disait "xxxxxxx xxxxx"
Alors comment régler cela ?
car dans le cas ou j'ais les deux comme ceci:

l'art de dire "bien vu" est etc..

Merci a ceux qui auraient une idée
Un sourire pour conclure ;-)

ViPHP
ViPHP | 2287 Messages

21 févr. 2010, 13:45

Bonjour,

Au niveau de ton html, je te conseille de choisir un délimiteur d'attribut, et de t'y tenir pour toutes tes créations web. Je te conseille les doubles quotes " " (ta solution #2), notamment car elles sont généralement moins fréquentes en bdd que les apostrophes.

Au niveau php, remplace les quotes dans les chaînes issues de ta base de données par les entités html équivalentes :
$chaine = 'une chaine qu\'on a voulu piéger "exprès".';
$chaine=str_replace('"','"',$chaine);
Et voilà le résultat :
<input name="test" id="test" type="text" value="<?php echo $chaine; ?>" />
<!-- ce qui donne en source html : --> 
<input name="test" id="test" type="text" value="une chaine qu'on a voulu piéger "exprès"." />
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 61 Messages

21 févr. 2010, 14:23

Mille mercis !
C'est enfantin et efficace :wink:
Même le dimanche les esprits sont au top :)
Un sourire pour conclure ;-)

Eléphant du PHP | 55 Messages

21 févr. 2010, 16:24

Au niveau php, remplace les quotes dans les chaînes issues de ta base de données par les entités html équivalentes :
$chaine = 'une chaine qu\'on a voulu piéger "exprès".';
$chaine=str_replace('"','"',$chaine);
Bonjour,

Pourquoi ne pas utiliser simplement htmlspecialchars()?

Eléphant du PHP | 61 Messages

21 févr. 2010, 18:22

Bonjour,
Pourquoi ne pas utiliser simplement htmlspecialchars()?
Pour ne surtout pas modifier ce que je veux conserver dans mon terxte !
Un sourire pour conclure ;-)

Eléphant du PHP | 55 Messages

21 févr. 2010, 19:55

Comme quoi par exemple?

ViPHP
ViPHP | 2287 Messages

21 févr. 2010, 19:58

Bonjour,

Pourquoi ne pas utiliser simplement htmlspecialchars()?
En effet, ici c'est encore mieux ;) htmlspecialchars() fait un peu plus de travail que le simple str_replace que j'ai donné (et anticipe sûrement le prochain problème que rencontrera christele).

C'est idéal pour écrire dans un attribut html, bien qu'un peu moins pédagogique je trouve (le côté "boîte noire" des fonctions prêtes à l'emploi, d'un côté c'est bien car c'est une solution complète et opérationnelle, mais d'un autre côté pas terrible pour comprendre quand on débute).
if(!@work()){ Nespresso(); } else { what(); }
______________________________

Eléphant du PHP | 55 Messages

21 févr. 2010, 20:04

D'accord, je saisis l'intérêt.
J'avais l'impression de passer à quelque chose de trivial, d'où ma question.
Merci Calimero.

Eléphant du PHP | 61 Messages

21 févr. 2010, 20:25

En effet, ici c'est encore mieux ;) htmlspecialchars() fait un peu plus de travail que le simple str_replace que j'ai donné (et anticipe sûrement le prochain problème que rencontrera christele).
Non pas du tout, :non:
j'ais du métier comme on dit ! mais j'ais besoins de ne pas utiliser une fonction pareille qui fait tout, "tout bétement" ce n'est pas mon besoins. ni ce jour, ni demain.
Ta réponse me convient pleinement et je t'en remercies encore. :D
A++ sur le forum :?
Un sourire pour conclure ;-)

ViPHP
ViPHP | 2287 Messages

21 févr. 2010, 23:06

j'ais du métier comme on dit ! mais j'ais besoins de ne pas utiliser une fonction pareille qui fait tout, "tout bétement" ce n'est pas mon besoins. ni ce jour, ni demain.
Ok bah tant mieux alors. Et pour le "quand on débute", désolé, ton pseudo seul ne m'évoquait rien mais je viens seulement de me rappeler ta signature #-o :wink:

@+
if(!@work()){ Nespresso(); } else { what(); }
______________________________