Lien classe bdd et manager
Bonjour,
Je rencontre un petit souci depuis hier soir que je n'arrive pas à résoudre.
Dans un fichier de vue principale, j'ai une requête de création de commentaires, tel que :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
<?php if(isset($commentaires))
foreach ($commentaires as $commentaire): ?>
<p><strong><?= $commentaire['auteur'] ?><br /></strong><?= $commentaire['date_b'] ?></p>
<p><?= $commentaire['contenu']?></p>
<hr />
<?php endforeach; ?>
<p> Pour poster un commentaire, veuillez remplir ces champs :</p>
<form id="commentaire_form" action='entity/commentaireManager.php' method="POST" enctype="multipart/form-data">
<div class="row">
<label for="auteur">Votre pseudo:</label><br />
<input id="auteur" class="input" name="auteur" type="text" value="" size="30" /><br />
</div>
<div class="row">
<label for="commBillet">Votre commentaire:</label><br />
<textarea id="commBillet" class="input" name="commBillet" rows="7" cols="30"></textarea><br />
</div>
<input id="submit_button" type="submit" value="Envoyer" />
</form>
</div> |
L'affichage des commentaires est ok. Par contre, quand je l'ajoute via la classe :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
|
<?php
class commentaireManager extends bddmanager
{
public function addCommentaire()
{
$bdd = $this->bdd;
$query ='INSERT INTO t_commentaire (COM_DATE, COM_AUTEUR, COM_CONTENU) VALUES (NOW(), :auteur, :contenu)';
$req = $bdd->prepare($query);
$req->execute(array(
'COM_DATE' => $_POST['date'],
'COM_AUTEUR' => $_POST['auteur'],
'COM_CONTENU' => $_POST['commBillet'],
));
header('Location: "index.php?action=billet&id=' . $_POST['id']);
}
} |
Le message d'erreur que je recois et que la classe bddmanager n'est pas trouvé. Or, elle existe bien, dans le même dossier, tel que :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
<?php
class bddmanager
{
protected $bdd;
private $host = "localhost";
private $login = "root";
private $password = "";
public function __construct()
{
$bdd = new PDO('mysql:host=' . $this->host . ';dbname=monblog;charset=utf8', $this->login, $this->password);
$this->bdd = $bdd;
}
} |
Je rajoute juste que dans ma classe commentaireManager, j'ai une autre fonction qui marche très bien, donc l'appel à la base est bien réalisé dans celle-ci:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
|
public function getCommentaires($id = null)
{
$bdd = $this->bdd;
$query = 'SELECT COM_ID AS id, COM_DATE AS date_b, COM_AUTEUR AS auteur, COM_CONTENU AS contenu FROM T_COMMENTAIRE';
($id == null) ? $where = '' : $where = ' WHERE BIL_ID= :id ';
$query .= $where;
$query .= ' ORDER BY COM_ID desc ';
($id == null) ? $limit = 'LIMIT 0,3' : $limit = '';
$query .= $limit;
// echo $query; exit;
$req = $bdd->prepare($query);
if ($id) $req->bindParam(':id', $id);
$req->execute();
if ($req->rowCount() > 0) {
while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
// instance of a commentaire object
$commentaire = new Commentaire();
// hydrate manualy from bdd datas
$commentaire->hydrate($row);
$commentaires[] = $row;
}
return $commentaires;
}
} |
Une idée ? :)