[PHP] Problème bizarre

Mortinos -  
 Mortinos -
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. mya1 Messages postés 352 Statut Membre 42
     
    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
    0
  2. Mortinos
     
    Le soucis c'est que la valeur de pseudo ne viens pas d'un formulaire précédement remplie , c'est un espace membre
    0
  3. le père
     
    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) ...
    0
  4. william7007 Messages postés 344 Statut Membre 46
     
    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.
    ;-)
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Mortinos
     
    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 :)
    0
    1. Mortinos
       
      J'oubliais , une fois mon projet fini et opérationnel , dans les remerciements , je te citerais William7007 ;)
      0