Système private chat en PHP

Résolu/Fermé
carterj Messages postés 44 Date d'inscription lundi 4 septembre 2017 Statut Membre Dernière intervention 3 août 2020 - 15 sept. 2017 à 21:53
yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 - 21 sept. 2017 à 17:07
Bonjour, mais revoilà encore avec un autre problème :(
j'ai créé un système de tchat qui fonctionne très bien aucun problème..
c'est que je veut se limité a 2 personne "genre message privé"
voici mon code
if(isset($_SESSION['pseudo']) AND isset($_POST['message']) AND !empty($_POST['message'])){
  $pseudo = $_SESSION['pseudo'];
  $message = htmlspecialchars($_POST['message']);
  $req = $db->prepare('INSERT INTO [/contents/1315-chat chat] (pseudo, message) VALUES(?, ?)');
  $req->execute(array($pseudo, $message));
     $requser = $db->prepare("SELECT * FROM users WHERE id = ?");
     $requser->execute(array($_SESSION['pseudo']));
     $user = $requser->fetch();

}

?>
// Affichage des message
 <div id="message">
     	    <?php
               $allmsg = $db->query('SELECT pseudo, message, avatar FROM chat ORDER BY id DESC LIMIT 15');
                while($msg = $allmsg->fetch())
              {
            ?>
          
                <b><a href="profile.php?id=<?= find_user_by_id('user_id') ?>"><li class="list-group-item"> <img src="<?=  get_avatar_url($user->email) ?>" alt="<?= $user->pseudo ?>" class="avatar-xs"><?= $msg ['pseudo']; ?></a>: </b>     <l><?= $msg['message']; ?></l>
              <?php
              } 
          ?>
<form method="post" action="">
           	<br/>
           	<[/html/htmlform.php3 textarea] type="text" name="message" class="chat_dox"  rows="4" placeholder="Votre message" /></textarea><br/>
     	      <input type="submit" class="dox_custum" value="Envoyer" />
           </form>


4 réponses

yg_be Messages postés 23303 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 31 octobre 2024 Ambassadeur 1 549
Modifié le 17 sept. 2017 à 11:11
bonjour,
- il faut alors enregistrer l'expéditeur et le receveur de chaque message
- il faut aussi connaitre l'identité de l'utilisateur

supposant que tu aies des champs expediteur et receveur dans la table chat, et que la variable $user contienne l'identité de l'utilisateur, tu pourrais faire ainsi:
$reqallmsg = $db->prepare('SELECT pseudo, message, avatar FROM chat WHERE (receveur = :user1) OR (expediteur = :user2) ORDER BY id DESC LIMIT 15');
$allmsg = $reqallmsg->execute(array(':user1'=>$user,':user2'=>$user))

ceci suppose que tous tes messages sont privés. il est possible d'adapter la requête si certains messages sont publics.
4