Requête à une base de données erronée

Résolu
Bonjour,

Voici ce que je veux faire :

J'ai une page html que je ne veux afficher uniquement si $_SESSION['id'] est "isset". Pour ça, voici le code que j'ai :

if(isset($_SESSION['id']))
{	
	$requser = $bdd->prepare("SELECT * FROM joueurs WHERE id = ?");
	$requser->execute(array($_SESSION['id']));
	$user = $requser->fetch();
//on affiche la page html
}


Mais, en plus de ça, je veux savoir si le joueur en question a activé son compte ou pas. Si il l'a fait, on affiche la page, sinon, on le redirige vers index.php. Voici le code :
if(isset($_SESSION['id']))
{	
	$requser = $bdd->prepare("SELECT * FROM joueurs WHERE id = ?");
	$requser->execute(array($_SESSION['id']));
	$user = $requser->fetch();
	
	$requete = $bdd->query("SELECT * FROM joueurs WHERE id =".$_SESSION['id']"");
	while($data = $requete->fetch())
		{
			$etat = $data['activation'];
			if($etat == 1)
			{
                                   //On affiche la page
                        }
                        else
                        {
                                  header("Location: index.php");
                        }

                }
}


Mon problème, est que je n'ai aucune idée de comment il faut faire pour vérifier à la fois si la session est isset, et si le compte a été validé...
C'est certainement tout bête, mais si quelqu'un a une solution...

Merci d'avance pour votre aide ;)

4 réponses

  1. Contributeur
    bonsoir, je propose:
    if(isset($_SESSION['id']))
    {	
    	$requser = $bdd->prepare("SELECT * FROM joueurs WHERE id = ?");
    	$requser->execute(array($_SESSION['id']));
    	$user = $requser->fetch();
    	$requete = $bdd->query("SELECT * FROM joueurs WHERE id =".$_SESSION['id']"");
    	$data = $requete->fetch();
    			$etat = $data['activation'];
    			if($etat == 1)
    			{
                                       //On affiche la page
                            }
                            else
                            {
                                      header("Location: index.php");
                            }
    }
     else
                            {
                                      header("Location: index.php");
                            }
    1. Modérateur
      Bonjour,

      Voici ton code corrigé et remis en forme

      //TOUJOURS récupérer PROPREMENT les variables AVANT de les utiliser
      $id = isset($_SESSION['id']) ? $_SESSION['id'] : NULL;
      
      if($id){
      
        $sql = "SELECT * FROM joueurs WHERE id = :id ";
        $datas = array(':id'=>$id);
        try{
           $requser = $bdd->prepare($sql);
           $requser->execute($datas);
           $user = $requser->fetch();
        }catch (Exception $e){
            //en cas d'erreur dans la requete
            echo " Error ! ".$e->getMessage();
         }
        
       $etat = !empty($user) ? $user['activation'] : 0;
       if($etat == 1){
           //On affiche la page
        } else {
          header("Location: index.php");
          exit(); //toujours faire un exit apres une redirection !
        }
      }
      

      Cordialement, 
      Jordane                                                                 
      1. Contributeur
        suggestion:
        $id = isset($_SESSION['id']) ? $_SESSION['id'] : NULL;
        
        if($id){
        
          $sql = "SELECT * FROM joueurs WHERE id = :id ";
          $datas = array(':id'=>$id);
          try{
             $requser = $bdd->prepare($sql);
             $requser->execute($datas);
             $user = $requser->fetch();
          }catch (Exception $e){
              //en cas d'erreur dans la requete
              echo " Error ! ".$e->getMessage();
           }
          
         $etat = !empty($user) ? $user['activation'] : 0;
         if($etat == 1){
             //On affiche la page
          } else {
            header("Location: index.php");
            exit(); //toujours faire un exit apres une redirection !
          }
        }
        else {
            header("Location: index.php");
            exit(); //toujours faire un exit apres une redirection !
          }