Problème de PDO dans php5...

Résolu
Bonjour,

Bonjour,

Je "bidouille" un peu de php/sql pour mon site web, j'ai une erreur que je n'arrive pas a m'expliquez.

Voici l'erreur:

Fatal error: Call to a member function execute() on a non-object in /htdocs/public/www/essai/includes/menu_start.php on line 12

Voici le code:

<?php
include("admin/verif.php");
$repon_sur=$bdd->query('SELECT * FROM sur_menu ');
$repon_sur->setFetchMode(PDO::FETCH_OBJ);
while ($surmenu = $repon_sur->fetch() )
{
$surmenu2=$surmenu->emplacement;?>
<div class="menu_haut"><?php echo $surmenu->TITRE; ?></div>
<div class="menu_fond">
<ul class="niveau1">
<?php $repcont = $bdd->prepare('SELECT * FROM menu WHERE emplacement = ? ORDER BY ordre ');
$repcont -> execute(array($surmenu2));
while ($menu_cont = $repcont->fetch() )
{ $sous_menu=$menu_cont['titre']; $url=$menu_cont['url'];
if ($url != "999")
{
echo "<li><a href=\"../index.php?page="; echo $url;echo "\">"; echo $sous_menu; echo"</a></li>";
}
else
{
echo "<li><a>"; echo $sous_menu; echo "</a>";?>
<ul class="niveau2">
<?php $reponse = $bdd->prepare('SELECT * FROM categorie WHERE surcat = ? ORDER BY ordre ');
$reponse -> execute(array($sous_menu));
while ($donnees = $reponse->fetch(PDO::FETCH_OBJ) )
{ ?>
<li><a href="index.php?page=tarif&&cate=<?php echo $donnee->cat;?>"> <?php echo $donnees->cat;?></a></li>
<?php } $reponse->closeCursor(); ?>
</ul>
<?php }} ?>
</ul>
</div>
<div class="menu_bas"></div>
<?php } $reponse->closeCursor();?>

si quelqu'un a un solution, je suis preneur.

Merci d'avance



2 réponses

  1. Salut.

    L'erreur signifie que tu ne peux pas appeler la méthode "execute()" d'un non-objet.

    Si $repcont n'est pas un objet (qui normalement devrait être un objet PDOStatement), c'est parce qu'il y a eu une erreur dans la ligne précédente.

    Pour savoir laquelle, tu peux utiliser la structure « try ... catch » car PDO gère les exceptions. Si aucune erreur sort, essaye en modifiant le niveau d'alerte (cf. ici)
    1. Merci je vais essayé le try catch cette aprem et voir ce que ca donne...
      1. Salut,

        Une petite erreur de pas grand chose... mais j'oubliais "d'ouvrir" ma bdd sql.

        Merci pour tous