bonjoir j rencontre un probleme avec mon code

<?php
session_start()
?>
<!doctype html>
<html lang="fr-FR">
<head>
<title> index </title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width initial-scale=1.0">
<link rel="stylesheet" href="style_index.css">

</head>
<body>
<br />
<br />
<br />

<h1> <?php 
echo "bonjour";
    $_SESSION['login'] ;

?>
<?php
try {

        $connexion = new PDO('mysql:host=localhost;bdname=gestion_stock', 'root', '');

    }
    catch(Exception $e)
    {
    // En cas d'erreur, on affiche un message et on arrête tout
    die('Erreur : '.$e->getMessage());
    }

    $selection=$connexion->query('SELECT* FROM fournisseur');

    while ($resultats = $selection->fetch(PDO::FETCH_OBJ))
    {
        ?>
        <table align="center" border="2" cellpadding="=10" cellspacing="5">
            <tr>
                <td>
                    <?php
                    echo $resultats['identifiantf'];
                    ?>
                 </td>
            </tr>
         </table>
    <?php
    }
        $resultats->closecursor();
    ?>
    </tr>
</table>
</body>

</html>

mon code est cense recuperer les enregistrements de ma bd et les affiche dans un tablo

Ce que j'obtien

Fatal error: Call to a member function fetch() on boolean in C:\xampp\htdocs\mes projet\session-bienvenu.php on line 36

3 réponses


Bonjour,

1/ Vous faites un "fetch" en demandant de retourner un objet et non un tableau.
Pour retourner un tableau il vaut mieux ne rien mettre comme paramètre.
2/ Je ne vois pas l'intérêt de faire un tableau dans la boucle pour afficher une seule valeur.
3/ Vous fermez une ligne de tableau et en tableau en fin de code, sans l'avoir ouvert

cascador
Auteur

j ai modifier tout xa carouge xa ne donne pas toujour losk j fais un test sur ma variable connexion elle me dis Erreur : SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected

Ce n'est pas bdname mais dbname au niveau du constructeur PDO. De plus, essaye de mieux respecter les semantiques, du genre SELECT * FROM fournisseur. Ensuite, tu demandes à récupérer les entrées sous forme d'objet et tu utilises la syntaxe des tableaux, ce n'est pas cohérant : $resultats->identifiantf.

<? session_start() ?>
<!DOCTYPE html>
<head>
        <title>Titre de la page</title>
        <meta charset="utf-8" />
</head>
<body>
        <p></p>
        <p></p>

        <h1><?= "bonjour " . $_SESSION['login'] ?></h1>
        <?php
                try {
                        $connexion = new PDO('mysql:host=localhost;dbname=gestion_stock', 'root', '');
                } catch(Exception $e) {
                        // En cas d'erreur, on affiche un message et on arrête tout
                        die("Erreur : " . $e->getMessage());
                }

                $selection = $connexion->query('SELECT * FROM fournisseur');
        ?>

        <table align="center" border="2" cellpadding="10" cellspacing="5">
                <? while ($resultats = $selection->fetch(PDO::FETCH_OBJ)): ?>
                <tr>
                        <td>
                                <?= $resultats->identifiantf; ?>
                        </td>
                </tr>
                <? endwhile; ?>
        </table>
        <? $resultats->closecursor(); ?>
</body>