Problème d'enregistrement lorsque qu'il ya un Quote" '

arto
Invité n'ayant pas de compte PHPfrance

09 août 2005, 14:58

Bonjour.
J'écris dans l'espoir de trouver enfin une solution à ce bug qui me turlupine (pas de mauvais jeux de mots svp ^^).

Je m'explique. J'ai créé un formulaire, tout bête, dont je récupère les valeurs saisies pour les ranger dans une table SQL. Pas de problème, sauf lorsqu'un quote (" ' ") est présent.
Voici un morceau de mon code, bien que je ne pense pas que ca vienne d'une erreur de celui ci, mais plutôt d'une ignorance de ma part (en terme de fonction php ^^).
<?php
@session_start();
@$user=$_SESSION['pseudo'];
@$pass=$_SESSION['pass'];
@$bdd="XXX";
@$host="localhost";
//session_start() pour utiliser un enregiustrement ayant déjà été effectué.

@mysql_connect($host, $user, $pass) or die("Impossible de se connecter &agrave; la base de donn&eacute;e"); @mysql_select_db($bdd) or die("Impossible de se connecter à la base de données");
?>
// en-tête HTML <body> eetc... je passe à la suite du code

<?php $objet_consult=$_POST['objet_consult'];
$duree=$_POST['duree'];
$critere=$_POST['critere_sup'];
$date_envoi=date("Y/m/d");
$limite_date=$_POST['date_limite'];
// je saute la partie du code ou je recherche l'index ou enregistrer mes données. Je mets le code à la fin au cas ou ca puisse venir de là.
$sql = "INSERT INTO appel VALUES('" . $num_appel . "','" . $objet_consult . "','" . $duree . "','" . $critere . "','" . $limite_date . "','" . $date_envoi . "')"; 
$res = mysql_query($sql);
echo $res;
// un ptit echo pour tester si ca a marché
mysql_close();
?>
Tout les caractères passent normalement (j'ai pas mis de htmlentities, masi chez moi ca passe sans. Et puis j'ai testé avec, et aucune différence. Je le mettrai quand jaurais résolu ce problème.

voici le morceau de code que j'ai enlevé, mais ca m'étonnerait que ca vienne de là :
ce code sert à trier les clés primaires de ma table par ordre croissant, puis de compter le nombre de valeur, et donc d'en déduire les indices non utilisés.
$requete="select appel_num from appel order by appel_num";
$resultat=mysql_query($requete);
$tableau_ord=mysql_fetch_array($resultat);
$sql="select count(*) from appel";
$compte=mysql_fetch_row(mysql_query($sql));
$compte=$compte[0];
$trouve=0;
$i=0;
while ($i<$compte)
{
if ($i<>$tableau_ord[0])
{
$num_appel=$i;
$trouve=1;
$i=$compte;
}
else
{
$i=$i+1;
$tableau_ord=mysql_fetch_array($resultat);
}
}
if (($i==$compte) && ($trouve==0))
{ $num_appel=$compte;
}
Merci d'avance. En éspérant ne pas avoir écrit trop et de ce fait avoir rendu ma question totalement inintéligible.

Arto

Modérateur PHPfrance
Modérateur PHPfrance | 6037 Messages

09 août 2005, 15:00

Les mots magiques sont addslashes et stripslashes :)

arto
Invité n'ayant pas de compte PHPfrance

09 août 2005, 17:01

Merci beaucoup mère téréza ^^.
Mon mot magique est merci (*testera demain si ca marche. 8 H d'écran, ca "crève" les yeux :p*).

Eléphanteau du PHP | 13 Messages

11 août 2005, 13:07

Ou encore mysql_real_escape_string() qui est une fonction faite pour ça.
Image