Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de double gain^^

Anonyme
    26 novembre 2005 à 14:04:54

    Bonjour tous le monde :)

    Voilà, j'ai fait un script pour mettre à jour les ressources des joueurs dans mon jeu php, et la lors du test, horreur!! Les joueur gagne deux fois plus que ce qu'ils devraient gagner :o

    Voici le petit code: (je test juste pour les planche pour le momment ;) )

    mysql_connect("localhost" , "root" , "");
    mysql_select_db("age_sombre");

    $reponse = mysql_query("SELECT * FROM ressources");
    while ($donnees = mysql_fetch_array($reponse) )
    {
    $pseudo = $donnees['pseudo'];
    $planche = $donnees['planche'];
    $planche_tour = $donnees['planche_tour'];
    $planche_totale = $planche + $planche_tour;
    mysql_query("UPDATE ressources SET planche = '" . $planche_totale . "' WHERE pseudo = '" . $pseudo . "'")or die (mysql_error());
    }

    ?>


    Voilà bah si quelqu'un voit pourquoi les gains sont doublé qu'il me le dise :)


    ps: trop bien ce nouveau forum ;)
    • Partager sur Facebook
    • Partager sur Twitter
      26 novembre 2005 à 14:10:53

      Hello,

      Et si tu essaye comme ca :
      mysql_connect('localhost' , 'root' , '');
      mysql_select_db('age_sombre');

      $reponse = mysql_query(' SELECT * FROM ressources ');
      while ($donnees = mysql_fetch_array($reponse) )  {
        $pseudo = $donnees['pseudo'];
        mysql_query('UPDATE ressources SET planche = planche+planche_tour WHERE pseudo = "' . $pseudo . '" ') or die (mysql_error());
      }


      Sinon je vois pas trop pourquoi il gagne deux fois plus ...
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        26 novembre 2005 à 14:15:49

        Non sa fait encore la même chose (le compte test que j'ai vérifier à gagner 280 planches au lieu de 140....), snif enfin au moins je sais comment générer les tours c'est déjà sa, plus qu'a foutre en l'aire ce problème lol :)

        ps: trop bien l'aperçu en temps réel (si sa continue vais vole le code source du forum :p )
        • Partager sur Facebook
        • Partager sur Twitter
          26 novembre 2005 à 14:20:44

          Re,

          je ne vois vraiment pas.
          Mais tu peux reduire ton code à :
          mysql_query(' UPDATE ressources SET planche = planche+planche_tour ');
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            26 novembre 2005 à 14:30:47

            Bah je croit que si je met cette requête sa va ccumulée les gains de tous les joueurs et les mettre à tous les joueurs (et si en prime sa les multiplie par deux lol :euh: )

            Enfin le blem est pas la lol je pourrait toujours tester, bon donc je vais essayer de rechercher pourquoi sa multiplie par deux les gains..... :(
            • Partager sur Facebook
            • Partager sur Twitter
              26 novembre 2005 à 14:33:40

              Euh ...

              planche cé le nombre de gains du joueur
              planche_tour cé le nombre de gains que gagne le joueur par tour

              Donc, ca devrait fonctionner.

              Essaye de faire :
              mysql_connect('localhost' , 'root' , '');
              mysql_select_db('age_sombre');

              $reponse = mysql_query(' SELECT * FROM ressources ');
              while ($donnees = mysql_fetch_array($reponse) )  {
                $pseudo = $donnees['pseudo'];
                mysql_query('UPDATE ressources SET planche = planche+1 WHERE pseudo = "' . $pseudo . '" ') or die (mysql_error());

              Normalement ca devrait s'incrementer d'1
              • Partager sur Facebook
              • Partager sur Twitter
              Anonyme
                26 novembre 2005 à 14:38:41

                Euh non: planche = nombre de planche posédée par le joueur
                planche_tour = nombre de planche produite par tour par le joueur


                Euh autrement tu peut m'expliquer pourquoi ce "planche+1" car sa ferait juste le nombre de planche possédée plus 1 sa non?
                • Partager sur Facebook
                • Partager sur Twitter
                  26 novembre 2005 à 14:50:09

                  Euh, oui, fait des tests pour savoir. Apres combine avec planche_tour ...
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2005 à 14:50:48

                    Est ce que planche_tour = planche ?? verifie cette valeur car ça peut venir de la .
                    • Partager sur Facebook
                    • Partager sur Twitter
                    Anonyme
                      26 novembre 2005 à 14:55:39

                      Non, planche tour n'est même pas du tous égale à planche (y'a une différence de 5774 pour mon compte test ;) )
                      • Partager sur Facebook
                      • Partager sur Twitter
                        26 novembre 2005 à 15:08:21

                        :D

                        En fait, le problème c'est que tu fais le update dans une boucle : a chaque joueur, il ajoute le gain à tous les joueurs.

                        Je parie que tu as deux joueurs :)

                        La bonne manière de faire serait (comme JoJo l'avait proposé à un moment) :
                        mysql_connect('localhost' , 'root' , '');
                        mysql_select_db('age_sombre');
                        mysql_query('UPDATE ressources SET planche = planche+planche_tour') or die (mysql_error());


                        Un peu plus simple :p
                        • Partager sur Facebook
                        • Partager sur Twitter
                        Anonyme
                          26 novembre 2005 à 15:15:52

                          Effectivement j'ai deux joueur (faut bien pour tester lol), donc j'ai tester ton code bah sa fait toujours pareilles^^ deux fois plus que ce qu'ils devraient gagner :o

                          Donc je pige pas, vu que c'est pas la BDD...
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 novembre 2005 à 16:22:56

                            oui mais sans Where ça va aller à tous les joueurs. essaye ça :


                            mysql_connect("localhost" , "root" , "");
                            mysql_select_db("age_sombre");

                            $reponse = mysql_query("SELECT * FROM ressources");
                            $donnees = mysql_fetch_array($reponse;

                            $pseudo = $donnees['pseudo'];
                            $planche = $donnees['planche'];
                            $planche_tour = $donnees['planche_tour'];
                            $planche_totale = $planche + $planche_tour;

                            mysql_query("UPDATE ressources SET planche = '" . $planche_totale . "' WHERE pseudo = '" . $pseudo . "'")or die (mysql_error());
                            ?>


                            là y'aura pas while. En faite je vois même pas pourquoi t'a voulu une boucle lol :D La boucle s'est pour répéter, sans boucle ça fait 1 fois c'est ce que tu cherches non ? :-°
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 novembre 2005 à 16:44:01

                              Re,

                              mysql_connect('localhost' , 'root' , '');
                              mysql_select_db('age_sombre');

                              mysql_query('UPDATE ressources SET planche = planche+planche_tour WHERE pseudo = "' . $pseudo . '" ')or die (mysql_error());


                              Voila, encore plus simple ^^

                              Je viens de comprendre. Etant donné que tu fais une boucle (comme la dit Kerwan) inutile (ici deux membres), tu multiplie par deux le nombre de points ! Donc, sans la boucle ca fontionne ^^
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 novembre 2005 à 17:03:38

                                Citation : jojo738

                                Re,

                                mysql_connect('localhost' , 'root' , '');
                                mysql_select_db('age_sombre');

                                mysql_query('UPDATE ressources SET planche = planche+planche_tour WHERE pseudo = "' . $pseudo . '" ')or die (mysql_error());



                                Voila, encore plus simple ^^

                                Je viens de comprendre. Etant donné que tu fais une boucle (comme la dit Kerwan) inutile (ici deux membres), tu multiplie par deux le nombre de points ! Donc, sans la boucle ca fontionne ^^


                                ton code est bon aussi sauf que $pseudo n'a pas été défini avant puisqu'il doit l'appeller:P



                                mysql_connect("localhost" , "root" , "");
                                mysql_select_db("age_sombre");

                                $reponse = mysql_query("SELECT * FROM ressources");
                                $donnees = mysql_fetch_array($reponse;

                                $pseudo = $donnees['pseudo'];

                                mysql_query('UPDATE ressources SET planche = planche+planche_tour WHERE pseudo = "' . $pseudo . '" ')or die (mysql_error())
                                ?>



                                Il devrait mettre tout le monde d'accord celui là :p
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 novembre 2005 à 17:44:30

                                  Lol, pas encore ^^

                                  $donnees = mysql_fetch_assoc($reponse);

                                  Donc :
                                  <?php

                                  mysql_connect('localhost' , 'root' , '');
                                  mysql_select_db('age_sombre');

                                  $reponse = mysql_query('SELECT * FROM ressources');
                                  $donnees = mysql_fetch_assoc($reponse);

                                  $pseudo = $donnees['pseudo'];

                                  mysql_query('UPDATE ressources SET planche = planche+planche_tour WHERE pseudo = "' . $pseudo . '" ') or die (mysql_error());
                                  ?>


                                  Au faite, ce code la augmente les planches du 1er de la table ressources ...
                                  Il faudrait un ID/pseudo ... car la il augmente toujours le 1er

                                  $pseudo = 'jojo738';
                                  mysql_query('UPDATE ressources SET planche = planche+planche_tour WHERE pseudo = "' . $pseudo . '" ') or die (mysql_error());
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                  Anonyme
                                    26 novembre 2005 à 18:01:11

                                    De toute façons même se code la donne deux fois plus de planche que normalement :( , autrement c'est bien pour pouvoir modifier tous les joueur que j'ai fait une boucle^^

                                    Euh autrement l'id y'a un champ dans la bdd si vous voulez, mais faudras encore faire une boucle non?
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                      26 novembre 2005 à 18:29:40

                                      utilise tu webcron pour ensuite te rajouter les planches ? si oui je peux t'aider j'ai des scripts utilisant webcron :)
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                      Anonyme
                                        26 novembre 2005 à 18:31:16

                                        Bah pas pour le momment la je fait juste le script que j'active avec un formulaire pour le test (pour easyphp quoi).
                                        • Partager sur Facebook
                                        • Partager sur Twitter

                                        Problème de double gain^^

                                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                        • Editeur
                                        • Markdown