[RESOLU] Récupération des données d'une requete

Eléphant du PHP | 133 Messages

28 avr. 2021, 12:46

Bonjour

je souhaite récupérer dans des variables, les données d'une requête.
Mais je bug quelque part. Pouvez-vous m'aider?

Code : Tout sélectionner

$connect = $db->prepare("SELECT Id_Assos,Id_Droit FROM `t_bureau` WHERE Identifiant=:Identifiant"); $connect->bindValue(':Identifiant', $Identifiant, PDO::PARAM_STR); $connect->execute(); $session = $connect->fetchAll(PDO::FETCH_ASSOC); $Assos = $session['Id_Assos']; echo '<pre>'; print_r($Assos); echo '</pre>';

Erreur obtenue à la ligne 52

Code : Tout sélectionner

$Assos = $session['Id_Assos'];
Remarque: Index non défini: Id_Assos dans E: \ FFMO \ registration \ register.php à la ligne 52

Eléphant du PHP | 111 Messages

28 avr. 2021, 13:23

petite remarque en passant la variable $session est assez proche de la globale $_SESSION et il se peut que cela perturbe un peu tes reflexions (en tout cas les miennes c'est sûr).
si la ligne 52 est bien celle là : $Assos = $session['Id_Assos'];
alors rajoutes y // devant pour que tu puisses voir ca qu'il y a dans le tableau de résultat $Assos

Mammouth du PHP | 2703 Messages

28 avr. 2021, 13:51

https://www.php.net/manual/fr/pdostatement.fetchall.php
"Retourne un tableau contenant toutes les lignes du jeu d'enregistrements "

https://www.php.net/manual/fr/pdostatement.fetch.php
"Récupère la ligne suivante d'un jeu de résultats PDO"

la requête ne retourne qu'une ligne de résultat, ce qui n'empêche pas d'utiliser fetchall mais il faut accéder aux données en sachant que c'est un tableau de tableaux.

shadowwera
Invité n'ayant pas de compte PHPfrance

28 avr. 2021, 14:51

Salut !

L'idéal pour savoir d'où peut venir l'erreur est de print_r ton $session

Code : Tout sélectionner

echo '<pre>'; print_r($session); echo '</pre>';
Ainsi tu pourrais plus facilement voir d'où viens le problème et comment sont récupéré tes valeurs.

Eléphant du PHP | 133 Messages

28 avr. 2021, 19:12

En fait dans mon site j'en suis à la variable $_session.
Le but est:
l'utilisateur a saisie son identifiant et à partir de cette identifiant je veux récupérer Id_Assos et Id_Droit .
Ces 2 données vont permettre de naviguer dans le site de manière différente:
  • Id_Assos : permet d'accèder à des informations de sa propre association.
    Id_Droit : permet d'accèder à des fonctionnalités particulières
J'ai donc mon code (que je viens de corriger et compléter):

Code : Tout sélectionner

$connect = $db->prepare("SELECT Id_Assos, Id_Droit FROM `t_bureau` WHERE Identifiant=:Identifiant"); $connect->bindValue(':Identifiant', $Identifiant, PDO::PARAM_STR); $connect->execute(); $session = $connect->fetchAll(PDO::FETCH_ASSOC); echo '<pre>'; print_r($session); echo '</pre>'; $_SESSION['Id_Assos']= ???? $_SESSION['Id_Droit']= ???? header("Location: ../index.php");
Et je ne sais pas comment remplacer mes ????.
Une idée?

Mammouth du PHP | 2703 Messages

28 avr. 2021, 19:19


Eléphant du PHP | 133 Messages

29 avr. 2021, 13:54

Bonjour
j'espère que la logique est bonne

Code : Tout sélectionner

$connect = $db->prepare("SELECT * FROM `t_bureau` WHERE Identifiant=:Identifiant"); $connect->bindValue(':Identifiant', $Identifiant, PDO::PARAM_STR); $connect->execute(); foreach ($connect as $session) { $_SESSION['Id_Assos'] = $session['Id_Assos']; $_SESSION['Id_Droit'] = $session['Id_Droit']; $_SESSION['Identifiant'] = $session['Identifiant']; }

Mammouth du PHP | 2703 Messages

29 avr. 2021, 15:06

qu'est-ce qu'il y a dans le message pointé ?
$sql = "SELECT * FROM t_associations
INNER JOIN t_type_assos ON t_associations.Id_Type_Assos = t_type_assos.Id_Type_Assos
INNER JOIN t_assos_mere ON t_associations.Id_Assos_Mere = t_assos_mere.Id_Assos_Mere
WHERE `Id_Assos`=:Id_Assos;";
$query = $db->prepare($sql);
$query->bindValue(':Id_Assos', $_GET['Id_Assos'], PDO::PARAM_INT);
$query->execute();
$result = $query->fetch();

et un peu plus loin :
$result['Id_Type_Assos']

Eléphant du PHP | 133 Messages

29 avr. 2021, 16:23

Voici j'ai modifié pour plus de clarté

Code : Tout sélectionner

foreach ($connect as $données) { $_SESSION['Id_Assos'] = $données['Id_Assos']; $_SESSION['Id_Droit'] = $données['Id_Droit']; $_SESSION['Identifiant'] = $données['Identifiant']; }
En faisant comme ceci je pense pouvoir récupérer mes valeurs de session dans un autre fichier comme ceci:

Code : Tout sélectionner

session_start(); $Droit=$_SESSION['Id_Droit']; echo '<pre>'; print_r($Droit); echo '</pre>';

Eléphant du PHP | 133 Messages

29 avr. 2021, 16:25

qu'est-ce qu'il y a dans le message pointé ?
$sql = "SELECT * FROM t_associations
INNER JOIN t_type_assos ON t_associations.Id_Type_Assos = t_type_assos.Id_Type_Assos
INNER JOIN t_assos_mere ON t_associations.Id_Assos_Mere = t_assos_mere.Id_Assos_Mere
WHERE `Id_Assos`=:Id_Assos;";
$query = $db->prepare($sql);
$query->bindValue(':Id_Assos', $_GET['Id_Assos'], PDO::PARAM_INT);
$query->execute();
$result = $query->fetch();

et un peu plus loin :
$result['Id_Type_Assos']
Je ne comprend pas très bien la demande?