J'ai une question :
Comment rendre une messagerie privé en conversations (comme Facebook) qui lient 2 membres ?
J'ai pensé à créer 2 tables : "messages" et "conversations"
Ensuite je ne trouve plus comment faire
Merci pour votre aide


SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES';
CREATE SCHEMA IF NOT EXISTS `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci ;
USE `mydb` ;
-- -----------------------------------------------------
-- Table `mydb`.`membre`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`membre` (
`id` INT NOT NULL AUTO_INCREMENT ,
`mail` VARCHAR(45) NOT NULL ,
`mdp` VARCHAR(45) NOT NULL ,
`session` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`nom` TEXT NULL ,
`prenom` TEXT NULL ,
PRIMARY KEY (`id`) )
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`contact`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`contact` (
`membre` INT NOT NULL ,
`ami` INT NOT NULL ,
`date` TIMESTAMP NOT NULL ,
PRIMARY KEY (`membre`, `ami`) ,
INDEX `fk_membre_has_membre_membre1_idx` (`ami` ASC) ,
INDEX `fk_membre_has_membre_membre_idx` (`membre` ASC) ,
CONSTRAINT `fk_membre_has_membre_membre`
FOREIGN KEY (`membre` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_membre_has_membre_membre1`
FOREIGN KEY (`ami` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `mydb`.`message`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `mydb`.`message` (
`expediteur` INT NOT NULL ,
`destinataire` INT NOT NULL ,
`date` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`contenu` TEXT NOT NULL ,
PRIMARY KEY (`expediteur`, `destinataire`) ,
INDEX `fk_membre_has_membre_membre3_idx` (`destinataire` ASC) ,
INDEX `fk_membre_has_membre_membre2_idx` (`expediteur` ASC) ,
CONSTRAINT `fk_membre_has_membre_membre2`
FOREIGN KEY (`expediteur` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_membre_has_membre_membre3`
FOREIGN KEY (`destinataire` )
REFERENCES `mydb`.`membre` (`id` )
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
USE `mydb` ;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
un membre possède un id unique, un mail et mot de passe pour s'identifier, et quelques informations personnelles tels que nom, prénom et une valeur 'session' qui va permettre de savoir si le membre est connecter ou non.
<?php
$req = $connect->prepare('
SELECT * FROM msg
LEFT JOIN users ON msg_sender = users.id
WHERE msg_receiver = :id ORDER BY msg_date DESC');
$req->execute(array(':id'=>$_SESSION['id']));
if($req->rowCount() == 0){
echo '<li id="noMsg">Votre boite de réception est vide.</li>';
} else {
while($msg = $req->fetch()){
echo '<li>';
echo '<a href="messages/'.$msg['msg_id'].'" class="msgBox_nonlu">';
echo '<img src="../img/upload/'.$msg['id'].'-mini.jpg" class="floatl avatarMsg" height="50" width="50" alt="" />';
echo '<div style="line-height: 17px;">';
echo '<div class="author">'.ucfirst($msg['prenom']).' '.ucfirst($msg['nom']).'</div>';
echo '<div class="message">'.$msg['first_message'].'</div>';
echo '<div class="time">'.getRelativeTime($msg['msg_date']).'</div>';
echo '</div>';
echo '</a>';
echo '</li>';
} } $req->closeCursor(); ?>
VoilàUtilisateurs parcourant ce forum : Aucun utilisateur enregistré et 30 invités