Résolu Fatal error: Call to a member function fetch() on a non-object

Statut
N'est pas ouverte pour d'autres réponses.

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
Bonjours, je voudrais afficher tout les message contenu dans ma base de donnée mais j'ai cette erreur qui s'affiche sur ma page : "
Fatal error: Call to a member function fetch() on a non-object in /var/www/message.php on line 6"

Voici le code :
PHP:
ini_set('display_errors', 'on');
require("class/class.php");
$bdd = new bdd();
$red = $bdd->query("SELECT * FROM message");
while($getInfo = $red->fetch(PDO::FETCH_ASSOC)){

}
 
Dernière édition:

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Oui mais là tu vas chercher dans la table "username", il faut aller chercher dans la table où tu veux stocker le message à lui envoyer :mmh:
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
PHP:
<?php
ini_set('display_errors', 'on');
session_start();
$_SESSION['username'] = "HaXGamiG";
 $host = "localhost";
    $database = "FrenchLandRP";
    $user = "root";
    $password = "root77";

    try {
        $bdd = new PDO('mysql:host='.$host.';dbname='.$database.';charset=utf8', ''.$user.'', ''.$password.'');
    }

    catch (Exception $e) {
        die('Erreur : ' . $e->getMessage());
    }

    $username = $_SESSION['username']; // ou $id = $_SESSION['id']; par exemple, je sais pas comment tu gères ton code...
    $lirecommentaire = $bdd->prepare('SELECT * FROM message WHERE receive = :username ORDER BY date DESC');
    $lirecommentaire->execute(array('username' => $username));
    while ($commentaire = $lirecommentaire->fetch()) {
        ?>
        <div class="message"><?php echo $commentaire['message']; ?> - <small>Message envoyé par <?php echo $commentaire['author']; ?></small></div>
        <?php
    }
?>

J'ai toujours une page blanche ..
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Fail, je me suis trompé de mot :rofl:
Je voulais dire ta table message, dans ta base de donnée :p
Et tu y arrives pas ? Pourquoi ?

Touche Imp. écr. Syst. => Photofiltre => Clique droit => Coller l'image => Enregister => Tu l'héberge sur prntscr.com :mmh:
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
Fail, je me suis trompé de mot :rofl:
Je voulais dire ta table message, dans ta base de donnée :p
Et tu y arrives pas ? Pourquoi ?

Touche Imp. écr. Syst. => Photofiltre => Clique droit => Coller l'image => Enregister => Tu l'héberge sur prntscr.com :mmh:
MacBook :s

y'a id, author, message, receive
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Enlève déjà le "ORDER BY date DESC" alors si tu n'as pas de champ "date" :mmh:
Pas sûr que ça retire la page blanche mais tiens moi au courant :p
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Bon, après avoir fait un essai, je constate que le code fonctionne chez moi
PHP:
<?php
    $host = "localhost";
    $database = "site";
    $user = "root";
    $password = "";

    try {
        $bdd = new PDO('mysql:host='.$host.';dbname='.$database.';charset=utf8', ''.$user.'', ''.$password.'');
    }

    catch (Exception $e) {
        die('Erreur : ' . $e->getMessage());
    }

    $username = "HaXGamiG";
    $lirecommentaire = $bdd->prepare('SELECT * FROM message WHERE receive = :username ORDER BY id DESC');
    $lirecommentaire->execute(array('username' => $username));

    while ($commentaire = $lirecommentaire->fetch()) {
?>
        <div class="message"><?php echo $commentaire['message']; ?> - <small>Message envoyé par <?php echo $commentaire['author']; ?></small></div>
<?php
    }
?>
Je pense que l'erreur vient du fait que tu as mal recopié receive et que dans ta base de donnée tu l'a appelé recieve :mmh:

3f7b2a9ab95646f0982aaf18cf75afb0.png

934076f38d0b478f8139b7e61ceb4da1.png

J'obtiens ce résultat avec mon code et ma base de donnée:
93ac65a41e1941ed9d0647c4f5a17cc3.png
 

HaXGamiG

Développeurs
Premium
Inscription
12 Mai 2014
Messages
1 470
Réactions
323
Points
14 896
RGCoins
0
Bon, après avoir fait un essai, je constate que le code fonctionne chez moi
PHP:
<?php
    $host = "localhost";
    $database = "site";
    $user = "root";
    $password = "";

    try {
        $bdd = new PDO('mysql:host='.$host.';dbname='.$database.';charset=utf8', ''.$user.'', ''.$password.'');
    }

    catch (Exception $e) {
        die('Erreur : ' . $e->getMessage());
    }

    $username = "HaXGamiG";
    $lirecommentaire = $bdd->prepare('SELECT * FROM message WHERE receive = :username ORDER BY id DESC');
    $lirecommentaire->execute(array('username' => $username));

    while ($commentaire = $lirecommentaire->fetch()) {
?>
        <div class="message"><?php echo $commentaire['message']; ?> - <small>Message envoyé par <?php echo $commentaire['author']; ?></small></div>
<?php
    }
?>
Je pense que l'erreur vient du fait que tu as mal recopié receive et que dans ta base de donnée tu l'a appelé recieve :mmh:

3f7b2a9ab95646f0982aaf18cf75afb0.png

934076f38d0b478f8139b7e61ceb4da1.png

J'obtiens ce résultat avec mon code et ma base de donnée:
93ac65a41e1941ed9d0647c4f5a17cc3.png
toujours rien :'(
 

Paul GTP

Légende vivante
VIP
Inscription
15 Août 2013
Messages
6 194
Réactions
7 545
Points
24 772
RGCoins
0
Ah, bah voilà ! :D
Avec plaisir l'ami !

J'ai déplacé ta discussion en section Résolu .

Bonne fin de nuit,
Paul GTP
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut