Bonjour à tous amis codeur :)

Voilà, j'ai un site avec espace membre où mes membres peuvent éditer un statut et y répondre par commentaire :) Mais ce n'est pas évident de savoir quand notre statut à été commenter ou si quelqu'un à répondu à un commentaire sans notification...

L'idée que j'avais (mais qui ne semble pas être la bonne) était que lorsque un membre répond à un statut d'enregistrer dans une base notification l'id_membre_qui_commente, l'id_membre_du_statut, l'id_du_statut, d'enregistrer la date et d'attribuer une valeur à lu_notif (par exemple 0).

Ainsi, sur une page PHP nommé notifications.php, je pouvais récupérer les notifs lues et non lues.

Sauf que ça va pas très bien, le code n'est pas très propre je trouve et c'est pas le top...

Voici le code:

<?php include("include.php"); ?>
<?php include_once('php_func.php'); ?>
<!DOCTYPE >
<html>
    <head>
        <meta charset="utf-8"/>
        <title>Mes notifications</title>
       <link rel="stylesheet" media="screen" type="text/css" title="Design" href="design/design_index_membre.css" />
       <link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />
    </head>
    <body>

    <div id="entete"></div>

    <?php include('menu_3.php'); ?>
    <?php include('menu_4.php'); ?>

    <div id="corps">
        <h1>Mes notifications</h1>
            <div id="notification">
    <?php
    if($_SESSION'membre']) //*L'utilisateur est connecté
    {
    $bdd = bdd();
    $notif = $bdd->prepare('SELECT * FROM
    (((notification
    INNER JOIN statut
    ON notification.id_statut = statut.id_statut)
    INNER JOIN commentaire
    ON notification.id_m_com = commentaire.id_membre AND notification.id_statut = commentaire.id_statut)
    INNER JOIN membre
    ON notification.id_m_com = membre.id_membre)
    WHERE id_m_com != :id AND id_m_stat = :id
    ');
    $notif->bindValue(':id', $_SESSION'membre'], PDO::PARAM_INT);
        if($notif->execute())
        {
            while($datas = $notif->fetch())
            {
            ?>
            <div class="notification" style="<?php if($datas'notif_lu']==1) echo 'background-color:rgba(255, 204, 102, 0.5)'; else echo 'background-color:rgb(204,102,0)'; ?>">
                <a href="commentaires.php?id=<?php echo $datas'id_statut']; ?>&id_notif=<?php echo base64_encode($datas'id_notif']); ?>"><?php echo $datas'prenomPerso'].' '.$datas'nomPerso']; ?> a commenté votre statut • <?php echo date('d/m/Y', $datas'date']) . ' à '. date('H\hi', $datas'date']); ?></a>
            </div>
            <?php
            }
        }
        else
            echo "Erreur de récupération 1";
    ?>
    <?php
    $requete = $bdd->prepare('SELECT * FROM
    (((notification
    INNER JOIN statut
    ON notification.id_statut = statut.id_statut)
    INNER JOIN commentaire
    ON notification.id_m_stat = commentaire.id_membre AND notification.id_statut = commentaire.id_statut)
    INNER JOIN membre
    ON notification.id_m_stat = membre.id_membre)
    WHERE id_m_stat != :id_m AND id_m_com = :id_m ORDER BY id_notif');
    $requete->bindValue(':id_m', $_SESSION'membre'], PDO::PARAM_INT);
        if($requete->execute())
        {

            while($req = $requete->fetch())
            {
            ?>
            <div class="notification" style="<?php if($req'notif_lu']==1) echo 'background-color:rgba(255, 204, 102, 0.5)'; else echo 'background-color:rgb(204,102,0)'; ?>">
                <a href="commentaires.php?id=<?php echo $req'id_statut']; ?>&id_notif=<?php echo base64_encode($req'id_notif']); ?>"><?php echo $req'prenomPerso'].' '.$req'nomPerso']; ?> a commenté son statut • <?php echo date('d/m/Y', $req'date']) . ' à '. date('H\hi', $req'date']); ?></a>
            </div>
            <?php
            }           
        }
        else
            echo "Erreur de récupération 2";
    }
    else
        echo "Vous devez être connecté";
    ?>
            </div>
        </div>
    </div>

    </body>
</html>

Donc si vous avez des idées, je suis tout ouïe :)

Il y a juste une contrainte, faut que ce soit en PHP parce que le JavaScript je connais pas trop et j'ai pas trop envie de me casser la tête avec un truc que je connais pas encore (j'ai que 17 ans et j'apprend :) )

Merci :)

1 réponse


iMacode
Auteur

Il y a pas quelqu'un pour m'aider ? :$