must be an array, boolean given,
Bonjour tout le monde. Je sollicite votre aide.
J'ai un espace membre en objet, avec une classe membre, et un manager. Voilà mon problème, sur le page de profil, j'appelle une méthode pour récupérer et afficher les informations sur les membres selon l'ID.
Quand les infos correspondant à l'id sont bien dans la bdd, ça s'affiche correctement, par contre mon problème se situe lorsque je modifie les valeurs du paramètre de l'url. Si je touche au paramètre, pas de problème, la redirection se fait bien, mais si je modifie la valeur de l'id, par exemple profil.php?id=151fs61df5s au lieu de profil.php?id=1, ça plante avec ce message :
Citation:
"Catchable fatal error: Argument 1 passed to Membres::hydrate() must be an array, boolean given".
J'ai tenté de mettre une condition, if(lafonction==false){header(etc..);} Mais rien à faire. Voici mon code.
La méthode dans ma classe manager:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public function get($info)
{
if(is_int($info))
{
$q = $this->_db->prepare('SELECT * FROM membres WHERE id = :id');
$q->execute(array(
'id'=>$info));
$donnees = $q->fetch(PDO::FETCH_ASSOC);
return new Membres($donnees);
}
$q=$this->_db->prepare('SELECT * FROM membres WHERE pseudo=:pseudo');
$q->execute(array(
'pseudo'=>$info
));
$donnees=$q->fetch(PDO::FETCH_ASSOC);
return new Membres($donnees);
} |
Puis voici mon le code du profil:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| if (!empty($_GET['id']))
{
$_GET['id']=(int)$_GET['id'];
$membre=$manager->get($_GET['id']);
if($membre==false) //C'est ici que j'essaie de régler le souci, mais ça ne marche pas.
{
header('location:../list_membres/list_membres.php');
}
}
else
{
header('location:../list_membres/list_membres.php');
}
require_once ('../../vue/profil/profil.php'); |
Puis un bout la vue:
Code:
1 2 3
| <p>Âge: <?php echo $membre->age(); ?></p>
<p>Email: <?php echo $membre->mail(); ?></p>
<p>Signature: <?php echo $membre->signature(); ?> </p> |
Je me suis resté dessus toute la journée, mais je ne trouve pas de solution.