par
Ryle » 28 oct. 2006, 00:02
Ce que je te propose rejoint ce que fait Ajoloca, mais l'idée est de te donner les principes obligatoires d'un débugage et tu verras qu'il y a un problème de logique :
Ton problème : ni la base, ni la session ne sont mises à jour. Commençons par la base.
Première chose à faire : afficher la requête qui est exécutée afin de voir si le sql généré correspond bien à ce que tu attends et éventuellement l'essayer directement dans mysql.
En l'occurence, si la syntaxe n'était pas bonne tu aurais une erreur dans le mysql_error(), mais tu devrais surtout constater que la requête n'a pas été affichée (sachant que si elle est affichée, le header() ne fonctionnera pas et te mettra un warning pour te dire qu'il n'arrive pas à rediriger car des entêtes html ont déjà été envoyés au navigateurs)
Donc pas de requête affichée, ca signifie que la partie du code n'est pas exécuté. On remonte donc voir ce qui empêche de lire cette partie là. On tombe sur un if(). Première chose à faire, vérifier que la condition est respectée :
if (($data == './objet/clef.gif')){
Il faut donc afficher la variable $data pour connaitre sa valeur et la comparer. Si elles sont différentes, c'est réglé et c'est normal
Si elles sont identiques, alors on remonte encore un peu et on constate que l'on est dans un else {} on va donc voir le if associé :
if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif')){
Et hop, qu'est ce qu'on voit : si $data est différent de './objet/piece_meca.gif' OU s'il est différent de './objet/clef.gif' alors on rentre dans le if() (et donc pas dans le else). En gros quelque soit la valeur de $data tu vas rentrer dans le if : il ne peut être égal aux deux et sera donc nécessairement différent de l'un ou de l'autre.
Donc test à corriger et tu continues ainsi de suite à mettre des echo de partout pour vérifier tes valeurs, les endroits du code par lesquels tu passes

Ce que je te propose rejoint ce que fait Ajoloca, mais l'idée est de te donner les principes obligatoires d'un débugage et tu verras qu'il y a un problème de logique :
Ton problème : ni la base, ni la session ne sont mises à jour. Commençons par la base.
Première chose à faire : afficher la requête qui est exécutée afin de voir si le sql généré correspond bien à ce que tu attends et éventuellement l'essayer directement dans mysql.
En l'occurence, si la syntaxe n'était pas bonne tu aurais une erreur dans le mysql_error(), mais tu devrais surtout constater que la requête n'a pas été affichée (sachant que si elle est affichée, le header() ne fonctionnera pas et te mettra un warning pour te dire qu'il n'arrive pas à rediriger car des entêtes html ont déjà été envoyés au navigateurs)
Donc pas de requête affichée, ca signifie que la partie du code n'est pas exécuté. On remonte donc voir ce qui empêche de lire cette partie là. On tombe sur un if(). Première chose à faire, vérifier que la condition est respectée :
[php]if (($data == './objet/clef.gif')){ [/php]Il faut donc afficher la variable $data pour connaitre sa valeur et la comparer. Si elles sont différentes, c'est réglé et c'est normal :)
Si elles sont identiques, alors on remonte encore un peu et on constate que l'on est dans un else {} on va donc voir le if associé :
[php]if (($data!= './objet/piece_meca.gif') OR ($data!= './objet/clef.gif')){ [/php]Et hop, qu'est ce qu'on voit : si $data est différent de './objet/piece_meca.gif' OU s'il est différent de './objet/clef.gif' alors on rentre dans le if() (et donc pas dans le else). En gros quelque soit la valeur de $data tu vas rentrer dans le if : il ne peut être égal aux deux et sera donc nécessairement différent de l'un ou de l'autre.
Donc test à corriger et tu continues ainsi de suite à mettre des echo de partout pour vérifier tes valeurs, les endroits du code par lesquels tu passes ;)