IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Update en PHP foireux mais pas sous MySQL


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut Update en PHP foireux mais pas sous MySQL
    Bonjour.

    J'ai un problème que je n'arrive pas à résoudre.
    J'ai un formulaire qui me permet de modifier l'ordre de mon menu sur mon site.

    Lorsque que je clique sur le bouton, le formulaire me retourne 3 infos
    Updown = up ou down (si l'élément doit monter ou descendre)
    page_id = le menu correspondant
    sequence = la séquence d'affichage actuel de l'élément du menu.

    Le but est de changé de place (en fonction du n° de séquence) avec l'élément précédent (si up) et avec l'élément suivant (si up)

    Jusque là, pas de problème

    La seule chose est que les requêtes ne fonctionnent pas et ne retournent aucune erreur sous php. Alors qu'elles fonctionnent sous Mysql.

    Voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    $page_id = $_GET['page_id'];
    $sequence = $_GET['sequence'];	
     
    	if ($_GET['updown'] == "up") 
    	{	
    			echo "up";
    			// Up permet de faire passer de la position 2 à la position 1
    			$sequence_min = $sequence - 1 ;
     
    				mysql_query ( 		" UPDATE Menu SET Sequence = '9999' " 
    								. 	" WHERE Page_id = " . $page_id
    								.	" AND 	Sequence = " . $sequence
    							)or die(mysql_error());
     
    				mysql_query ( 		" UPDATE Menu SET Sequence = '" . $sequence . "'"
    								. 	" WHERE Page_id = " . $page_id
    								.	" AND 	Sequence = " . $sequence_min
    							)or die(mysql_error());
     
    				mysql_query ( 		" UPDATE Menu SET Sequence = '" . $sequence_min . "'"
    								. 	" WHERE Page_id = " . $page_id
    								.	" AND 	Sequence = 9999 "
    							)or die(mysql_error());
     
    				mysql_query ( 		" UPDATE Caption SET Sequence = '9999' " 
    								. 	" WHERE Page_id = " . $page_id
    								.	" AND 	Sequence = " . $sequence
    							)or die(mysql_error());
    				mysql_query ( 		" UPDATE Caption SET Sequence = '" . $sequence . "'"
    								. 	" WHERE Page_id = " . $page_id
    								.	" AND 	Sequence = " . $sequence_min
    							)or die(mysql_error());
    				mysql_query ( 		" UPDATE Caption SET Sequence = '" . $sequence_min . "'"
    								. 	" WHERE Page_id = " . $page_id
    								.	" AND 	Sequence = 9999 "
    							)or die(mysql_error());
    }
    Lorsque je reprends les requêtes générées par Php en Mysql, ca fonctionne parfaitement ...
    Or, via le site, ca ne fonctionne pas.

    Une idée ?

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Commence par debugguer ta sequence : tu arretes ton code apres le premier UPDATE, tu controles dans la base ce que ca a donné.
    Si c'est correct, tu remets ta base au point de départ, et tu executes les deux premiers UPDATE, tu controles et ainsi de suite.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    Comment puis-je stopper le code en pleine exécution?

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tu peux commenter les requetes que tu ne veux pas executer ou faire un die()
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Tu mets des //( commentaire) devant les mysql_query ( que tu ne veux pas executer :
    // mysql_query (

    Ensuite, tu les enlèves au fur et a mesure de test verifications.
    (flute ! Sabotage a été plus rapide pour répondre !)

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    84
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 84
    Par défaut
    Oui, c'ets parfaitement logique ...
    J'y ai pensé juste après avoir envoyer ma réponse.

    Je détecte en effet une bizzarerie.
    Lors du 2eme update, il me met la séquence à 9999.

    C'est pas ce que je lui demande mais bon.
    Débbugage en cours.


    Sinon, vous connaissez un débuggeur en php ?
    Adapté sous FF par exemple

    pourtant, je suis pas fou ...

    Voici les query générées, elles sont bonnes

    UPDATE Menu SET Sequence = '9999' WHERE Page_id = 12 AND Sequence = 2
    UPDATE Menu SET Sequence = '2' WHERE Page_id = 12 AND Sequence = 1

    Bonjour.

    je reviens à la charge.
    J'ai, autour de ma page, un outils de stat qui fonctionne.
    C'est à dire, que quand je rentre sur ma page, j'incrémente un compteur dans ma DB.
    Il se trouve que quand je fais ma fameuse manipulation de cliquer sur le bouton UP, il charge 2 fois la page (les stats passent de 10 à 12 visites)

    J'en conclus donc qu'il fait 2 fois l'opération demandée ... qui ... s'annulent tout simplement.

    Mon formulaire est en post.
    Est-ce un comportement normal ?

    Par pure curiosité, j'ai testé sur IE au lieu de FF ...

    CA FONCTIONNE !!!!


    Mais pourquoi FF m'appelle 2 fois le code ?????

  7. #7
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Il existe moult bizarrerie qui peuvent faire qu'une page se recharge.
    La plus cachée que j'ai lue : dans le fichier CSS, une URL pour une image etait mal écrite, et c'etait la page d'update de la base qui etait appellée à la place de l'image.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Gouzoul Voir le message
    Mon formulaire est en post.
    Alors comment ca se fait que tu recuperes tes valeurs avec $_GET ??

Discussions similaires

  1. Fonctionne sous oracle mais pas sur mysql ?
    Par dauphin34000 dans le forum Requêtes
    Réponses: 2
    Dernier message: 01/09/2008, 17h27
  2. PHP et FTP : fonctionne sous IE mais pas sous FF
    Par rjcab dans le forum Langage
    Réponses: 17
    Dernier message: 22/07/2008, 15h58
  3. Erreur sous PHP mais pas sous TOAD ?
    Par erox44 dans le forum SQL
    Réponses: 1
    Dernier message: 22/04/2008, 16h14
  4. [PHP-JS] Erreur sous ie mais pas sous ff
    Par ozzmax dans le forum Langage
    Réponses: 6
    Dernier message: 10/07/2007, 17h04
  5. erreur de requete sous php mais pas sous mysql
    Par kenny49 dans le forum Requêtes
    Réponses: 21
    Dernier message: 28/06/2006, 16h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo