probleme de guillemet

Eléphant du PHP | 61 Messages

27 févr. 2009, 18:13

Bonjour,

J ai un petit souci quand je fais un update sur ma base via un formulaire lorsqu une ligne contient des guillemets ils disparaissent avec la modif :shock:

Merci de votre aide

Mammouth du PHP | 686 Messages

27 févr. 2009, 18:18

Pour les guillements il faut mettre un \ devant sinon PHP pense que c'est la fin de la sequence,
ensuite tu peux utiliser str_replace() ou htmlspecialchars() :wink:

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 févr. 2009, 18:19

Où est-ce qu'ils disparaissent ? Est-ce lorsque tu les réaffiches dans ton formulaire ? Est-ce dans ta base qu'il n'apparaissent pas ?

Essayes de trouver à quel moment tu les perds, cela t'aidera à trouver pourquoi et surtout comment ne plus les perdre ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 61 Messages

27 févr. 2009, 18:20

ils disparaiisent dans la base et sur ma page web ils disparaissent au moment de mon update

Mammouth du PHP | 686 Messages

27 févr. 2009, 18:22

Pour les guillements il faut mettre un \ devant sinon PHP pense que c'est la fin de la sequence,
ensuite tu peux utiliser str_replace() ou htmlspecialchars() :wink:

Eléphant du PHP | 61 Messages

27 févr. 2009, 18:43

ok donc j ai remarqu" que les guillemets disparaisse au niveau de l affichage de mes GET ou dois je mettre le \ devant les guillemets ?

merci

Code : Tout sélectionner

<?php include ('config.php'); include ('connexion.php'); $id = $_GET["id"]; $sql = "SELECT id, reference, artiste, album, format FROM contenu WHERE id='".$_GET ['id']."'" ; $req = mysql_query($sql) or die( mysql_error() ) ; $total = mysql_num_rows($req); { echo '<form method ="post" action="lm.php">'; echo '<table>'."\n"; echo '<tr>'; echo '<td ><b><u>id</u></b></td>'; echo '<td ><b><u>reference</u></b></td>'; echo '<td><b><u>artiste</u></b></td>'; echo '<td><b><u>album</u></b></td>'; echo '<td><b><u>format</u></b></td>'; echo '</tr>'."\n"; while($row = mysql_fetch_array($req)) { echo '<tr>'; echo '<td>'.$id.'</td>'; echo '<td><input type="text" name="reference" value="'.$row ["reference"].'"/></td>'; echo '<td><input type="text" name="artiste" value="'.$row["artiste"].'"/></td>'; echo '<td><input type="text" name="album" value="'.$row["album"].'"/></td>'; echo '<td><input type="text" name="format" value="'.$row["format"].'"/></td>'; echo '</tr>'."\n"; } echo '</table>'."\n"; echo '<input type="hidden" name="id" value="'.$_GET['id'].'" /><input type="submit" name="btOk" value="Modifier"/>'; echo '</form>'; } ?> </body></html> <?php mysql_close(); ?>

Mammouth du PHP | 686 Messages

27 févr. 2009, 19:45

comme cela \" bla bla bla \"

ViPHP
ViPHP | 1996 Messages

27 févr. 2009, 20:48

Utilise tu addslashes() ou mysql_real_escape_string(). Ces deux fonctions ajoutent directement des / pour protéger les " ou '. Surement utile dans ton cas.
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphant du PHP | 61 Messages

28 févr. 2009, 00:36

mais je vois pas ou les placer ... :(

Mammouth du PHP | 686 Messages

28 févr. 2009, 13:17

dans ton fichier lm.php tu dois avoir quelque chose de ce genre
 $artiste = $_POST['artiste'];
a toutes te variable $_POST[...] mets
$artiste = addslashes($_POST['artiste']);
$album = addslashes($_POST['album']);
$format = addslashes($_POST['format']);