Signaler

Requête à une base de données erronée [Résolu]

Posez votre question piratabord 13Messages postés jeudi 9 février 2017Date d'inscription 13 février 2017 Dernière intervention - Dernière réponse le 13 févr. 2017 à 19:13 par piratabord
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 ;)

Utile
+1
plus moins
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                                                                 
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+1
plus moins
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 !
  }
Cette réponse vous a-t-elle aidé ?  
Donnez votre avis
Utile
+0
plus moins
ok super, merci beaucoup de votre aide !!! ;)
Donnez votre avis
Utile
-1
plus moins
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");
                        }
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !