Multiplication dans une requête MySQL. Problème - Apprendre-PHP.com

Rechercher
Anaska - Spécialiste des formations Open-Source

Multiplication dans une requête MySQL. Problème

Par arbilus -  6 reponses -  Le 06/02/2011 -  Flux RSS - 
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 - 

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à :

  1. <?php
  2. if (($tabletype == 't') && ($hand != ''))
  3. {
  4. die ();
  5. }
  6.  
  7. $stake = (($winnings > $tablelimit) ? $tablelimit : $winnings);
  8.  
  9. if ($tabletype == 't')
  10. {
  11. $tablelow = $tablelimit;
  12. }
  13.  
  14. if (($stake >= $tablelow) && ($stake > 0))
  15. {
  16. $sql1 = "UPDATE ". DB_POKER ." SET ".
  17. "p". $action ."name = '". $plyrname ."', ".
  18. "p". $action ."bet = 'F', ".
  19. "p". $action ."pot = '". $stake ."' ".
  20. "WHERE gameID = '". $gameID ."' ";
  21. $result = mysql_query ($sql1);
  22. $bank = $winnings - $stake;
  23. if ($tabletype == 't')
  24. {
  25. $sql2 = "UPDATE ". DB_STATS ." SET " .
  26. "tournamentsplayed = tournamentsplayed + 1 " .
  27. "WHERE ID = '". $_SESSION['idplayer'] ."' ";
  28. $result = mysql_query ($sql2);
  29. $sql3 = "UPDATE ". DB_CLICKS ." SET " .
  30. "clicks = '". $bank ."' " .
  31. "WHERE id = '". $_SESSION['idplayer'] ."' ";
  32. $result2 = mysql_query ($sql3);
  33.  
  34. }
  35. else
  36. {
  37. $sql4 = "UPDATE ". DB_CLICKS ." SET " .
  38. "clicks = '". $bank ."' " .
  39. "WHERE id = '". $_SESSION['idplayer'] ."' ";
  40. $result = mysql_query ($sql4);
  41. $sql5 = "UPDATE ". DB_STATS ." SET " .
  42. "gamesplayed = gamesplayed + 1 " .
  43. "WHERE ID = '". $_SESSION['idplayer'] ."' ";
  44. $result2 = mysql_query ($sql5);
  45. }
  46. $sql6 = "UPDATE ". DB_PLAYERS ." SET " .
  47. "gID = '". $gameID ."', " .
  48. "lastmove = '". ($time + 3) ."', " .
  49. "timetag = '". ($time + 3) ."' " .
  50. "WHERE username = '". $plyrname ."' ";
  51. $result = mysql_query ($sql6);
  52. sys_msg ($plyrname . ' ' . GAME_PLAYER_BUYS_IN . ' ' . money ($stake), $gameID);
  53. }
  54. ?>
  55. .......... (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 ?

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

 

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

 
Par arbilus -  Le 06/02/2011 - 

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 - 

J'ai aussi essayé

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

 

  et

 

  1. $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 - 

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

 

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

 

 
Par arbilus -  Le 06/02/2011 - 
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: 
  1. $result2 = mysql_query("update ".DB_CLICKS." set clicks = '".$bank."' where id = '".$_SESSION['idplayer']."' ");
  2.  
  3. $bank = $winnings-$stake
  4.  
  5. $winnings = $statsr['clicks'] et $stake = (($winnings > $tablelimit)? $tablelimit : $winnings) .
  6.  
  7. $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 - 

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 loggués sont autorisés à poster dans les forums !