Fatal error
Résolu
Bonjour,
J'ai un petit soucis, je débute en php et je n'arrive pas a voir ou est le problème
j'ai le message "Fatal error: Call to undefined method Livre::titre()" à la ligne 3
Merci
J'ai un petit soucis, je débute en php et je n'arrive pas a voir ou est le problème
j'ai le message "Fatal error: Call to undefined method Livre::titre()" à la ligne 3
Merci
<?php for ($i=0;$i<count($tabLivres);$i++) { ?>
<tr>
<td><span class="html"><?php echo $tabLivres[$i]->titre() ?></span></td>
<td><?php echo $tabLivres[$i]->auteur() ?></td>
</tr>
<?php } ?>
2 réponses
-
ModérateurBonjour,
Que contient ta variable $tabLivres ?
Comment est-elle initialisée (quelles lignes de code...) ?
auteur et livre.. sont sensés être des "propriétés" (des attributs ou des noms de colonnes..) ou une "méthodes" (une fonction..) ??
Si c'est, comme je le pense, des nom de colonne d'une base de données.. il ne faut pas mettre les parenthèses.....
De plus.. un foreach serait plus "beau".
Evite également d'ouvrir/fermer des balises php partout ...
Tu peux, par exemple, faire comme ceci :<?php foreach($tabLivres as $livre) { echo '<tr> <td><span class="html">'.$livre->titre.'</span></td> <td>'.$livre->auteur.'</td> </tr>'; } ?>
-
Voici le reste de mon code
public function select_livres(){ require_once(MODEL . 'Livre.php'); $query = 'SELECT * FROM livres ORDER BY no DESC'; //select dans la table des livres $result = $this->_db->query($query); $tableau = array(); if ($result->rowcount() != 0 ){ while($row = $result->fetch()){ $tableau[] = new Livre($row->no,$row->titre,$row->auteur); //attribue a chaque colonnes les attribut de la classe Livre } } var_dump($tableau); return $tableau; }public function run(){ require_once(MODEL . 'Db.php'); $tabLivres=''; $tabLivres=Db::getInstance()->select_livres(); require_once(VUES . 'livres.php'); }class Livre{ private $_no; private $_titre; private $_auteur; public function __construct($no, $titre, $auteur){ $this->_no = $no; $this->_titre = $titre; $this->_auteur = $auteur; }
-
-
ModérateurDonc ce sont les attributs de ta class Livre ..
qui sont en PRIVATE ...
Il te faut un getter pour les récupérer dans ce cas.class Livre{ private $_no; private $_titre; private $_auteur; public function __construct($no, $titre, $auteur){ $this->_no = $no; $this->_titre = $titre; $this->_auteur = $auteur; } public function get_titre(){ return $this->_titre; } public function get_auteur(){ return $this->_auteur; } //fin de la class }<?php foreach($tabLivres as $livre) { echo '<tr> <td><span class="html">'.$livre->get_titre().'</span></td> <td>'.$livre->get_auteur().'</td> </tr>'; } ?>