Décrivez ici votre problème ou ce que vous cherchez à faire.
Bonjour tout le monde voilà, je cherche a faire tout simplement un minijeu dans lequel le joueur peut parier sur un numéro allant de 1 à 7, et a la fin du jeu , le numéro sur lequel les joueurs ont le moins parié gagne, exemple, si 2 personnes ont parier sur le numéro 5 et 4 personnes sur le numéro 1 alors le numéro 5 gagne.sauf que au moment de redistribuer les points aux vainqueurs, php leur en retire et ajoute des points a certains perdants , je sais pas ou se situe mon erreur , merci pour votre précieuse adire.

<?php

session_start();
echo "<pre>";
   print_r($_SESSION);
echo "</pre>";

echo "<pre>";
   print_r($_SESSION["adresse_mail"]);
echo "</pre>";

require_once 'connexion_base_de_donnees.php'; /*ici je procède a l'enregistrement du pari du client ainsi qu'a son adresse mail qui me permettra de l'identifier dans ma base de données*/

$req=$pdo->prepare ("INSERT INTO pariduclient SET adresse_mail= ?,position=?,mise=?");
$req->execute([$_SESSION["adresse_mail"],$_POST['position'],$_POST['mise']]);

$sel=$pdo->prepare("SELECT * FROM pariduclient WHERE position = ? and mise=?");/*ici je fais une requete pour afficher tous les joueurs ayant choisis le numéro 1 comme position et ayant misé la meme somme que moi, dans cet exemple la on supposera que la mise est de 200, puis je compte le nombre total que je meet dans la variable population1*/

$sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute (array(1,$_POST['mise']));
        $tab=$sel->fetchAll();
        echo "<pre>";
   print_r($tab);
echo "</pre>";
$population1=count($tab);
echo $population1;

$sel=$pdo->prepare("SELECT * FROM pariduclient WHERE position = ? and mise=?");/*ici je fais une requete pour afficher tous les joueurs ayant choisis le numéro 2 comme position et ayant misé la meme somme que moi, dans cet exemple la on supposera que la mise est de 200, puis je compte le nombre total que je meet dans la variable population2, et j'ai fait la meme chose jusqu'a la position 7*/
$sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute (array(2,$_POST['mise']));
        $tab=$sel->fetchAll();
        echo "<pre>";
   print_r($tab);
echo "</pre>";
$population2=count($tab);
echo $population2;

/*ici je crée un tableau associatif (tableau_des_populations) qui contiendra les nombres de parieurs pour chaque position , de la 1 jusqu'à la 7*/

$tableau_des_populations=[

1=>$population1,
2=>$population2,
3=>$population3,
4=>$population4,
5=>$population5,
6=>$population6,
7=>$population7,
];
echo "<pre>";
   print_r($tableau_des_populations);
echo "</pre>";

asort($tableau_des_populations);/*j'ai décidé que le numéro qui sera tiré au sort comme numéro gagnant sera celui sur lequel les parieurs auront le moins misé, exemple: si 2 personnes parient sur le numéro 5 et que 4 personnes parient sur le numéro 1, le numéro 5 sera donc le numéro gagnant, j'utilise donc la fonction asort afin de faire le tri du tableau en ordre croissant*/

echo "<pre>";
   print_r($tableau_des_populations);
echo "</pre>";

/*ici j'isole la première ligne de mon tableau précédemment trié puisque c'est elle qui contiendra en guise de clé le numéro gagnant et en guise de valeur le nombre de personnes ayant parié sur le dit numéro gagnant*/
$i = 0;
foreach($tableau_des_populations as $gagnant =>$nombre) {
  if($i==1) break;
  $i++;

echo( 'le numéro gagnant est le p_ '.$gagnant .'  valeur  '.$nombre );

echo( 'voici la liste des gagnants du pari de '.$_POST['mise']  );} /*ici j'affiche la liste des parieus ayant parié sur le numéro gagnant et ayant misé la meme somme que moi c'est a dire 200 dans notre exemple */

require_once 'connexion_base_de_donnees.php';

$sel=$pdo->prepare("SELECT adresse_mail FROM pariduclient WHERE position = ? and mise=?");
$sel->setFetchMode(PDO::FETCH_ASSOC);
        $sel->execute([$gagnant,$_POST['mise']]);
        $tab=$sel->fetchAll();
echo "<pre>";
   print_r($tab);
echo "</pre>";

require_once 'connexion_base_de_donnees.php'; /*voici là ou se situe mon problème, lorsque je veux redistribuer les gains,ici je fais une requete afin qu'une valeur de 200 soit ajouté a tous les gagnants et une valeur de 200 soit retiré a tous les perdants*/

$sel=$pdo->prepare("UPDATE pariduclient SET solde_du_compte= solde_du_compte+200 WHERE position = ? and mise=?");

$sel->execute([$gagnant,$_POST['mise']]);

require_once 'connexion_base_de_donnees.php';

$sel=$pdo->prepare("UPDATE pariduclient SET solde_du_compte= solde_du_compte-200 WHERE position != ? and mise =?");

$sel->execute([$gagnant,$_POST['mise']]); /*étrangement lorsque je fais un test dans lequel tous les parieurs ont joué une fois(ce qui veut dire que le numéro gagnant doit etre le numéro 1 et le solde du compte doit etre incrémenté de 200, ce n'est pas ce qu'il se passe c'est plutot le numéro 2 qui s'incrrémente de 200 et tous les autres numéros 1 compris se décrinmente de 200 , je vois vraiment pas ce qu'il se passe*/

Ce que je veux

Décrivez ce que vous cherchez à obtenir.

Ce que j'obtiens

Décrivez vos éventuelles erreurs ou ce que vous obtenez à la place de ce que vous attendez :(

4 réponses


je suis débutant et vraiment pas aussi habile que vous donc quel code pourrait résoudre ce probleme selon toi

et encore milles merci pour ton aide

SA MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARCHE !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! c'est incroyable meeeeeeeeeeeeeeeeeeeeeeeeeeerciiiiiiiiii JRCODE

mais tu disais que c'etait une affaire de mémoire , j'ai pas très bien compris le pourquoi de ce probème là, sa me sera très utile de savoir comment les choses fonctionnent afin d'éviter certaines erreurs plus tard