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 :

pb d'écriture dans base sql [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut pb d'écriture dans base sql
    Bonsoir,

    j'ai une base de données sql nommée joueur1 avec pour champ (id,numero,nom,prenom,age)
    j'ai 4 menus deroulants qui me retournent des valeurs (numero)de 1 à 4 selon mon choix
    je visualise bien les retours par 4 commandes echo.
    mon soucis est dans l'ecriture dans ma table qui ne correspond pas au retour de commande echo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    valeur par defaut            modif nenu         info bd avant       ecriture bd
    nenu deroulant               deroulant          update              apres update
       1     passage de 1 à 2        2                 1                     1 
       2     passage de 2 à 1        1                 2                     1
       3                             3                 3                     3
       4                             4                 4                     4
    j'espere avoir été clair

    voila mon script qui pose problème:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    mysql_query("UPDATE joueur1 SET numero='$numero1'WHERE numero='1'")or die(mysql_error());
    mysql_query("UPDATE joueur1 SET numero='$numero2'WHERE numero='2'")or die(mysql_error());
    mysql_query("UPDATE joueur1 SET numero='$numero3'WHERE numero='3'")or die(mysql_error());
    mysql_query("UPDATE joueur1 SET numero='$numero4'WHERE numero='4'")or die(mysql_error());
    je me demande s'il ne faudrait pas faire qu'un seul update , mais je ne sais pas si c'est possible et comment le faire.

    Merci par avance de votre aide.

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Par défaut
    La résultat obtenu est normal. Dans ton exemple, après la première requete UPDATE, tu remplace tout les 1 par des 2. Tu as donc 2 2 3 4 dans ta table. Ensuite, avec ta seconde requete, tu remplaces tout les 2 par des 1, ce qui te donne 1 1 3 4.

    Pourrais-tu nous donner davantage de détails sur ce à quoi sert le champ numéro? Ça peu nous aider à t'aider.

    Un solution est peut-être d'utiliser le ID du joueur dans le WHERE, plutôt que le numéro, par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "UPDATE joueur1 SET numero='$numero1' WHERE id='1'"

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Ce champ me sert à donner un numéro de référence. Je m'explique: j'ai un tableau de 20 lignes avec un menu déroulant (en javascript) sur chaque ligne 1, 2 , 3, etc... à chaque ligne, il y a un ensemble d'éléments propres à la personne nommée sur cette dite ligne. Ce que je souhaite réaliser, c'est un transfert de toutes ces infos en même temps que lorsque je change de place cette personne dans mon classement. quand elle passe 2 et que celle du dessous passe 1.
    Voilà, en espérant avoir été clair.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 123
    Par défaut
    Oui, c'est clair, je comprends : ce que tu veux faire c'est classer les personnes selon un ordre précis que tu peux modifier. Et, logiquement, lorsque tu descend ou monte quelqu'un, il faut déplacer les autres de +1 ou de -1, en fonction de s'ils étaient avant ou après le numéro déplacé.



    Si je comprends bien, lorsque tu fait passe 1 vers 3 il faut obtenir quelque chose du genre:
    1 devient 3
    ---
    2 devient 1
    3 devient 2
    ---
    3 devient 4
    4 devient 5
    5 devient 6
    6 devient 7
    7 devient 8
    etc.

    On peut obtenir ceci à l'aide de trois variable et de trois requêtes MySQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ancienNumero = '1'; //Ancien numéro
    $nouveauNumero = '3'; //Nouveau numéro
    $id = '5'; //id de celui que tu désire déplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //on enlève 1 à tous les numéros plus bas que la nouvelle position
    mysql_query("UPDATE joueur1 SET numero = numero - 1 WHERE numero < $nouveauNumero")or die(mysql_error());
     
    //on ajoute 1 à tous les numéros plus haut ou égaux à la nouvelle position
    mysql_query("UPDATE joueur1 SET numero = numero + 1 WHERE numero >= $nouveauNumero")or die(mysql_error());
     
    //on modifie le numéro que tu as déplacé 
    mysql_query("UPDATE joueur1 SET numero = $nouveauNumero WHERE id = $id")or die(mysql_error());
    Je n'ai pas testé mais je crois bien que ça devrait fonctionner lorsque tu passe d'un petit numéro vers un plus grand (par exemple de 1 vers 3). Toutefois, il va falloir adapter les requete pour que ça fonctionne lorsque tu passe d'un grand numéro vers un plus petit (par exemple de 3 vers 1).

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 139
    Par défaut
    Citation Envoyé par grafik.muzik Voir le message
    Oui, c'est clair, je comprends : ce que tu veux faire c'est classer les personnes selon un ordre précis que tu peux modifier. Et, logiquement, lorsque tu descend ou monte quelqu'un, il faut déplacer les autres de +1 ou de -1, en fonction de s'ils étaient avant ou après le numéro déplacé.



    Si je comprends bien, lorsque tu fait passe 1 vers 3 il faut obtenir quelque chose du genre:
    1 devient 3
    ---
    2 devient 1
    3 devient 2
    ---
    3 devient 4
    4 devient 5
    5 devient 6
    6 devient 7
    7 devient 8
    etc.

    On peut obtenir ceci à l'aide de trois variable et de trois requêtes MySQL:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $ancienNumero = '1'; //Ancien numéro
    $nouveauNumero = '3'; //Nouveau numéro
    $id = '5'; //id de celui que tu désire déplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    //on enlève 1 à tous les numéros plus bas que la nouvelle position
    mysql_query("UPDATE joueur1 SET numero = numero - 1 WHERE numero < $nouveauNumero")or die(mysql_error());
     
    //on ajoute 1 à tous les numéros plus haut ou égaux à la nouvelle position
    mysql_query("UPDATE joueur1 SET numero = numero + 1 WHERE numero >= $nouveauNumero")or die(mysql_error());
     
    //on modifie le numéro que tu as déplacé 
    mysql_query("UPDATE joueur1 SET numero = $nouveauNumero WHERE id = $id")or die(mysql_error());
    Je n'ai pas testé mais je crois bien que ça devrait fonctionner lorsque tu passe d'un petit numéro vers un plus grand (par exemple de 1 vers 3). Toutefois, il va falloir adapter les requete pour que ça fonctionne lorsque tu passe d'un grand numéro vers un plus petit (par exemple de 3 vers 1).
    Ce n'est pas aussi compliqué, je veux simplement pouvoir inverser 2 personnes. Si 1 devient 3, alors 3 devient 1. En tout cas, merci de ta réponse, je vais essayer ce soir ton code et tenter de le modifier pour qu'il réponse à ma demande. .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/06/2008, 23h04
  2. [SQL] Faire une recherche plus modification dans base sql
    Par ju3979 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 09/08/2007, 17h26
  3. [SQL] Problème insertion dans Base SQL après saisie d'un formulaire
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 15/05/2007, 13h44
  4. Builder Borland C++ 6 : Ecrire dans base SQL
    Par AngelFire dans le forum C++Builder
    Réponses: 1
    Dernier message: 08/05/2007, 22h40
  5. [MySQL] Supprimer entrée dans base sql par un simple clique
    Par mickado dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 29/03/2007, 17h15

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