Multiplication dans une requête MySQL. Problème

Rechercher

Multiplication dans une requête MySQL. Problème

Par arbilus  -  6 reponses  -  Le 06/02/2011 16:28  -  Editer  - 

Bonjour, je viens d'obtenir un script sympas pour avoir un jeux de poker. Seulement je me trouve face à un problème, en prenant large voici le code qui ajoute les gains de chaque joueur:

if(($tabletype == 't') && ($hand != '')) die();  $stake = (($winnings > $tablelimit)? $tablelimit : $winnings);  if($tabletype == 't') $tablelow = $tablelimit;  if(($stake >= $tablelow) && ($stake > 0)){ $result = mysql_query("update ".DB_POKER." set p".$action."name = '".$plyrname."', p".$action."bet = 'F', p".$action."pot = '".$stake."' where gameID = '".$gameID."' "); $bank = $winnings-$stake;if($tabletype == 't'){ $result = mysql_query("update ".DB_STATS." set tournamentsplayed = tournamentsplayed + 1 where ID  = '".$_SESSION['idplayer']."' "); $result2 = mysql_query("update ".DB_CLICKS." set clicks = '".$bank."'  where id  = '".$_SESSION['idplayer']."' ");  }else{  $result = mysql_query("update ".DB_CLICKS." set clicks = '".$bank."'  where id  = '".$_SESSION['idplayer']."' "); $result2 = mysql_query("update ".DB_STATS." set gamesplayed = gamesplayed + 1  where ID  = '".$_SESSION['idplayer']."' "); }  $result = mysql_query("update ".DB_PLAYERS." set gID = '".$gameID."', lastmove = '".($time+3)."', timetag = '".($time+3)."'  where username  = '".$plyrname."' "); sys_msg($plyrname.' '.GAME_PLAYER_BUYS_IN.' '.money($stake),$gameID); ?>.......... (etc..)

 

A première vue c'est assez compliqué Oo. Mais je ne demande pas que vous compreniez complètement ce code, j'aimerais simplement savoir comment je pourrais arriver à faire pour multiplier $bank (qui est égal à $winnings-$stake) afin que lors de l'update dans la BDD celui-ci soit multiplié .

Quand je fais $bank = 2.2*($winnings-$stake); cela ne fonctionne pas: c'est comme s'il n'y avait pas eu de multiplication.

 

Réponses apportées à cette discussion

Par Cyrano  -  Le 06/02/2011 17:02  -  Haut de page  - 

Salut Arlibus,

Pour comprendre ce code, il faudrait au moins qu'il soit lisible, tu ne crois pas ? Donc je suggère de commencer par une remise en forme dans ce style-là :

<?phpif (($tabletype == 't') && ($hand != '')){    die ();} $stake = (($winnings > $tablelimit) ? $tablelimit : $winnings); if ($tabletype == 't'){    $tablelow = $tablelimit;} if (($stake >= $tablelow) && ($stake > 0)){    $sql1 = "UPDATE ". DB_POKER ." SET ".             "p". $action ."name = '". $plyrname ."', ".             "p". $action ."bet = 'F', ".             "p". $action ."pot = '". $stake ."' ".             "WHERE gameID = '". $gameID ."' ";    $result = mysql_query ($sql1);    $bank = $winnings - $stake;    if ($tabletype == 't')    {        $sql2 = "UPDATE ". DB_STATS ." SET " .                "tournamentsplayed = tournamentsplayed + 1 " .                "WHERE ID  = '". $_SESSION['idplayer'] ."' ";        $result = mysql_query ($sql2);        $sql3 = "UPDATE ". DB_CLICKS ." SET " .                "clicks = '". $bank ."' " .                "WHERE id  = '". $_SESSION['idplayer'] ."' ";        $result2 = mysql_query ($sql3);     }    else    {        $sql4 = "UPDATE ". DB_CLICKS ." SET " .                "clicks = '". $bank ."' " .                "WHERE id  = '". $_SESSION['idplayer'] ."' ";        $result = mysql_query ($sql4);        $sql5 = "UPDATE ". DB_STATS ." SET " .                "gamesplayed = gamesplayed + 1 " .                "WHERE ID  = '". $_SESSION['idplayer'] ."' ";        $result2 = mysql_query ($sql5);    }    $sql6 = "UPDATE ". DB_PLAYERS ." SET " .            "gID = '". $gameID ."', " .            "lastmove = '". ($time + 3) ."', " .            "timetag = '". ($time + 3) ."' " .            "WHERE username = '". $plyrname ."' ";    $result = mysql_query ($sql6);    sys_msg ($plyrname . ' ' . GAME_PLAYER_BUYS_IN . ' ' . money ($stake), $gameID);}?>.......... (etc..)

 

 

Pas mieux comme ça ?

Ensuite, la question qui me vient est la suivante : as-tu essayé de faire afficher tes variables avant et après l'opération ?, quelque chose comme ceci par exemple ?

echo("<pre>Données de départ :\n");var_dump($winnings ." - ". $stake ." = ". $winnings - $stake);echo("</pre>\n");$bank = ($winnings - $stake) * 2.2;echo("<pre>Résultat :\n");var_dump($bank);echo("</pre>\n");

 

Sinon, qu'as-tu essayé et quel résultat as-tu obtenu ?

 
Par arbilus  -  Le 06/02/2011 17:41  -  Haut de page  - 

Je ne peux pas vraiment voir d'echo dans ce script. Cependant je peux voir à quoi ressemble le résultat de $bank à travers le résultat uploadé dans ma BDD.

J'ai essayé de faire:

$bank2 = ($winnings - $stake);

$bank = $bank2 * 2;

Mais ça fait planté le script complétement (on peut plus s'inscrire sur une table)

Et quand je fait

  1. $bank = ($winnings - $stake) * 2.2;

Cela équivaux à ajouter dans la BDD:

  1. $bank = ($winnings - $stake);
 
Par arbilus  -  Le 06/02/2011 17:46  -  Haut de page  - 

J'ai aussi essayé

$bank2 = 2.2*$winnings - 2.2$stake;

 

et

 

$bank2 = 2.2($winnings - $stake);

 

Mais là encore c'est comme s'il ne détecté pas la multiplication .

 

 
Par arbilus  -  Le 06/02/2011 17:47  -  Haut de page  - 

Désolé, pour la 1ere c'était

 

$bank2 = 2.2*$winnings - 2.2*$stake;
 
Par arbilus  -  Le 06/02/2011 18:55  -  Haut de page  - 

C'est difficile à dire mais ce sera compliqué de faire un echo avec ce script il faudrait encore que je sache où le placé car les pages sont imbriquées etc..) .

Cependant je peux voir les résultats lors de l'update dans la BDD.

En résumé on a:

$result2 = mysql_query("update ".DB_CLICKS." set clicks = '".$bank."'  where id  = '".$_SESSION['idplayer']."' ");  Où $bank = $winnings-$stake  Où $winnings = $statsr['clicks'] et $stake = (($winnings > $tablelimit)? $tablelimit : $winnings) . Où $tablelimit = $cr['tablelimit']

 

Il faudrait arriver à multiplier $bank par un chiffre. Et je pense que le problème vient de $stake .

 
Par Cyrano  -  Le 06/02/2011 19:43  -  Haut de page  - 

Je ne saisis pas comment tu t'y es pris pour ne pas pouvoir tester tout ce qui doit l'être dans ton code. N'as-tu pas installé ce script en local pour le tester avant mise en ligne ?

 

Ajouter une réponse à la discussion

Seuls les membres connectés sont autorisés à poster dans les forums !

Identifiez-vous
Join |  ID/MDP? |