Bonjour,
Je sollicite le forum car je ne comprends pas où se cache l'erreur.
J'ai une fonction qui prend trois variables (id, table, base) et qui fait un 'SELECT' pour ensuite afficher le contenu à l'écran :
function lecture_base($titre,$table,$base){
$titre=transforme($titre);
$d=array('id'=>$titre);
$sql = "SELECT * FROM `$table` WHERE `titre`=:id";
try{
$req=$base->prepare($sql);
$req->execute($d);
$affiche=$req->fetch(PDO::FETCH_OBJ);
if(lang=="en"){
$affiche=($affiche->content);
return $affiche;
}else{
$affiche=($affiche->contenu);
return $affiche;
}
$req->closeCursor();
}
catch(PDOException $e){
echo 'Erreur : '.$e->getMessage().'<br />';
echo 'Trace : '.$e->GetTraceAsString().'<br />';
echo 'N° : '.$e->getCode();
}
}
La fonction transforme récupère une chaîne de caractères et rend la même chaîne avec uniquement des lettres a-z en minuscule.
La page index fait appel trois fois à cette fonction lecture_base :
<div id="hauteurimage">
<img src="image/2_vieillephoto.png" alt="Pascal Gonthier, enfant" title="Pascal, enfant" width="180" height="180" />
<!-- Lecture de la base de données pour récupérer le contenu -->
<?php
$affiche=lecture_base($domaine_fr,$pageCurrent,$DB_loc);
print_r($affiche);
?>
</div><!-- divhauteurimage-->
<div class="cb"></div>
<h2><?php echo $galerie; ?></h2>
<!-- Lecture de la base de données pour récupérer le contenu -->
<?php
$affiche=lecture_base($galerie_fr,$pageCurrent,$DB_loc);
print_r($affiche);
?>
<div id="gallery"> ...
</div><!--divgallery-->
<h2><?php echo $entreocean; ?></h2>
<!-- Lecture de la base de données pour récupérer le contenu -->
<?php
$affiche=lecture_base($entreocean_fr,$pageCurrent,$DB_loc);
print_r($affiche);
?>
Les deux premiers appels fonctionnent correctement et affiche le contenu de la BDD.
Le troisième appel affiche une erreur :
Notice: Trying to get property of non-object in /chemin/vers/fonction.php on line 63
La ligne 63 :
$affiche=$affiche->contenu;
En traçant le problème avec FireBugPHP, il apparaît que la ligne
$affiche=$req->fetch(PDO::FETCH_OBJ)
donne le résultat
bool/false
.
Rien de concluant n'apparaît de plus dans la console de FireBugPHP.
Comment une structure qui fonctionne correctement deux fois, peut-elle ne plus fonctionner la troisième fois ?
Les données sont présentes dans la base. La variable $titre est bien renseignée avec la bonne valeur pour aller lire la table...
Merci pour vos idées car j'en ai vraiment besoin.
Cordialement.
PS : s'il manque des informations pour expliciter plus avant le problème n'hésitez pas à me les demander.