Slt,
Je n'est aucun liens mais quelques idee
Une messagerie interne a partir d'une bdd
De quoi on a besoin ?
1/ Une table qui contient les messages
2/ Une page pour lire ses messages
3/ Une page pour repondre
4/ Une page pour envoyer
5/ Une page pour supprimer
Biensure les points 2 ->5 peuvent se faire sur la meme page :)
LA base
La base doit contenir
id
id (ou nom) du posteur
id (ou nom) du destinataire
sujet du message (titre)
message
eventuellement la date et un champ pour savoir si le message a été lu ..
create table messagerie (
id int(6) not null,
id_posteur int(6) not null,
id_destinataire int(6) not null,
sujet varchar(255) not null,
message text not null,
date datetime not null,
lu int(1) not null,
PRIMARY KEY (`id`)
)type=MyISAM
Voila pour la table
lu = 1 , pas lu=0
pour la lecture il faut rechercher les messages qui apartienne au membre (Je suppose que l'id du membre est enregistré dans $_SESSION['id'])
Message non lu
=> SELECT messagerie.id as id_message , id_posteur,sujet,date,nom as posteur, lu FROM membre, messagerie WHERE id_destinataire="'.$_SESSION['id'].'" && membre.id=id_destinataire && lu=0 order by date desc;
message lu
SELECT messagerie.id as id_message, id_posteur,sujet,date,nom as posteur,lu FROM membre, messagerie WHERE id_destinataire="'.$_SESSION['id'].'" && membre.id=id_destinataire && lu=1 order by date desc;
la table membre est la table qui contient les infos des membres :)
Pour l'affichage c'est une simple boucle while.
J'ai mis 2 requete comme sa a l'affichage tu peut différencier les messages non lu et les messages lu (comme sur la messagerie de La Globule)
Tu peut aussi ajouter une chekbox pour la suppression du message
Donc tu affiche les titres en tant que liens vers une 2nd page sur laquel tu affiche le message alire
<table>
<tr><td>lu><td>date</td>titre</td><td>de</td><td>Del</td></tr>
<?php
while ($data=mysql_fetch_array($req1))
{
echo '<tr><td>Non</td> <td>'.$data['date'].'</td> <td><a href="messagerie.php?action=lire&&id='.$data['id_message'].'" title="lire ce message">'.$data['titre'].</a></td> <td>'.$data['posteur']</td> <input type="checkbox" name="del[]" value="'.$data['id_message'].'" /></td></tr>';
}
?>
$req1 est le resultat de la 1er requete si dessus
Tu fait la meme chose pour la dexieme requete ensuite tu ferme la table
sans oublier un bouton del avec un form vers del.php
L'affichage du message a lire
SELECT sujet,message,id_posteur,nom,date FROM messagerie, membre WHERE messagerie.id="'.$_GET['id'].'" && membre.id=id_posteur';
Pour l'affichage je te laisse faire :)
n'oublie pas le bouton repondre en dessous
<form methode="post">
<input type="submit" value="Repondre" />
<input type="hidden" name="id" value="'.$_GET['id'].'" />
</form>
Il faut aussi faire un update pour marquer le message comme lu
UPDATE messagerie SET lu="1" WHERE id="'.$_GET['id'];
La page del.php
tu recupere $_POST['del'] qui est un tableau
<?php
for ($i=0;$i<count($_POST['del'];$i++)
{
$sql='DELETE FROM messagerie WHERE id_destinataire="'.$_SESSION['id'].'" && id="'.$_POST['del'][$i].'"';
mysql_query($sql) or die ('Erreur SQL !!!<br/>'.$sql.'<br/>'.mysql_error());
}
?>
pour la reponse tu commence par recuperer le message (sujet, date et l'id du posteur), ensuite tu le reaffiche ainsi qu'une textarea pour la reponse.
tu met dans le formulaire un champ hidden qui contient l'id du posteur du message au quel on repond (il devient le destinataire) et un champ hidden qui contient le sujet (sinon tu fait un select avant l'insertion pour recupérer le sujet mais il faut dans ce cas passer l'id du sujet).
Pour le traitement tu fait un insert
INSERT INTO messagerie VALUES ("", "'.$_SESSION['id'].', "'.$_POST['dest'].'", "Re : '.$_POST['sujet'].'" ,"'.strip_tags($_POST['message']).'" ,"'.date('Y-m-d H:i:s').'" ,"0")
Pour l'envoie d'un message :
dans ta page tu met un form avec un champ pour le destinataire, un pour le sujet et un pour le message
Pour le destinataire je te conseil (si vous n'êtes pas trop nombreux) un select comme sa pas d'erreur de nom, si non un moteur de recherche avec un like fonctionne bien.
Pour le traitement c'est un simple insert
INSERT INTO messagerie VALUES ("", "'.$_SESSION['id'].', "'.$_POST['dest'].'", "'.strip_tags($_POST['sujet']).'" ,"'.strip_tags($_POST['message']).'" ,"'.date('Y-m-d H:i:s').'" ,"0")
Voila je crois que j'ai fait le tour
. j'espère que c'est assez clair (sa vaut pas un bon comment faire de Globule mais bon ).
Bon courage @+