[PHP] Problème bizarre

Bonjour,
Je vais vous expliquer mon soucis , dans mon code , on verifie d'abord si le pseudo du joueur à déjà joué aujourd'hui dans une table uniquement prévue a ça , si il a déjà joué , donc pseudo déjà présent dans la table il doit etre dirigé vers une page d'erreur !
Problème , il peut rejouer autant de fois qu'il veux !

Voyez :
[...]

mysql_select_db("xtremdl_dejajoue");

$pseudojoue = mysql_query("SELECT pseudo FROM xtremdl_dejajoue") or die(mysql_error());
$donneespseudo = mysql_fetch_array($pseudojoue);

if ($donneespseudo[pseudo] == $pseudo)
{
header("location:dejajoue.php");
}
Else
{
mysql_query("INSERT INTO xtremdl_dejajoue(id, pseudo) VALUES('', '$pseudo')");
if ($donnees['ID'] == '15')
{
echo "Vous avez gagné !";
}
else
{
echo "Vous avez perdu !";
}
}
mysql_close();

?>

Le truc c'est qu'il est bien dans la table son pseudo , donc la valeur de la variable $pseudo est juste !

Je ne comprends pas d'ou peu venir l'erreur !
Configuration: Windows Vista
Firefox 3.5.2

5 réponses

  1. je pense que le problème réside dans la condition de if; tt d'abord faut ajouter une boucle for ou bien while pr qu'il boucle sur tout le tableau, après je pense que la condition doit s'ecrire ainsi: if ($pseudojoue == $pseudo) sans lesdeux crochets!!! ca doit ressembler un ti peu à ça::

    for($i=0;$i<$donneespseudo;$i++)
    {if(isset($_POST[$donneespseudo])== $pseudo)
    là tu fais le traitement je pense que là tu vas appeler la page header("location:dejajoue.php");
    }

    PS: en fait dès fois le header ca marche pas
    1. Le soucis c'est que la valeur de pseudo ne viens pas d'un formulaire précédement remplie , c'est un espace membre
      1. Bonjour

        Le problème, c'est que tu testes TOUJOURS le premier pseudo de la base.
        la requête ("SELECT pseudo FROM xtremdl_dejajoue") extrait tous les pseudos
        ton $donneespseudo = mysql_fetch_array($pseudojoue); extrait la première réponse.
        Ensuite, tu ne traites que cette cette première réponse.

        Il faut directement compter le nombre de bonnes réponses :

        $reponse = mysql_query("SELECT count(*) as nombre FROM xtremdl_dejajoue WHERE pseudo = '$pseudo'") or die(mysql_error());
        $ligne = mysql_fetch_array($reponse);

        if ($ligne['nombre'] > 0) ...
        1. Slt
          essaie ça voir
          mysql_select_db("xtremdl_dejajoue");
          
          $joueurExiste = false;   // Variable me permetant de determiner si le joueur existe ou non
          $pseudojoue = mysql_query("SELECT pseudo FROM xtremdl_dejajoue") or die(mysql_error());
          
          if(mysql_num_rows($pseudojoue) > 0)
          {
               while(($donnespseudo = mysql_fetch_array($pseudojoue)) AND !($joueurExiste))
               {
                    if($donnespseudo['pseudo'] == $pseudo)
                    {
                            $joueurExiste = true;
                    }
                }
          }
          
          if ($joueurExiste)
          {
             header("location:dejajoue.php");
             // echo '<script>window.location="dejajoue.php"</script>'  // à utiliser si le header ne fonctionne pas.
          }
          Else
          {
                mysql_query("INSERT INTO xtremdl_dejajoue(id, pseudo) VALUES('', '$pseudo')");
                if ($donnees['ID'] == '15')
                {
                    echo "Vous avez gagné !";
                }
               else
               {
                   echo "Vous avez perdu !";
                }
          }
          mysql_close(); 
          


          Ben il y'a un truc que je ne comprend pas
          xtremdl_dejajoue c'est quoi ? le nom de la BDD ou le nom de la table ou bien la BDD et la table ont le meme nom?

          et j'espère que tu sais d'où proviens $donnees['ID']

          cdlt.
          ;-)
          1. Citation :

            "Le problème, c'est que tu testes TOUJOURS le premier pseudo de la base. "

            Exact ! Merci , je n'avais pas remarqué , je comprends donc pourquoi sous un pseudo ça marchait et pas sous un autre maintenant !

            @William7007 >

            Je viens d'essayer , ce code fonctionne parfaitement ! :D
            Le header("Location....); marche parfaitement en plus !
            Oui oui je sais d'où viens $donnees['ID'] et pour xtremdl_dejajoue , c'est le nom de la base de donnée , mais également celui de la table (peur de m'enmeller les pinceaux :D) .
            Bref , merci a CCM et a vous tous de votre aide :)
            C'est super , vous êtes géniaux :)
            1. J'oubliais , une fois mon projet fini et opérationnel , dans les remerciements , je te citerais William7007 ;)