comment afficher les elements d un select dans un tableau en php

Par cascador, il y a 9 ans


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

Carouge10, il y a 9 ans

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, il y a 9 ans

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

p1ngouin, il y a 9 ans

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>