Tchat : message / réponse
- Accueil
- Forum
- Programmation
- PHP
- Tchat : message / réponse
FreeZiX Le 20 juin 2017 à 19:43 (Édité le 25 janvier 2019 à 17:53)
j'ai depuis un petit moment un problème avec le tchat et plus précisement avec le systeme de réponse.
Voile ce que j'ai fait :
<?php
session_start();
include('function/bdd.php');
if(isset($_POST['submessage'])){
if(!empty($_POST['message'])){
$pseudo = htmlspecialchars($_SESSION['pseudo']);
$message = htmlspecialchars($_POST['message']);
$insertmsg = $bdd->prepare('INSERT INTO chat (pseudo, message) VALUES(?, ?)');
$insertmsg->execute(array($pseudo, $message));
header('Location: ?q=Chat');
} else {
echo "Message !!!";
}
}
?>
<div class="container">
<?php if(isset($_SESSION['id'])) { ?>
<section class="chat">
<div class="message-input" id="message">
<?php
$allmsg = $bdd->query('SELECT * FROM chat ORDER BY id ASC');
while($msg = $allmsg->fetch()){ ?>
<?php if($msg['pseudo'] != $pseudo) {?>
<span>
<a href=""><img height="22px" src="img/corbeille.png"></a><div class="pseudo"><?= htmlspecialchars($msg['pseudo']); ?></div>
<div class="message"> <?= htmlspecialchars(stripcslashes($msg['message'])); ?></div>
</span>
<?php } else {
echo "cc";
}
?>
<?php } ?>
</div>
<form action="" method="POST">
<div class="input-write">
<textarea type="text" rows="6" cols="150" name="message" placeholder="Tchat avec les membres ..."></textarea>
</div>
<input type="submit" name="submessage" class="btn">
</form>
</section>
<?php } else { ?>
<img style="position: relative;left: 50%; transform: translateX(-50%);" src="img/nyan-cat.gif">
<div class="required-login"><p>Tu dois te connecter pour parler avec les membres du site. <br><a href="?q=Se Connecter">Se connecter</a> </p></div>
<img style="position: relative;left: 50%; transform: translateX(-50%);" src="img/nyan-cat.gif">
<?php } ?>
</div>
Et ce que j'aimerais faire c'est exemple :
Clique pour voir l'exemple
Et ce que j'aimerais faire c'est du genre si je suis sur mon compte je vois le message en bleu et si c'est pas mon compte ça affiche le message en gris.
Merci d'avoir lu 😉
Balatharas Le 21 juin 2017 à 18:49 (Édité le 1 janvier 1970 à 01:00)
Sinon pour les messages bleus si c'est toi voilà comment faire:
Il faut remplacer la colonne pseudo par id_sender soit l'id de l'expéditeur du message, ce sera plus pratique pour récup les données de l'expéditeur et s'il change son pseudo plus tard, la table chat n'aura pas besoin d'être modifiée
Donc une fois que tu as changé la colonne (oublies pas de mettre le type sur INT au lieu de TEXT (dans phpmyadmin)) tu changes ta requête:
if(!empty($_POST['message'])){
$id = htmlspecialchars($_SESSION['id']);
$message = htmlspecialchars($_POST['message']);
$insertmsg = $bdd->prepare('INSERT INTO chat (id_sender, message) VALUES(:sender, :msg)');
$insertmsg->bindValue(':sender', $id, PDO::PARAM_INT);
$insertmsg->bindValue(':msg', $msg, PDO::PARAM_STR);
if($insertmsg->execute()) {
header('Location: ?q=Chat');
}
} else {
echo "Message !!!";
}
J'ai modifié des trucs, les deux lignes avec bindValue c'est simplement pour spécifier le type de la variable insérée
Ensuite
<?php
// DANS TA BOUCLE WHILE
if($msg['id_sender'] == $_SESSION['id'] { ?>
<div class="MESSAGE" style="background-color: blue;">
<?= $msg['message'] ?>
</div>
<?php } else { ?>
<div class="MESSAGE" style="background-color: white;">
<?= $msg['message'] ?>
</div>
<?php } ?>
Donne moi ton retour 😉 FreeZiX Le 27 juin 2017 à 13:18 (Édité le 1 janvier 1970 à 01:00)
[/url]:D