IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Lien classe bdd et manager


Sujet :

PHP & Base de données

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 ?

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Je ne suis pas sûre que ça ait un rapport avec ton problème, mais il y a une erreur dans ta fonction :

    Les indexes du tableau de la fonction execute doivent être les marqueurs de la requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $query ='INSERT INTO t_commentaire (COM_DATE, COM_AUTEUR, COM_CONTENU) VALUES (NOW(), :auteur, :contenu)';
    $req = $bdd->prepare($query);
    $req->execute(array(
       ':auteur' => $_POST['auteur'],
       ':contenu' => $_POST['commBillet'],
    ));
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Ok ça marche !

    Visiblement, ce n'est pas ça, j'ai pensé à un problème de PDO, mais même en encadrant ma requête d'un PDO::FETCH_ASSOC, j'ai toujours le même retour...

  4. #4
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Est-ce qu'on peut voir le code qui utilise la fonction et le message d'erreur exact ?
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Oui, alors voici le code complet :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    <?php
     
    include_once('_config.php');
     
    if(isset($_GET['id']))
    {
        $billet_id = $_GET['id'];
        $manager = new billetManager();
        $billet = $manager->getBilletById($billet_id);
        $commentaireassocie = new commentaireManager;
        $commentaires = $commentaireassocie->getCommentaires($billet_id);
    }
    else {
        $billet = new Billet;
        $commentaires = new Commentaire;
    }
     
    if(isset($_POST['id']))
    {
        $comm_id = $_POST['id'];
        $ajoutcommentaire = new commentaireManager;
        $addCommentaire = $ajoutcommentaire->addCommentaire($comm_id);
    }
     
     
     
     
    include_once(PARTIAL . '_head.php');
    include_once(PARTIAL . '_nav.php');
     
    ?>
     
    <div id="contenu">
        <?php foreach ($billet as $billet_unique): ?>
        <article>
            <header>
                <h1 class="titreBillet">Billet numéro <?php echo $billet_unique->id; ?></h1>
                <time><?= $billet_unique->date; ?></time>
            </header>
            <p><?= $billet_unique->contenu; ?></p>
        </article>
        <hr />
        <?php endforeach ?>
        <header>
            <h3 id="titreReponses">Commentaires :</h3>
        </header>
     
     
     
    <?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>
     
     
    <?php include_once(PARTIAL . '_footer.php'); ?>
    Donc tout est bien récupéré, les billets, les commentaires déjà présents, à partir des classes billetmanager et commentairemanager.

    Et voici donc le message d'erreur quand je clique sur "Envoyer" :

    Fatal error: Class 'bddmanager' not found in C:\Users\agaut\Desktop\P3\P3_V8\entity\commentaireManager.php on line 5

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ...la classe bddmanager n'est pas trouvé. Or, elle existe bien,...
    OK, encore faudrait-il inclure le fichier...
    Où est-il inclus ?
    Dans _config.php ?

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    J'ai un autoload :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?php
    // show errors if not in php.ini
    ini_set('display_errors','on');
    error_reporting(E_ALL);
     
    // autoload all class in entity folder
    function loadClass($class){
        include("entity/".$class.".php");
    }
    spl_autoload_register("loadClass");
    Donc normalement, à partir de là, je le récupère automatiquement avec mon extend. Et sachant que j'arrive à récupérer mes données avec ma requête select dans le même fichier, normalement le lien doit être fait non ?

    J'ai quand même tenté de passer un include_once de ma bdd dans mon fichier manager, je n'ai plus de messages d'erreur, juste une page blanche, et les données rentrées ne sont pas passées dans la base de donnée.

  8. #8
    Invité
    Invité(e)
    Par défaut
    a priori , le message d'erreur donne les infos utiles nécessaires :

    Fatal error: Class 'bddmanager' not found in C:\Users\agaut\Desktop\P3\P3_V8\entity\commentaireManager.php on line 5
    On ne peut pas chercher ni tester à ta place...

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Je sais bien, mais le problème doit être ailleurs, car lorsque je vais sur ma classe bddmanager, il m'indique bien que le commentairemanager y est associé. Du coup, je pense que c'est plus dans ma requête qu'il doit y avoir un blocage sur l'accès à la bdd, ce qui expliquerait le message, mais j'arrive pas trop à voir où, normalement tout est correct et ma requête fonctionne bien quand je la passe juste dans ma bdd..

  10. #10
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Salut

    pour moi ton probleme est simple de prime abord, il y a un soucis dans ton autoloader de classe.
    1. est ce que tu appelles ton autoload depuis la page commentaireManager.php ?
    2. est ce que que tu peux passer ton autoload en débug ? get_declared_classes() peut t'aider avant et apres.
    3. est ce que tu peux remplacer include par require dans l'autoload?
    4. est ce que tu as vérifié que les chemins sont bons ?



    merci
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  11. #11
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    <?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;
        }
    }
    juste une question bete, vu que ton constructeur n'accepte pas de parametres et que les attributs password, host, login sont en private, est ce que ça veut dire que tu mélanges du parametrage (nom du serveur de base de données, password...) avec du code ( la définition de la classe)?
    comment tu vas faire pour livrer différents environnements? (dev/validation/prod)
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  12. #12
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Salut,

    Alors, pour l'autoload, oui, je suis sur que mes liens sont bons, toutes mes classes sont dans le même dossier. Je ne l'appelle pas depuis mon manager, en revanche, je n'ai aucun soucis pour exécuter ma requête de select, c'est juste pour le insert.

    Je ne comprends pas bien ta seconde question :p En gros, j'ai ma base de données à côté, je me sers d'une classe pour paramétrer l'accès principal à cette base de données, ce qui fait que je mêle mélange paramétrage principal avec du code. Après, pour ce projet, je n'ai besoin de le bosser qu'en local, donc je t'avoue ne pas m'être trop pris la tête sur ce point la pour le moment..

  13. #13
    Membre émérite
    Avatar de gene69
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 769
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 769
    Points : 2 446
    Points
    2 446
    Par défaut
    le message d'erreur

    Fatal error: Class 'bddmanager' not found in C:\Users\agaut\Desktop\P3\P3_V8\entity\commentaireManager.php on line 5
    veut dire "écoute chez 4dr138, quand j'en suis à la ligne 5 du script commentaireManager.php (je ne te dis pas comment je suis arrivé là) je dois instancier/reconnaitre un objet de type "bddmanager", je te dis pas si j'ai cherché avec l'autoloader mais en tout cas j'ai pas trouvé la définition de la classe, ça me soule on peut pas bosser dans ses conditions j'm'arrête".

    La on a pas les noms de fichiers du code que tu montres, on pourra pas t'aider plus.

    est ce que tu as la preuve que ton auload est correctement chargé quand tu en est à la ligne 5 du script commentaireManager.php? par exemple avec un print_r(spl_autoload_functions ()); inséré en ligne 4 dudit fichier.
    PHP fait nativement la validation d'adresse électronique .
    Celui qui a inventé mysql_connect(...) or die() est déjà mort plusieurs fois.

    Utilisez le bouton résolu!

  14. #14
    Nouveau membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2017
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2017
    Messages : 41
    Points : 28
    Points
    28
    Par défaut
    Salut,

    Voici le code qui remonte quand je fais passer le print_r spl : Array ( [0] => loadClass )

    Au niveau de mes codes, j'ai donc :

    bddmanager.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <?php
     
    class bddmanager
    {
        protected $bdd;
        protected $host = "localhost";
        protected $login = "root";
        protected $password = "";
     
        public function __construct()
        {
            $bdd = new PDO('mysql:host=' . $this->host . ';dbname=monblog;charset=utf8', $this->login, $this->password);
            $this->bdd = $bdd;
        }
     
    }

    commentaireManager.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
     
    <?php
    print_r(spl_autoload_functions ());
     
    class commentaireManager extends bddmanager
    {
     
        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;
            }
        }
     
     
        /**
         * @param Commentaire $commentaire
         */
        public function addCommentaire(Commentaire $commentaire)
        {
            $bdd = $this->bdd;
                $query ='INSERT INTO t_commentaire (COM_DATE, COM_AUTEUR, COM_CONTENU) VALUES (NOW(), :auteur, :contenu)';
                $req = $bdd->prepare($query);
                while ($row = $req->fetch(PDO::FETCH_ASSOC)) {
                    $row->execute(array(
                        ':auteur' => $_POST['auteur'],
                        ':contenu' => $_POST['commBillet'],
                    ));
                }
     
                    header('Location: "index.php?action=billet&id=' . $_POST['id']);
     
        }
    }
    Et enfin, la page billet.php, où j'appelle la page commentaireManager.php (la page billet aussi, mais je n'ai pas de soucis avec cette dernière ) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
     
    <?php
     
    include_once('_config.php');
     
    if(isset($_GET['id']))
    {
        $billet_id = $_GET['id'];
        $manager = new billetManager();
        $billet = $manager->getBilletById($billet_id);
        $commentaireassocie = new commentaireManager;
        $commentaires = $commentaireassocie->getCommentaires($billet_id);
    }
    else {
        $billet = new Billet;
        $commentaires = new Commentaire;
    }
     
    if(isset($_POST['id']))
    {
        $comm_id = $_POST['id'];
        $ajoutcommentaire = new commentaireManager;
        $addCommentaire = $ajoutcommentaire->addCommentaire($comm_id);
    }
     
     
     
     
    include_once(PARTIAL . '_head.php');
    include_once(PARTIAL . '_nav.php');
     
    ?>
     
    <div id="contenu">
        <?php foreach ($billet as $billet_unique): ?>
        <article>
            <header>
                <h1 class="titreBillet">Billet numéro <?php echo $billet_unique->id; ?></h1>
                <time><?= $billet_unique->date; ?></time>
            </header>
            <p><?= $billet_unique->contenu; ?></p>
        </article>
        <hr />
        <?php endforeach ?>
        <header>
            <h3 id="titreReponses">Commentaires :</h3>
        </header>
     
     
     
    <?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>
     
     
    <?php include_once(PARTIAL . '_footer.php'); ?>
    Au cas où, je joins aussi ma page commentaire.php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    <?php
     
    class Commentaire
    {
        protected $comId;
        protected $comDate;
        protected $comAuteur;
        protected $comContenu;
     
     
        public function hydrate($donnees)
        {
            foreach ($donnees as $attribut => $valeur)
            {
                $methode = 'set'.str_replace(' ', '', ucwords(str_replace('_', ' ', $attribut)));
     
                if (is_callable(array($this, $methode)))
                {
                    $this->$methode($valeur);
                }
            }
        }
     
        public function getcomId()
        {
            return $this->comId;
        }
        public function setcomId($comId)
        {
            $this->id = $comId;
        }
     
     
        public function getcomDate()
        {
            return $this->comDate;
        }
        public function setDate($comDate)
        {
            $this->date = $comDate;
        }
     
     
        public function getcomAuteur()
        {
            return $this->comAuteur;
        }
        public function setAuteur($comAuteur)
        {
            $this->auteur = $comAuteur;
        }
     
     
        public function getcomContenu()
        {
            return $this->comContenu;
        }
        public function setcomContenu($comContenu)
        {
            $this->contenu = $comContenu;
        }
     
    }
    Le pire, c'est que ce doit être un truc tout con, mais là j'ai beau avoir encore cherché ce week-end, ça ne me donne toujours rien...

Discussions similaires

  1. Lien entre BDD
    Par laurent00 dans le forum Access
    Réponses: 3
    Dernier message: 16/03/2007, 14h36
  2. [MySQL] Lien image bdd
    Par pod1978 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 07/12/2006, 11h02
  3. [2.0][C#] Classe BDD Access
    Par Seth77 dans le forum Accès aux données
    Réponses: 7
    Dernier message: 15/11/2006, 11h33
  4. Insertion Lien ds BDD a partir d'un formulaire PHP
    Par johnkro dans le forum Langage
    Réponses: 5
    Dernier message: 25/07/2006, 08h30
  5. Liens entre BDD Access
    Par sufrine dans le forum Access
    Réponses: 1
    Dernier message: 12/06/2006, 13h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo