[RESOLU] affectation d'objet

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:27

Bonjour,

J'obtiens ça comme erreur :
Fatal error: Uncaught Error: Cannot use object of type user as array in /home/lesfigueci/www/P2/connexion.php:18 Stack trace: #0 {main} thrown in /home/lesfigueci/www/P2/connexion.php on line 18

ma variable / Objet : me donne ça en print_r :
user Object ( [id] => 10 [username] => toto3 [password] => b3a8e0e1f9ab1bfe3a36f231f676f78bb30a519d2b21e6c530c0eee8ebb4a5d0 [email] => [email protected] [passwordReset] => 100011494 [privilege] => INT )
j'essaie de mettre les valeurs dans des varaibles SESSION
$_SESSION['id']=$resultat['id'];

et ma variable est un objet et est rempli grace à : $resultat=$bdd_select->fetchObject('user');

et donc je me creuse la tâte alors que cela doit etre super simple

Cela fonctionne parfaitement si je fais ça
$rowAll = $bdd_select->fetchAll();
$_SESSION['user_id'] = $rowAll[0]['id'];
$_SESSION['username'] = $rowAll[0]['username'];

Autrement dit j'aimerai récupéré la valeur unique de ma requete SQL mettre les 4 ou 5 champs dans un objet et m'en servir pour remplir des variables ou les exploiter.

Si vous pouviez m'indiquer la marche à suivre ou la bonne ligne de code pour je comprenne en la tordant dans tous les sens .

Merci d'avance

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:29

ah oui j'ai essayé ça, car cela me semblait évident mais cela ne fonction pas nonplus
$_SESSION['username']==$resultat->username;

Mammouth du PHP | 2703 Messages

07 avr. 2021, 22:33

$resultat['id'] pour un tableau
$resultat->id pour un objet

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:36

ben cela devrait fonctionner alors non ?

$_SESSION['username']==$resultat->username;

Mammouth du PHP | 2703 Messages

07 avr. 2021, 22:38

pas avec ==

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:39

Ok cela fonctionne avec un seul égale

$_SESSION['username']=$resultat->username;

j't'jure franchement un coup un égal un autre 2 pffff

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:40

pourquoi cela fonctionne avec deux égales dans cet exemple ?

class user {
public function hasPrivilege($privilege) {
return $privilege == $this->privilege;
}
}

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:43

Mais en tout cas merci cela fonctionne nickel

Mammouth du PHP | 2703 Messages

07 avr. 2021, 22:46

hasPrivilege, si le nom de la fonction a été bien choisi, retourne true ou false.
$privilege == $this->privilege compare 2 éléments, une comparaison retourne true ou false
return $privilege == $this->privilege retourne donc true ou false, et non le privilège.

Eléphant du PHP | 111 Messages

07 avr. 2021, 22:51

Ok merci de tes explications. En effet mon Has privilege compare deux chaines de caractères, d'ou le double égal si je suis bien ton raisonement