Bug avec MySQL -> update les champs à vide

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Bug avec MySQL -> update les champs à vide

Message le Mar Sep 18, 2007 19:36

Bonsoir à tous.
J'ai le problème suivant en tantant un Update dans ma base MySQL :

1) Je récupère et je formate mes variables POST :

Code: Tout sélectionner
$id_journal = $_POST['id_journal'];
$jouri = $_POST['jour_i'];
   $moisi = $_POST['mois_i'];
   $anneei = $_POST['annee_i'];
   
   $heure = $_POST['heure_i'];
   $poids = $_POST['poids_i'];
   $poids = str_replace(",", '.', $poids);
   $poids = round($poids,2);
   
   $tour_taille = $_POST['tour_taille'];
   $tour_taille = str_replace(",", '.', $tour_taille);
   $tour_taille = round($tour_taille,2);

$nivalim = $_POST['nivalim'];
   $txtalim = $_POST['txtalim'];
   $txtalim = str_replace("\n", '<br>', $txtalim);
   $nivsport = $_POST['nivsport'];
   $txtsport = $_POST['txtsport'];
   $txtsport = str_replace("\n", '<br>', $txtsport);
   $nivmood = $_POST['nivmood'];   
   $txtjournal = $_POST['txtjournal'];
   $txtjournal = str_replace("\n", '<br>', $txtjournal);



2) Je fais l'update dans la base comme ceci :


Code: Tout sélectionner
$sql = "UPDATE journal SET `date`='$anneei-$moisi-$jouri',`heure`='$heure',`poids`='$poids',`tour_taille` = $tour_taille,
            `alim_mood`='$nivalim',`alim_com`='$txtalim',`act_mood`='$nivsport',`act_com`='$txtsport',`humeur`='$nivmood',`journal`='$txtjournal' WHERE `id`='$idJournal'";
      
$resultat = mysql_query($sql);


Résultat :
J'obtiens une mise à 0 de tous les champs

Pourtant quand je fais un echo de mon $sql, j'obtiens bien des valeurs correctes.

Je précise deplus, qu'en local tout marche impecablement, mais sur mon serveur de prod, toutes les variables sont mises à 0

Pour courroner le tout, quand j ecopie colle l'echo de$sql dans le PHPmYAdmin distant, tout marche bien, l'update se fait correctement.

Si quelqu'un a une idée du problème, je lui en serai vraiment reconnaissant :)

Merci d'avance

theJB
WRInaute impliqué
WRInaute impliqué
 
Messages: 410
Inscription: Ven Avr 07, 2006 21:42

Message le Mar Sep 18, 2007 20:11

oubli les apostrophes: '$anneei-$moisi-$jouri'
et remplace les par des \" et le tour est joué

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Message le Mar Sep 18, 2007 20:41

Merci pour l'astuce, mais ca ne change rien.
J'ai même remarqué quelquechose d'encore plus étrange :
Quand je fais l'update, la première fois tous les champs sont donc mis à 0, mais si j'effectue un rechargement de la page (avec les données POST) La la modif s'effectue sans problème !!

Se peut-il qu'il y ai un problème avec Apache ou MySQL ? Je remarque d'ailleurs des lenteurs sur le site.


haderach
WRInaute passionné
WRInaute passionné
 
Messages: 866
Inscription: Jeu Aoû 26, 2004 11:31

Message le Mar Sep 18, 2007 21:36

As tu essayé d'exécuter manuellement ce que l'écho de $sql donne ?


erestrebian
WRInaute impliqué
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

Message le Mer Sep 19, 2007 7:34

apparemment oui...

tu as essayer de faire émerger un sqlerror et si oui, tu n'as pas d'erreur?

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Message le Mer Sep 19, 2007 9:41

La j'avoue mon ignorance, faire emerger un sql error c'est equivament d'un " or die(mysqlerror()) " ? si oui , c'est le cas, et je n'ai aucune erreur. si ce n'est pas ca qui fait emerger un mysql error comment dois-je faire ?

Et oui , j'ai exécuté manuellement l'echo du sql dans PHPMYAdmin et là ca marche. MAis comme je le disais, si ke recharge la page avec les variables POST toujours en mémoire, l'UPDATE se fait correctement.


erestrebian
WRInaute impliqué
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

Message le Mer Sep 19, 2007 10:05

a priori, tes variables prennent bien la valeur que tu leur assignes... puisque ça te retourne la requête avec les bonnes valeurs...

et quand tu fais un echo sur $resultat ça affiche 1?

tu as envoyé la requête avec des valeurs fixes (je veux dire sans variable)?

si oui, tu as essayé de passer directement les variables du post directement dans la requête? (tu peux faire " . str_replace("\n", '<br>', $_POST['txtjournal']) . " à la place de passer par $txtjournal)

toutes les valeurs sont mises à 0? ou seulement tour_taille, $nivalim, $txtalim, $nivsport, $txtsport, $nivmood et $txtjournal?

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Message le Mer Sep 19, 2007 10:25

Toutes champs jouant dans l'UPDATE sont soir mis à
0000-00-00 pour la date
00:00:00 pour l'heure,
0 pour les entiers
RIEN pour les chaines
Les autres champs qui ont pourtant une valeur mais qui n'entrent pas dans l'UPDATE gardent leurs valeurs.

Je n'ai aps encore essayé ceci :

t quand tu fais un echo sur $resultat ça affiche 1?

tu as envoyé la requête avec des valeurs fixes (je veux dire sans variable)?

si oui, tu as essayé de passer directement les variables du post directement dans la requête? (tu peux faire " . str_replace("\n", '<br>', $_POST['txtjournal']) . " à la place de passer par $txtjournal)


Je le fais et te tiens au courant

Merci


erestrebian
WRInaute impliqué
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

Message le Mer Sep 19, 2007 11:48

si tu peux également poster un modèle de requête générée...

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Message le Mer Sep 19, 2007 12:15

Alors, voici résumé les faits (attention, c'est bizzare) :

- un echo pour le résultat affiche 1
- Quand je passe des valeurs fixes ca marche

MAIS tres bizarre :
je fais l'update, puis tout de suite apres, je fait une requete sur le poids par exemple et ca affiche le poids correct voulu par l'update.

Cependant, quand je regarde dans PHP MyAdmin, les fameux champs sont à 0.

Un exemple de output :

Code: Tout sélectionner
UPDATE journal SET `date` = "2007-09-19", heure = "12:52", poids = "70", tour_taille = "100", alim_mood = "1", alim_com = "", act_mood = "", act_com = "TEST", humeur = "3", journal = "TEST" WHERE id = "21519"


Avec cet update, j'ai un echo résultat à 1

puis je fais :

Code: Tout sélectionner
SELECT poids FROM journal WHERE id = 21519


et là j'obtiens bien 70, comme demandé dans l'UPDATE

Cependant, je vais voir apres dans PHP MyAdmin, et les valeurs sont à

21519 0000-00-00 00:00:00 850 0 0 0 0 0 0 0

la date a été mise à 0, l'heure aussi et le poids aussi (Les autres étaient à 0 par défaut dans cet exemple)

Puis quand je change de page et que je fais une requete pour obtenis le dernier poids par exemple, il est à 0.

Je précise qu'en local su mon portable tout marche bien.

Sur le serveur distant dédié OVH c'est la que ca foire.

Voila qui est bizarre, tout de suite après l'UPDATE, je fais un SELECT et j'ai la veleur voulue, et quand je vérifie apres, les champs sont à 0.

Merci :D

PS, voici le code de création de la table journal :

Code: Tout sélectionner
CREATE TABLE journal (
  id int(10) NOT NULL auto_increment,
  date date default NULL,
  heure time default NULL,
  client varchar(11) default NULL,
  poids double default NULL,
  tour_taille double default NULL,
  alim_mood char(1) default NULL,
  alim_com text,
  act_mood char(1) default NULL,
  act_com text,
  humeur char(1) default NULL,
  journal text,
  total_calories double default NULL,
  total_proteines double default NULL,
  total_lipides double default NULL,
  total_glucides double default NULL,
  total_fruits_legumes double default NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;


erestrebian
WRInaute impliqué
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

Message le Mer Sep 19, 2007 12:55

dans un premier lieu, change date en date_qqch car date est un mot réservé...

il n'y a plus aucun contact avec la base de données dans le reste du script? Je trouve cela super bizarre...

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Message le Mer Sep 19, 2007 13:14

Justement :? Je cherche depuis des heures, et il n'y a pourtant plus aucun contact avec l abase de données ailleurs.

D'autant plus que ca ne peut pas être un éventuel autre contact avec l abase pour les raisons suivantes :
1) En local ca marche bien
2) avec de svaleurs entrées en "Dur" ca marche bien
3) Quand je fais un Reload de la page ca annule la mise à 0 précédente et la ca marche nickel.

J'ai jamais vu ca
8O

Help :!: et merci pour ton aide erestrebian :idea:


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Mer Sep 19, 2007 13:30

peut etre un probleme de cache navigateur

rog

positivespike
Nouveau WRInaute
 
Messages: 21
Inscription: Mer Fév 21, 2007 11:49

Message le Mer Sep 19, 2007 13:44

Salut Rog,

Est ce que tu veux dire que le navigateur aurait du mal avec les variables POST ?

Je pensais que ca n'avait pas d'incidences, mais je précise que j'ai changé l'adresse URL de la page qui effectue ce traitement.

Comment faire pour tester si il s'agit bien d'un problème de cahce du navigateur ?

PS, J'ai effacé mes traces dans Firefox (sessions d'authentifications, cookies, cache) , le problème reste le même.

J'ai l'impression que le problème arrive aussi aux autres internautes qui visitent mon site et qui tentent une modification de leur journal.

Et pour être sur que ca ne soit pas un autre contact avec la base apres, j'ai couper tout le code qui suit l'update., rien à faire, toujours la même chose.


rog
WRInaute accro
WRInaute accro
 
Messages: 1662
Inscription: Jeu Sep 21, 2006 2:32

Message le Mer Sep 19, 2007 14:46

mais il est possible que le cache t'empeche de voir la modif dans phpmyadmin

c'est surtout cette page que tu devrais actualiser

rog

Bug avec MySQL -> update les champs à vide

Formation recommandée sur ce thème :

Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités