Multiplication dans une requête MySQL. Problème
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
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 ?
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
- $bank = ($winnings - $stake) * 2.2;
Cela équivaux à ajouter dans la BDD:
- $bank = ($winnings - $stake);
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 .
Désolé, pour la 1ere c'était
$bank2 = 2.2*$winnings - 2.2*$stake;
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 .
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 ?