Créer un compte
Connexion

Messages lus, non lus

Pour créer et répondre aux sujets, vous devez être connecté.
Pages: 1
Auteur Message
nico44530
16/09/2012 à 00:41:55
nico44530
Membre
Bonjour,

Je viens de commencer une messagerie en php, j'ai :

- Une page envoyer.php (Avec le formulaire d'envoi)
- Une page lire.php (Fonctionne avec l'id du message pour lire le message sélectionné)
- Une page recu.php (Qui regroupe tous les messages)

Le tuto que j'ai pris est sur Le php facile - Lien du tuto-

Tous d'abord, mon premier problème est dans le header de la page, je souhaite compter les messages non lus donc je fais :


<?php
$sql = connect_sql();
$query = mysql_query('SELECT COUNT(*) AS titre FROM wa_messagerie');
$message = mysql_fetch_array($query);
if ($message['titre'] > 1) {
        echo '<span id="mercurymessagesCountValue">'.$message['titre'].'</span>';
        } else {
        echo '<span id="mercurymessagesCountValue">'.$message['titre'].'</span>';
}
mysql_close();
?>
 


Déjà, le script va me compter juste les messages lus ou non lus, dans la messagerie. Donc je pense qu'il faut créer 2 autres champs dans la table wa_messagerie exemple :

- messages_non_lus
- messages_lus

Et ensuite je vous donne la page envoyer.php, lire.php et recu.php (juste les scripts php, pas le html on s'en fout) parce que je ne sais pas comment utiliser ces dernières variables

La page reçu.php :


<?php
// on prépare une requete SQL cherchant tous les titres, les dates ainsi que l'auteur des messages pour le membre connecté
$sql = 'SELECT titre, date, wa_communaute.pseudo as expediteur, wa_messagerie.id as id_message FROM wa_messagerie, wa_communaute WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=wa_communaute.id ORDER BY date DESC';
// lancement de la requete SQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);

if ($nb == 0) {
        echo 'Vous n\'avez aucun message.';
}
else {
        // si on a des messages, on affiche la date, un lien vers la page lire.php ainsi que le titre et l'auteur du message
        while ($data = mysql_fetch_array($req)) {
                echo $data['date'] , ' - <a href="read.php?id_message=' , $data['id_message'] , '">' , stripslashes(htmlentities(trim($data['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['expediteur']))) , ' ]<br />';
        }
}
mysql_free_result($req);
mysql_close();
?>
 

La page envoyer.php :


Avant la balise html :

<?php
$base = mysql_connect ('sql2.cluster1.easy-hebergement.net', 'webastronomiea', 'nico181290');
mysql_select_db ('webastronomiea', $base);
if (isset($_POST['go']) && $_POST['go'] == 'Envoyer') {
   if (empty($_POST['destinataire']) || empty($_POST['titre']) || empty($_POST['message'])) {
      $erreur = 'Au moins un des champs est vide.';
   }
   else {
      // si tout a été bien rempli, on insère le message dans notre table SQL
      $sql = 'INSERT INTO wa_messagerie VALUES("", "'.$_SESSION['id'].'", "'.$_POST['destinataire'].'", "'.date("Y-m-d H:i:s").'", "'.mysql_escape_string($_POST['titre']).'", "'.mysql_escape_string($_POST['message']).'")';
      mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
      mysql_close();
          header('Location: /members');
      exit();
   }  
}
?>

Après la balise html :

<?php                                            
// on prépare une requete SQL selectionnant tous les login des membres du site en prenant soin de ne pas selectionner notre propre login, le tout, servant à alimenter le menu déroulant spécifiant le destinataire du message
$sql = 'SELECT wa_communaute.pseudo as nom_destinataire, wa_communaute.id as id_destinataire FROM wa_communaute WHERE id <> "'.$_SESSION['id'].'" ORDER BY pseudo ASC';  
// on lance notre requete SQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());  
$nb = mysql_num_rows ($req);  
                                                 
if ($nb == 0) {
// si aucun membre n'a été trouvé, on affiche tout simplement aucun formulaire
echo 'Vous êtes le seul membre inscrit.';  
}  
else {
 // si au moins un membre qui n'est pas nous même a été trouvé, on affiche le formulaire d'envoie de message
?>
 <form action="send.php" method="post">
 Pour : <select name="destinataire">
<?php
// on alimente le menu déroulant avec les login des différents membres du site
while ($data = mysql_fetch_array($req)) {
         echo '<option value="' , $data['id_destinataire'] , '">' , stripslashes(htmlentities(trim($data['nom_destinataire']))) , '</option>';
}
?>
</select><br />
        Titre : <input type="text" name="titre" value="<?php if (isset($_POST['titre'])) echo stripslashes(htmlentities(trim($_POST['titre']))); ?>"><br />
        Message : <textarea name="message"><?php if (isset($_POST['message'])) echo stripslashes(htmlentities(trim($_POST['message']))); ?></textarea><br />
        <input type="submit" name="go" value="Envoyer">
        </form>
<?php
}  
        mysql_free_result($req);  
        mysql_close();  
?>
 

La page lire.php :


<?php
// on teste si notre paramètre existe bien et qu'il n'est pas vide
if (!isset($_GET['id_message']) || empty($_GET['id_message'])) {
   echo 'Aucun message reconnu.';  
}  
else {
// on prépare une requete SQL selectionnant la date, le titre et l'expediteur du message que l'on souhaite lire, tout en prenant soin de vérifier que le message appartient bien au membre connecté
$sql = 'SELECT titre, date, message, wa_communaute.pseudo as expediteur FROM wa_messagerie, wa_communaute WHERE id_destinataire="'.$_SESSION['id'].'" AND id_expediteur=wa_communaute.id AND wa_messagerie.id="'.$_GET['id_message'].'"';
// on lance cette requete SQL à MySQL
$req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
$nb = mysql_num_rows($req);
                                                 
 if ($nb == 0) {
        echo 'Aucun message reconnu.';
 }
        else {
// si le message a été trouvé, on l'affiche
$data = mysql_fetch_array($req);
echo $data['date'] , ' - ' , stripslashes(htmlentities(trim($data['titre']))) , '</a> [ Message de ' , stripslashes(htmlentities(trim($data['expediteur']))) , ' ]<br /><br />';
echo nl2br(stripslashes(htmlentities(trim($data['message']))));
                                                         
// on affiche également un lien permettant de supprimer ce message de la boite de réception
echo '<br /><br /><a href="delete.php?id_message=' , $_GET['id_message'] , '">Supprimer ce message</a>';
}
mysql_free_result($req);
 mysql_close();  
}  
?>
 

Voilà j'ai tous envoyé Et je ne sais pas comment faire pour créer des messages lus ou non lus.

Et enfin mon deuxième problème : C'est quand un membre envois un message à l'autre, dans le header, il a un message reçu (enfaîte c'est une image email avec une notification comme facebook, il est noté d'un numéro selon le nombre de messages reçus) et donc ça affiche un "1" alors qu'il ne reçois aucun message.

En même temps, si vous savez comment faire pour que la notification s'affiche uniquement quand je reçois un message, parce que sinon ça sera mon nouveau post sur ce forum et autant utiliser ce post

Le script du header, est tout en haut du post

Voilà tous mes problèmes
Je crois que j'en demande vraiment beaucoup, excusez moi :/

J'espère que vous avez compris parce que moi j'ai beaucoup cherché pour trouver et je n'ai pas réussi
Merci beaucoup si vous pouvez m'aidez

Pages: 1