Bonjour,
J'utilise la structure mvc sur mon site et je n'arrive pas à afficher les articles de mon site : Dans ma vue j'ai l'erreur suivante :
( ! ) Warning: Invalid argument supplied for foreach() in C:\wamp\www\boot\vue\article.php on line 38
J'ai fais un var_dump pour découvrir le contenue de ma variable $recupererarticles mais il me retourne null. C'est forcément un problème de fonction..
Dans ma vue j'ai :
article.php
<?php
global $recupererarticles;
var_dump($recupererarticles);
foreach($recupererarticles as $recupererarticle)
{
?>
<table class="table table-bordered">
<tr>
<td><?php echo $recupererarticle['titre'];?></td>
<td><?php echo $recupererarticle['article'];?></td>
</tr>
</table>
<?php
}
?>
dans mon controleur article.php
<?php
include_once('../modele/get_art.php');
include_once('../config.php');
$recupererarticles = voir_article();
foreach($recupererarticles as $key => $recupererarticle)
{
$recupererarticles[$key]['titre']= htmlspecialchars($recupererarticle['titre']);
$recupererarticles[$key]['article']= htmlspecialchars($recupererarticle['article']);
}
include_once('../vue/article.php');
?>
Et le modèle get_art.php
<?php
function voir_article()
{
global $dbh;
$query = $dbh->prepare('SELECT titre, article FROM article');
$query->execute();
return $query->fetchAll();
}
J'ai pas l'impréssion d'avoir fait un erreur, j'ai regardé mes fichiers et il se nomme bien comme cela.
Salut,
L'erreur parle d'elle-même : la variable que tu passes en paramètre de ton foreach n'est pas définie. Donc c'est que le tableau retourné par la query est vide, ce qui veut dir deux choses : soit la query n'est pas bonne, soit tes inclusions ne fonctionnent pas et je pencherais plus pour cette hypothèse. Donc commences par revoir les chemins de tes include_once().
Met un var_dump plus haut, la il est tout au bout de ton code vérifie directement ce que ta requête SQL revoie cela te permettera de savoir si ton problème vient d'elle ou d'autre part.
Bonjour,
tu include le fichier php qui utilise $recupererarticles (article.php) avant de l'avoir defini
Nop il inclue bien le fichier au bon moment. Par contre je ne sais pas ce que contient ton fichier config.php et c'est normal qu'il soit inclu après ta requete sql c'est peut etre lui le problème.
@Uneo7 Si tel était le cas, PDO retournerait une exception lors de la tentative de connexion, or là ce n'est visiblement pas le cas.
Bonjour,
dans ton article.php place un var_dump
<?php
include_once('../modele/get_art.php');
include_once('../config.php');
$recupererarticles = voir_article();
var_dump($recupererarticles);
die();
foreach($recupererarticles as $key => $recupererarticle)
{
$recupererarticles[$key]['titre']= htmlspecialchars($recupererarticle['titre']);
$recupererarticles[$key]['article']= htmlspecialchars($recupererarticle['article']);
}
include_once('../vue/article.php');
?>
Je me demande par ailleur si global $recupererarticles; dans la vue ne fouterait pas la grouille...
Parce que ta vue étant incluse dessous dans le controller, la portée naturelle de cette variable est d'être également disponible dans ta vue.