Insersion messagerie dans page web



  • voila, j'ai utiliser se super script d'espace membre pour mon site mais le problème c'est que je n'arrvie pas à insérer la messagerie dans mon design :(

    Donc pour commencer, voici le code de ma messagerie :

    <?php
    // on commence par ouvrir la session
    session_start();

    //Indentifiants de connexion à la base de données.
    require("fonction.php");

    //Connexion à la base de données.
    mysql_connect($host,$username,$password);
    mysql_select_db($bdd_name);

    // Si la session est démarrée et si les variables $_GET['mp'] et$_GET['action'] n'existent pas, alors on affiche la page
    if($_SESSION['logged'] == true AND !isset($_GET['mp']) AND !isset($_GET['action']))
    {
    // on compte le nombre de messages non lus et dont le destinataire est le membre actuellement connecté
    $nbr_non_vus = mysql_query("SELECT COUNT(*) AS nbre FROM mp WHERE destinataire='".$_SESSION['pseudo']."' AND vu='0' AND (efface='0' OR efface='2')")or die(mysql_error());
    // on en fait un array
    $nbre_non_vus = mysql_fetch_assoc($nbr_non_vus);
    // on récupère les données sur les messages adressés au membre connecté.
    $retour = mysql_query("SELECT id, sujet, expediteur, timestamp, vu FROM mp WHERE destinataire='".$_SESSION['pseudo']."' AND (efface='0' OR efface='2') ORDER BY id DESC");
    ?>
    <table class="table">
    <caption class="caption">Boîte de réceptions</caption>
    <thead>
    <th class="th"><em>Lu</em>/<strong>Non lu (<?php echo $nbre_non_vus['nbre'];?>)</strong></th>
    <th class="th">Sujet</th>
    <th class="th">Auteur</th>
    <th class="th">Date</th>
    </thead>
    <tfoot>
    <th class="th"><em>Lu</em>/<strong>Non lu(<?php echo $nbre_non_vus['nbre'];?>)</strong></th>
    <th class="th">Sujet</th>
    <th class="th">Auteur</th>
    <th class="th">Date</th>
    </tfoot>
    <tbody>
    <?php
    // on créé une boucle
    while($donnees = mysql_fetch_assoc($retour))
    {
    // on enlève les slashs inutiles qui se seraient ajoutés
    $sujet = stripslashes($donnees['sujet']);
    $expediteur = stripslashes($donnees['expediteur']);
    $date = $donnees['timestamp'];
    // si le message n'est pas lu on le montre et on marque son sujet en gras
    if($donnees['vu'] == 0)
    {
    // on créé une ligne sur le tableau
    echo'<tr><td class="td"><strong>Non lu</strong></td><td class="td"><strong><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></strong></td><td class="td">'.$expediteur.'</td><td class="td">Le' .date('d/m/Y à Hhi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=1&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
    }
    // sinon on marque que le sujet à été lu et on met en italique
    else
    {
    // on créé une nouvelle ligne sur le tableau
    echo '<tr><td class="td"><em>Lu</em></td><td class="td"><em><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></em></td><td class="td">'.$expediteur.'</td><td class="td">Le' .date('d/m/Y ê Hhi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=1&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
    }
    }
    ?>

    </tbody>
    </table>
    <p><a href="mp.php?action=LireMpRecu">Voir les messages envoyés</a>
    <a href="mp.php?action=ecrire">Ecrire un nouveau message</a></p>
    <?php
    // on ferme la condition
    }
    // sinon si la variable $_GET['mp'] existe, si l'utilisateur est connécté et si la variable $_GET['action'] existe et contient 'lire' alors…
    elseif(isset($_GET['mp']) AND isset($_GET['action']) AND $_GET['action'] == 'lire' AND $_SESSION['logged'] == true)
    {
    $id_mp = $_GET['mp'];
    // on récupère les données où l'id est égale à l'id envoyée par l'url
    $retour = mysql_query("SELECT destinataire, sujet, expediteur, timestamp, message FROM mp WHERE id='".$id_mp."'")or die(mysql_error());
    $donnees = mysql_fetch_assoc($retour);
    // vérification pour pas qu'une autre personne que le destinataire puisse voir le message
    if($donnees['destinataire'] == $_SESSION['pseudo'])
    {
    ?>
    <table class="table">
    <thead>
    </thead>
    <tfoot>
    </tfoot>
    <tbody>
    <?php
    // on enlève les slashs inutiles
    $sujet = stripslashes($donnees['sujet']);
    $expediteur = stripslashes($donnees['expediteur']);
    // on met la date au format Jour/mois/année à heure h minutes
    $date = date('d/m/Y à Hhi', $donnees['timestamp']);
    $mp = stripslashes($donnees['message']);
    // on affiche le mp
    echo '<tr><td class="td"><h1>'.$sujet.'</h1></td></tr><tr><td class="td">Le '.$date.'</td></tr><tr><td class="td">De : '.$expediteur.'</td></tr><tr><td class="td">Message :<br /><br/>'.$mp.'</td></tr><tr><td class="td"><a href="mp.php?action=ecrire&reponse='.$id_mp.'">Répondre</a> <a href="mp.php?action=ecrire">Nouveau</a> <a href="mp.php">Revenir au menu de la messagerie</a></td></tr>';
    // on met que le message a été lu.
    mysql_query("UPDATE mp SET vu='1' WHERE id='".$id_mp."'")or die(mysql_error());
    ?>
    </tbody>
    </table>
    <?php
    }
    else
    {
    // on affiche un message d'erreur si on essaye de lire un message qui n'est pas adressé à soi-même.
    echo 'Ceci est un message privé qui ne s'adresse pas à vous mais à '.$donnees['destinataire'].'';
    // on ferme la condition "secondaire"
    }
    // on ferme la condition "primaire"
    }
    // Sinon si l'url indique qu'on veut envoyer un nouveau message ('ecrire'), on affiche un formulaire d'envoi.
    elseif(isset($_GET['action']) AND $_GET['action'] == 'ecrire' AND $_SESSION['logged'] == true)
    {
    // si la variable $_GET['reponse'] n'existe pas alors c'est un nouveau message
    if(!isset($_GET['reponse']))
    {
    ?>
    <form action="mp.php?action=traitement" method="post">
    <label>Destinataire :<br /><input type="text" name="destinataire" /></label><br />
    <label>Sujet :<br /><input type="text" name="sujet" /></label><br />
    <label>Message :<br /><textarea name="message" rows="10" cols="40"></textarea></label><br /><br />
    <input type="submit" value="Envoyer le message" />
    </form>
    <?php
    }
    // sinon c'est une réponse
    else
    {
    // on récupère les données du mp dont l'id est égale à celui auquel on veut répondre
    $retour_reponse = mysql_query("SELECT sujet, expediteur FROM mp WHERE id='".$_GET['reponse']."'");
    $donnees_reponse = mysql_fetch_assoc($retour_reponse);
    ?>
    <form action="mp.php?action=traitement" method="post">
    <!– on met RE : devant le sujet auquel on répond -->
    <label>Destinataire :<br /><input type="text" name="destinataire" value="<?php echo $donnees_reponse['expediteur']; ?>"/></label><br />
    <label>Sujet :<br /><input type="text" name="sujet" value="RE : <?php echo $donnees_reponse['sujet'];?>"/></label><br />
    <label>Message :<br /><textarea name="message" rows="10" cols="40"></textarea></label><br /><br />
    <input type="submit" value="Envoyer le message" />
    </form>
    <?php
    }
    }
    // sinon si la variable $_GET['action'] est égale à 'traitement' alors on traite les données envoyées par le fomulaire
    elseif(isset($_GET['action']) AND $_GET['action'] == 'traitement' AND $_SESSION['logged'] == true)
    {
    // si le message le sujet et le destinataire ne sont pas vide
    if(!empty($_POST['sujet']) AND !empty($_POST['destinataire']) AND !empty($_POST['message']))
    {
    // on regarde si il existe une entrée avec le pseudo du destinataire
    $nbr_entree = mysql_query('SELECT COUNT(*) AS nbre_entrees FROM membres WHERE pseudo="'.$_POST['destinataire'].'"');
    $nbr_entrees = mysql_fetch_assoc($nbr_entree);
    // si il existe
    if($nbr_entrees['nbre_entrees'] == 1)
    {
    // on sécurise les valeurs envoyées
    $sujet = addslashes(htmlentities($_POST['sujet']));
    $destinataire = addslashes(htmlentities($_POST['destinataire']));
    $message = addslashes(nl2br(htmlentities($_POST['message'])));
    $expediteur = $_SESSION['pseudo'];
    $timestamp = time();
    // on récupère le dernier message envoyé au destinataire
    $retour = mysql_query("SELECT destinataire, sujet, message FROM mp WHERE expediteur='$expediteur' ORDER BY id DESC LIMIT 0,1");
    $donnees = mysql_fetch_assoc($retour);
    // si c'est le même que celui qu'on veut envoyer
    if($donnees['destinataire'] == $destinataire AND $donnees['sujet'] == $sujet AND $donnees['message'] == $message)
    {
    // on l'enregistre pas et on affiche un message d'erreur
    echo 'Vous ne pouvez pas poster le même message 2 fois d'affilée';
    }
    // sinon ce n'est pas un double post
    else
    {
    // alors on enregistre dans la base de données
    mysql_query("INSERT INTO mp(sujet, expediteur, destinataire, message, timestamp, vu, efface) VALUES('" . $sujet . "', '" . $expediteur . "', '" . $destinataire . "', '" . $message . "', '" . $timestamp . "', '0', '0')")or die(mysql_error());
    // on met un message
    echo 'Votre message a bien été envoyé à '.$destinataire.'. Vous allez être redirigé vers votre boîte de réception dans une seconde.';
    // et on redirige vers la boîte de réception
    redirection('mp.php');
    }
    }
    // sinon le membre n'est pas enregistré dans la table
    else
    {
    // alors on affiche un message d'erreur
    echo 'Le membre à qui vous souhaitez envoyer ce message n'existe pas/plus. Vous allez être redirigé vers votre boîte de réception dans 2 secondes';
    // et on redirige vers la boîte de réception
    redirection('mp.php');

    }
    }
    // sinon tous les champs sont pas remplis
    else
    {
    // alors on affiche un message d'erreur et un lien
    echo 'Vous devez remplir tout les champs. <a href="mp.php?action=ecrire">Recommencer</a>.';
    }
    }
    // sinon si la variable $_Get['action'] est égale à 'LireMpRecu' on affiche la boîte d'envoi
    elseif($_GET['action'] == 'LireMpRecu' AND $_SESSION['logged'] == true AND !isset($_GET['mp']))
    {
    // on récupère les messages qu'on a envoyés et que l'on n'a pas supprimé
    $retour = mysql_query("SELECT id, destinataire, sujet, timestamp FROM mp WHERE expediteur='".$_SESSION['pseudo']."' AND (efface='0' OR efface='1') ORDER BY id DESC")or die(mysql_error());
    ?>
    <table class="table">
    <caption class="caption">Messages envoyés</caption>
    <thead>
    <th class="th">Sujet</th>
    <th class="th">Destinataire</th>
    <th class="th">Date</th>
    </thead>
    <tfoot>
    <th class="th">Sujet</th>
    <th class="th">Destinataire</th>
    <th class="th">Date</th>
    </tfoot>
    <tbody>
    <?php
    // on crée une boucle avec les entrées de la table
    while($donnees = mysql_fetch_assoc($retour))
    {
    // on enlève les éventuelles slashs en trop
    $sujet = stripslashes($donnees['sujet']);
    $destinataire = stripslashes($donnees['destinataire']);
    $date = $donnees['timestamp'];
    // on ajoute une ligne au tableau pour chaque message
    echo'<tr><td class="td"><a href="mp.php?mp='.$donnees['id'].'&action=lire">'.$sujet.'</a></td><td class="td">'.$destinataire.'</td><td class="td">Le' .date('d/m/Y à Hhi', $date).'</td><td class="td"><a href="mp.php?action=supprimer&suppr=2&id='.$donnees['id'].'">Supprimer ce message</a></td></tr>';
    // on ferme la boucle
    }
    ?>

    </tbody>
    </table>
    <p><a href="mp.php">Boîte de réception</a>
    <a href="mp.php?action=ecrire">Ecrire un nouveau message</a></p>
    <?php
    // on ferme la condition
    }
    // si la variable $_GET['id'] qui contient l'id du message existe, si la variable $_GET['suppr'] qui indique qui a supprimé le message (destinataire ou expéditeur) existe et si le variable $_GET['action'] est égale à 'supprimer' qui indique la suppression d'un message alors on le supprime.
    elseif(isset($_GET['action']) AND isset($_GET['suppr']) AND isset($_GET['id']) AND $_GET['action'] == 'supprimer')
    {
    $id = $_GET['id'];
    // si c'est l'expéditeur qui supprime le message alors
    if($_GET['suppr'] == 2)
    {
    // on récupère les données où l'id du message à supprimer est égale à l'id d'un message
    $retour = mysql_query("SELECT expediteur, efface FROM mp WHERE id='".$id."'")or die(mysql_error());
    // on les met dans un array
    $donnees = mysql_fetch_assoc($retour);
    // si l'expéditeur est bien le membre qui veut supprimer le message
    if($_SESSION['pseudo'] == $donnees['expediteur'])
    {
    // et si le message a déjà été supprimé par le destinataire
    if($donnees['efface'] == 1)
    {
    // on supprime l'entrée correspondante de la table
    mysql_query("DELETE FROM mp WHERE id='".$id."'")or die(mysql_error());
    // on affiche un message
    echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
    // et on redirige
    redirection('mp.php');

    }
    // sinon si le message n'a pas été supprimé par le destinataire
    elseif($donnees['efface'] == 0)
    {
    // alors on modifie le champ efface par 2 pour que le destinataire puisse encore voir le message
    mysql_query("UPDATE mp SET efface='2' WHERE id='".$id."'")or die(mysql_error());
    // on affiche un message
    echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
    // et on redirige
    redirection('mp.php');

    }
    // sinon
    else
    {
    // on affiche un message d'erreur
    echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultèrieurement.';
    }
    }
    // sinon le membre qui veut supprimer le message n'est pas l'expéditeur
    else
    {
    // donc on affiche un message d'erreur
    echo 'Vous ne pouvez pas supprimer un message que vous n'avez pas envoyé vous même.';
    }
    }
    // sinon si c'est le destinataire qui veut supprimer un message
    elseif($_GET['suppr'] == 1)
    {
    // on récupère les données sur le message que l'on veut supprimer
    $retour = mysql_query("SELECT destinataire, efface FROM mp WHERE id='".$id."'")or die(mysql_error());
    // on les met dans un array
    $donnees = mysql_fetch_assoc($retour);
    // si le destinataire du message est bien le membre qui veut supprimer le message
    if($_SESSION['pseudo'] == $donnees['destinataire'])
    {
    // et si le message a été supprimé par l'expéditeur
    if($donnees['efface'] == 2)
    {
    // alors on supprime l'entrée correspondante de la table
    mysql_query("DELETE FROM mp WHERE id='".$id."'")or die(mysql_error());
    // on affiche un message
    echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
    // et on redirige
    redirection('mp.php');

    }
    // sinon si le message n'a pas été supprimé par l'expéditeur
    elseif($donnees['efface'] == 0)
    {
    // alors on modifie la valeur de efface par 1 pour que l'expéditeur puisse encore voir le message
    mysql_query("UPDATE mp SET efface='1' WHERE id='".$id."'")or die(mysql_error());
    // on affiche un message
    echo 'Le message a été supprimé avec succès. Vous allez être redirigé vers votre boîte de réception dans 2 secondes.';
    //et on redirige
    redirection('mp.php');

    }
    // sinon
    else
    {
    // on affiche un message d'erreur
    echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultèrieurement.';
    }
    }
    // sinon le membre qui veut supprimer le message n'est pas le destinataire de celui-ci
    else
    {
    // donc on affiche un message d'erreur
    echo 'Vous ne pouvez pas supprimer un message qui ne vous a pas été envoyé.';
    }
    }
    // sinon l'action demandée n'existe pas($_GET['action'])
    else
    {
    // alors on affiche un message d'erreur
    echo 'Une erreur est survenue lors de votre demande. Veuillez recommencer ultérieurement.';
    }
    }
    // sinon on met un message d'erreur qui envoie un lien pour se connecter.
    else
    {
    echo 'Vous n'êtes pas connecté ou une erreur est survenue lors de votre demande veuillez réessayer.<a href="index.php">Se connecter</a>';
    }
    mysql_close();
    ?>

    Et voici la page dans laquelle je veux qu'elle apparaisse :

    <?php
    //Ne pas oublier de mettre le session_start()
    session_start();

    //On vérifie que le membre est connecté.
    if (isset($_SESSION['logged']) && $_SESSION['logged'] === true)
    {?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
    <head>
    <title>Farm'Z : Le jeu en ligne de gestion agricole</title>
    <meta http-equiv="content-Type" content="text/html;CHARSET=iso-8859-1" />

    <!–[if IE]>
    <link rel="stylesheet" media="screen" type="text/css" href="design_accueil_ie.css"/>
    <![endif]–> <!-- POUR IE -->

    <!--[if !IE]><–>
    <link rel="stylesheet" media="screen" type="text/css" href="design_accueil.css" />
    <!--><![endif]–>

    <SCRIPT language="Javascript">
    sfHover = function() {
    var sfEls = document.getElementById("menu").getElementsByTagName("LI");
    for (var i=0; i<sfEls.length; i++) {
    sfEls_.onmouseover=function() {
    this.className+=" sfhover";
    }
    sfEls_.onmouseout=function() {
    this.className=this.className.replace(new RegExp(" sfhover\b"), "");
    }
    }
    }
    if (window.attachEvent) window.attachEvent("onload", sfHover);
    </SCRIPT>

    </head>
    <body>

    <!– L'en-tête -->

    <div id="en_tete">

    </div>

    <div id="conteneur">

    <?php include ("include/menuderoulant.php"); ?>

    <div id="menus">

    <?php include ("include/menumoncompte.php"); ?>
    <?php include ("include/menulejeu2.php"); ?>
    <?php include ("include/menucommunaute.php"); ?>
    <?php include ("include/note.php"); ?>
    <?php include ("include/menupartenaires.php"); ?>

    </div>

    <div id="corps">

    JE VEUX QUE LA MESSAGERIE S'AFFICHE ICI !!!

    </div>

    </div>

    <?php include ("include/footer.php"); ?>

    </body>
    </html>
    <?php
    }
    else
    {?>
    Erreur : vous devez être connecté pour accéder à cette page !<br /> Allez <a href="connexion.php">ici</a> pour vous connecter.
    <?php
    }
    ?>

    Donc en gros, ce que je demande c'est de réunir ces 2 code en un seul !!!
    J'ai déjà essayer plusieurs fois mais je n'arrive pas :(
    Quelqu'un pourrait essayer de me le faire ?

    Merci d'avance ;)

    A bientôt__



  • UP !!!
    Aidez moi svp



  • ton script pour la messagerie doit etre dans un fichier

    ensuite dans ta page ou tu veux l'entierté, tu utilisises un include à l'endroit ou tu veux que ta messagerie apparaisse.

    Attention tu risques d'avoir des erreurs notamment avec la commande
    session_start qui apparaitra deux fois dans ton script final

    bon courage et j'espère que cela t'aidera


  • Administrateur

    C'est vraiment le bordel ton message, on comprend pas grand chose.

    1. utilise les balises [ CODE ] disponible dans phpBB
    2. Montre nous les pages, donnes les URL
    3. explique clairement ce que tu veux faire car dire qu'on veux que tel truc s'affiche dans tel machin, c'est pas super…


  • merci lave, ça marche ;) et désolé caaptusss, je ferais gaf la prochaine fois ;)



  • Content d'avoir pu aider :)


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.