Rechercher : dans
Par :

Problème Update mysql (marche en local)

Dernière réponse le 24 mar 2008 à 18:44:57 ordipard, le 24 mar 2008 à 17:38:43 
 Signaler ce message aux modérateurs

Bonjour,
J'utilise une fonction UPDATE pour mettre a jour la base de donnée, mon code marche en local mais lorsque je le met sur mon serveur (free) ca ne marche pas.

PS: mes identifiants de base mysql de free et en local sont les mêmes.

Si vous avez une idée je suis preneur, Merci d'avance !!
$nom=htmlspecialchars(stripslashes($_POST['nom']));
$date=htmlspecialchars($_POST['date']);
$description=htmlspecialchars(stripslashes($_POST['descripti­on']));
$number=$_POST['number'];
$date_jour="$date[0]$date[1]";
$date_mois="$date[3]$date[4]";
$date_annees="$date[6]$date[7]$date[8]$date[9]";
mysql_connect("localhost","ledyapason","frederic");
mysql_select_db("ledyapason");
mysql_query("UPDATE soiree SET nom='$nom', description='$description', jour='$date_jour', mois='$date_mois', annees='$date_annees' WHERE ID='$number'");
mysql_close();

Configuration: Windows XP
Internet Explorer 6.0

1

ordipard, le 24 mar 2008 à 17:54:56

Bon j'ai avancé le problème ne vien pas du fait que ca soit en local ou pas, il vien du texte que j'essayait de mettre il semblerai que lorsque je met un apostrophe ca bloque la fonction de UPDATE la question est pourquoi? merci ;)

Répondre à ordipard

2

Alain_42, le 24 mar 2008 à 18:07:27
  • +1

Bonsoir,

dans ta requette d'UPDATE:

mysql_query("UPDATE soiree SET nom='$nom', description='$description', jour='$date_jour', mois='$date_mois', annees='$date_annees' WHERE ID='$number'");

tu remarques qu'il y a des '

alors si dans les valeurs à enregistrer il y a des apostrophes cà perturbe.

par exemple si tu veux mettre d'hier dans le champ description tu vois que ça donne

description='d'hier'
il y a donc interprétation de l'apostrophe.

Pour éviter cet inconvénient il faut échapper les apostrophes, c'est à dire ajouetr auomatiquement un \ devant les '

la fonction php qui fait ça c'est addslashes

nom='addslashes($nom)', description='addslashes($description)',  etc...


l'opération inverse c'est stripslashes(....)

Répondre à Alain_42

3

ordipard, le 24 mar 2008 à 18:16:29

MDR je viens de regler mon problème et je vien de lire ton message ;) merci quand même c'était bien ca j'ai inversé addslashes et stripslashes, par contre en local je doit mêtre un addslashes et sur le serveur je ne doit rien mettre ni add ni strip, si je met strip ca me met l'erreur si je met add ça me rajoute un slashe sur mon texte donc finalement je n'ai rien mis. mais est ce que quelqu'un peut expliquer cette difference entre local et sur le serveur ?

Merci beaucoup pour avoir repondu si vite.

A bientot ;)

Répondre à ordipard

4

giheller, le 24 mar 2008 à 18:29:44

Bonsoir,

il y aune différence de traiement des ' dans php et dans mysql; la requête aurait pu être codée ainsi :

$query = 'UPDATE soiree SET nom=';
$query .= '"'.$nom.'"'; // cette ligne ajoute à query une double " et le contenu de $nom puis une double "
ainsi si $nom contient une quoute il n'a pas de pb

etc
$query .= '"'.$description.'"';
$query .= '"'.$date_jour.'"';
$query .= '"'.$date_mois.'"';
$query .= '"'.$date_annees.'"';
$query .= ' where id='.$number.')';

mysql_query($query);


JL,  m'enfin c'est juste mon avis @+
se faire aider, n'est pas faire faire son travail

Répondre à giheller

5

 ordipard, le 24 mar 2008 à 18:44:57

Merci beaucoup pour l'explication et pour avoir répondu si rapidement ;)

A bientot et encore merci!

Répondre à ordipard