Bug avec MySQL -> update les champs à vide

Discussion dans 'Développement d'un site Web ou d'une appli mobile' créé par positivespike, 18 Septembre 2007.

  1. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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:
    $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:
    $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
     
  2. theJB
    theJB WRInaute occasionnel
    Inscrit:
    7 Avril 2006
    Messages:
    372
    J'aime reçus:
    0
    oubli les apostrophes: '$anneei-$moisi-$jouri'
    et remplace les par des \" et le tour est joué
     
  3. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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.
     
  4. haderach
    haderach WRInaute impliqué
    Inscrit:
    26 Août 2004
    Messages:
    721
    J'aime reçus:
    0
    As tu essayé d'exécuter manuellement ce que l'écho de $sql donne ?
     
  5. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    apparemment oui...

    tu as essayer de faire émerger un sqlerror et si oui, tu n'as pas d'erreur?
     
  6. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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.
     
  7. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    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?
     
  8. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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 :

    Je le fais et te tiens au courant

    Merci
     
  9. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    si tu peux également poster un modèle de requête générée...
     
  10. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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:
    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:
    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:
    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;
    
     
  11. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    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...
     
  12. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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:
     
  13. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    peut etre un probleme de cache navigateur

    rog
     
  14. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    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.
     
  15. rog
    rog WRInaute passionné
    Inscrit:
    21 Septembre 2006
    Messages:
    1 346
    J'aime reçus:
    0
    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
     
  16. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    t'as les même versions de mysql en local et sur le serveur

    sur mon dédié j'ai Version du client MySQL: 5.0.32

    peut-être qu'en local il est plus permissif... t'as changé le nom date en date_qqch?

    est-ce que ça marche sans mettre à jour certains champs?
     
  17. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    Merci pour vos contributions.

    Apres vérifications, le problème ne viens pas de PHPmyAdmin.

    Je n'ai en effet pas la même version de Apache ni de MySQL en local et en distant. Je n'ai pas pu changer le non daate en date_qqch, car le nombre de fichiers faisant appel à ce champ est elevé et je ne les ai pas tous programmés moi même.

    Par contre je pense avoir "cibler" le problème. Je pense qu'il vient des variables POST.

    Quand je mets certains champs en dur comme la date dans la requête comme la date ou le poids, ces champs sont bien modifiés mais les autres mis à 0.

    Je ne comprends pas comment cela peut se faire puisque l'echo de mon $sql est correct 8O

    J'ai même essayé de mettre directement le $_POST['machin'] dans la requette, mais même problème.

    Help :wink:
     
  18. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    j'essaye de me reconnecter chez moi...
     
  19. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
  20. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    Alors voila, mysterieusement le problème est réglé......

    J'explique ce que j'ai fait.

    J'utilise Joomla.

    J'ai désactivé dans l'admin de Joomla, tout ce qui était lié à l'ancienne URL de cette page (articles, modules liens). Je précise cependant que Ma nouvelle URL n'avait RIEN à voire avec la nouvelle.

    D'un coup je vois que :

    1) le site ne rame plus
    2) les updates se font bien.

    C'est à n'y rien comprendre.

    L'impression que j'ai eue en tout cas (ce n'est qu'une impression), c'est que soit Apache soit MySQL ramaient avec un module de Joomla (OpenSEFx)
    et que les updates dans la base s'emmelaient les pinceaux quand il y avait des variables POST.

    Le site et les acces FTP avaient tendance à ramer depuis mon changement d'URL. Maintenant c'est OK.

    J'avoue que c'est le plus grand mystère qu'il m'a été donné de voir depuis que je programme. A ma conniassance, un bug faisait qu'un traitement donné ne marche jamais. C'est la première fois que je vois un code s'exécuter de temps en temps correctement alors que les outputs sont bons. Pour ca que je crois que c'est au niveau d'Apache ou de MySQL qu'il y a eu une compliquation.

    C'est déjà arrivé à quelqu'un ce genre d'embrouilles
    :?: :?

    En tout cas merci sincèrement à vous deux qui avaient consacré du temps à m'aider :D
     
  21. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    de rien, content que ça se soit régler pour toi...


    je ne connais rien à joomla... je ne sais même pas ce que c'est...
     
  22. positivespike
    positivespike Nouveau WRInaute
    Inscrit:
    21 Février 2007
    Messages:
    20
    J'aime reçus:
    0
    C'est un CMS, autrement dit une sorte de Logiciel érit en PHP et qui te permet de faire des sites en PHP : http://www.joomla.fr/

    Tres puissant, mais j'estime encore bourré de bugs., Surtout u niveau des composants qu'on peut lui rajouter.
     
  23. erestrebian
    erestrebian WRInaute occasionnel
    Inscrit:
    15 Juin 2007
    Messages:
    411
    J'aime reçus:
    0
    encore une usine à gaz pour tuer la programmation...


    :lol: :lol: :lol:
     
Chargement...
Similar Threads - Bug MySQL update Forum Date
Formulaire pour signaler des bugs d'indexation Google Crawl et indexation Google, sitemaps 17 Août 2021
WordPress bugzero.fr / version 3 Demandes d'avis et de conseils sur vos sites 29 Juillet 2021
Bug Screaming Frog Problèmes de référencement spécifiques à vos sites 11 Mai 2021
Google Analytics Bugs pendant 1h Google Analytics 19 Février 2021
Debugguer firefox sur Ipad Autres moteurs de recherche connus 11 Février 2021
Bug trafic en temps réel Google Analytics 10 Février 2021
WordPress Bug de référencement après passage du .fr au .com Débuter en référencement 9 Octobre 2020
Update Google du 10 août 2020 : c'était un bug ! Référencement Google 11 Août 2020
Debugger Javascript sous IOS (avec émulateur) Développement d'un site Web ou d'une appli mobile 27 Mai 2020
WordPress Bug Yoast : multiples URL d'attachement Crawl et indexation Google, sitemaps 10 Février 2020
Real time bugué dans Google Analytics ? Google Analytics 28 Octobre 2019
Bugs sur blocs adsense AdSense 7 Septembre 2019
WordPress Avis sur bugzero.fr Demandes d'avis et de conseils sur vos sites 21 Août 2019
Bug Google : désindexation de pages Référencement Google 7 Avril 2019
En-têtes http bugués Administration d'un site Web 6 Février 2019
Bug dans la console analytic? Google Analytics 17 Janvier 2019
VisBug : extension Chrome par Google, pour le développement Google : l'entreprise, les sites web, les services 16 Novembre 2018
Nb d'URL indexées : bug ou incompréhension ? Débuter en référencement 26 Octobre 2018
Search Console bug ? Référencement Google 21 Août 2018
Fonction Ajax qui bug parfois Développement d'un site Web ou d'une appli mobile 11 Mars 2018