Page 1 sur 1
probleme de guillemet
Posté : 27 févr. 2009, 18:13
par stefanelle
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
Merci de votre aide
Posté : 27 févr. 2009, 18:18
par sylvaing26
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()

Posté : 27 févr. 2009, 18:19
par Ryle
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

Posté : 27 févr. 2009, 18:20
par stefanelle
ils disparaiisent dans la base et sur ma page web ils disparaissent au moment de mon update
Posté : 27 févr. 2009, 18:22
par sylvaing26
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()

Posté : 27 févr. 2009, 18:43
par stefanelle
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();
?>
Posté : 27 févr. 2009, 19:45
par sylvaing26
comme cela \" bla bla bla \"
Posté : 27 févr. 2009, 20:48
par Aureusms
Utilise tu addslashes() ou mysql_real_escape_string(). Ces deux fonctions ajoutent directement des / pour protéger les " ou '. Surement utile dans ton cas.
Posté : 28 févr. 2009, 00:36
par stefanelle
mais je vois pas ou les placer ...

Posté : 28 févr. 2009, 13:17
par sylvaing26
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']);