Bonsoir, je suis entrain de faire le tutoriel de grafikart sur le portfolio.
j'en suis à la partie admin, quand je veux afficher mes informations dans mon foreach rien ne ce passe

panel.php :

<?php
    require '../core/includes.php';
    require '../partials/header.php';
    $title = 'Administration';
    // Delete
    if(isset($_GET'delete']))
    {
        $id = $db->quote($_GET'delete']);
        $db->query("DELETE FROM news WHERE id=$id");
        header('Location: panel.php');
        die();
    }
    // News
    $req = $db->query('SELECT id, auteur, titre, content FROM news');
    $news = $req->fetch();
?>

<h1>Les news</h1>

<p>
    <a href="edit-news.php" class="btn btn-success">
        Ajouter une news
    </a>
</p>

<table class="table table-striped">
    <thead>
        <tr>
            <th>
                Id
            </th>
            <th>
                Auteur
            </th>
            <th>
                Titre
            </th>
            <th>
                Content
            </th>
        </tr>
    </thead>
    <tbody>
        <?php foreach($news as $category): ?>
            <tr>
                <td>
                    <?= $category'id']; ?>
                </td>
                <td>
                    <?= $category'auteur']; ?>
                </td>
                <td>
                    <?= $category'titre']; ?>
                </td>
                <td>
                    <?= $category'content']; ?>
                </td>
            </tr>
        <?php endforeach; ?>
    </tbody>
</table>

<?php require '../partials/footer.php'; ?>

quand je met fetchAll() rien ne ce passe et quand je met fetch il me dit : Warning: Invalid argument supplied for foreach()
Merci de votre aide ..

2 réponses


En faisant un var_dump de $news, qu'est-ce que ça te retourne ?

Salut,

Pour te renseigner sur ton erreur tu peux lire la doc : http://php.net/manual/fr/pdo.query.php

Voici ce que j'ai pu y trouver en exemple :

<?php
function getFruit($conn) {
    $sql = 'SELECT name, color, calories FROM fruit ORDER BY name';
    foreach ($conn->query($sql) as $row) {
        print $row'name'] . "\t";
        print $row'color'] . "\t";
        print $row'calories'] . "\n";
  }
}
?>

On voit donc que ton foreach est mal construit, met ça à la place :

<?php foreach($db->query('SELECT id, auteur, titre, content FROM news') as $category): ?>
            <tr>
                <td>
                    <?= $category'id']; ?>
                </td>
                <td>
                    <?= $category'auteur']; ?>
                </td>
                <td>
                    <?= $category'titre']; ?>
                </td>
                <td>
                    <?= $category'content']; ?>
                </td>
            </tr>
        <?php endforeach; ?>

Après pour ta requête SQL tu peux utiliser heredoc comme ceci :

$sql =<<<EOD
SELECT id, auteur, titre, content 
FROM news
EOD;