CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] PDO::FETCH_ASSOC m'affiche rien...

Pflimlin
Pflimlin
Niveau 9
12 février 2013 à 06:06:37

salut, j'essaie d'obtenir une liste de mes données en bdd et dans la classe de mon manager j'ai crée la fonction suivante :

public function get()
{
$q = $this->db->db()->query('SELECT id, username, password, email FROM membres ORDER BY id DESC');

$data = $q->fetchAll(PDO::FETCH_ASSOC);

return $data;
}

puis en instanciant de la sorte :

$manager = new Managner;
$manager->get();

à l'écran, ça m'affiche seulement : Array

:(

au lieu de m'afficher ce qu'il y a en bdd.

Savez-vous à quoi est-ce dû ? :question:

merci.

deepblue
deepblue
Niveau 16
12 février 2013 à 09:09:53

Tu as fait un truc genre "echo $manager->get();" ?

vava740
vava740
Niveau 10
12 février 2013 à 09:30:14

Renseigne-toi sur la fonction var_dump (ou print_r) pour le débug, et passe par une boucle pour un affichage correct.

Pflimlin
Pflimlin
Niveau 9
12 février 2013 à 10:03:22

Salut, merci.

Comme on se retrouve mes vieux amis ! :)

Oui j'ai fait echo, finalement j'ai pu afficher des données mais il n'y a qu'une seule ligne qui apparaît. Je veux faire apparaître toutes les entrées et pas seulement une ligne.

J'ai utilisé un foreach et un while mais le problème persiste.

public function get($info)
{
$q = $this->db->db()->query('SELECT id, username, password, email, activate FROM membres ORDER BY id DESC');
$this->info = $info;
while ($data = $q->fetch(PDO::FETCH_ASSOC))
{
$d = $data;

$this->d = $d;

}
return $this->d[$this->info];

Le fetchAll quant à lui me renvoie une erreur.

Notice: Undefined index: username in C:\...\Models\RegisterManager.class.php on line 61

vava740
vava740
Niveau 10
12 février 2013 à 13:31:11

Ce que tu fais actuellement :

- Variable $this->d;
- Tant qu'on a des résultats en BDD, $this->d est égal au dernier résultat.

En gros dans chaque étape de la boucle ton $this->d est égal à la rangée actuelle de la BDD, et une fois la boucle finie ton $this->d contient uniquement la dernière rangée qui est passée dans la boucle.

Chaque rangée en BDD (que tu récupère avec $q->fetch()) te retourne un tableau indexé (chaque index étant le nom d'un champ de ta table).

Tu peux donc accéder à $this->d['username'].

En revanche, si tu veux toutes les entrées, c'est bien $q->fetchAll() qu'il faut utiliser, ça te retournera un tableau, lui-même contenant toutes les rangées. Tu auras donc un tableau qui contient tous les $this->d qui passent actuellement dans ta boucle.

Tu ne peux donc pas accéder à l'index 'username' directement, il faut d'abord sélectionner un élément du tableau (qui représente une rangée en BDD), et tu pourras alors accéder à toutes ses propriétés.

Admettons que $q->fetchAll() soit dans une variable $all :

$all[0]['username'] te donnera le nom d'utilisateur du premier membre. $all[1]['password'] te donnera le mot de passe du deuxième membre, etc...

Pflimlin
Pflimlin
Niveau 9
12 février 2013 à 22:08:11

ok, je vais faire une incrémentation et je vous tient au courant.

Pflimlin
Pflimlin
Niveau 9
13 février 2013 à 00:42:57

J'ai essayé de faire un foreach

$data = fetchAll(PDO::FETCH_ASSOC)

while ($data <= this->db->db()->lastInsertId())
{
$d = '<table border = 1>
<tr>
<th>username</th>
<th>email</th>
<th>activate</th>
</tr>
<tr>
<td>'.$data['username'].'</td>
<td>'.$data['email'].'</td>
<td>'.$data['activate'].'</td>
</tr>
</table>' ;

$this->d = $d

}

return $this->d;

mais ça ne me renvoie rien à part des erreur notice (undefined username etc.)

j'ai aussi fait un for($data ; $data <= this->db->db()->lastInsertId(); $data ++)

mais ça passe toujours pas.

Le var_dump de cette classe (var_dump($manager)) me renvoie :

object(RegisterManager)#1 (4) { ["db":protected]=> object(DBConnexion)#2 (1) { ["db":protected]=> object(PDO)#3 (0) { } } ["reg":protected]=> object(Register)#4 (6) { ["login":protected]=> NULL ["password":protected]=> NULL ["email":protected]=> NULL ["v":protected]=> NULL ["errors":protected]=> array(0) { } ["id":protected]=> NULL } ["info":protected]=> NULL ["d":protected]=> NULL }

Là je sais plus trop quoi faire pour récupérer les valeurs dans ma bdd. :(

Pflimlin
Pflimlin
Niveau 9
13 février 2013 à 05:16:49

problème réglé :ok:

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de sites web
  • Création de Jeux
  • Linux
  • Programmation
  • Internet
  • Steam Deck
  • Hardware