Bonsoir bonsoir!
Voilà, je pose mon idée:
Je voulais intégrer un chat sur mon site. Le visiteur arrive sur une page, qui l'invite à entrer son pseudo. Changement de page, zone de texte avec bouton 'envoyer'. Le but est que le visiteur reste loggé grace aux variables de session. En dessous de la zone de texte, un div dans lequel s'affichent les dix derniers messages, le div se refresh toutes les dix secondes.
Etant novice, j'ai deja tenté de créer un simple chat, mais rien que là ça coince. Tout va bien au début, mon formulaire s'affiche, mais aucune donnée ne va vers la BDD, et la redirection ne se fait pas. Je vous donne le code actuel, excusez le mélange php/html qui doit piquer les yeux, gardez à l'esprit que c'est un simple brouillon.
Page minichat.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title>Mini-chat</title> </head> <style> form { text-align:center; } </style> <body> <form action="minichat_post.php" method="post"> <p> <label for="pseudo">Pseudo</label> : <input type="text" name="pseudo_user" id="pseudo_user" /><br /> <label for="message">Message</label> : <input type="text" name="message_texte" id="message_texte" /><br /> <input type="submit" value="Envoyer" /> </p> </form> <?php try { $bdd = new PDO('mysql:host=localhost;dbname=mini_chat;charset=utf8', 'root', 'root'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } // Récupération des 10 derniers messages $reponse = $bdd->query('SELECT pseudo_user, message_texte FROM user, message ORDER BY ID DESC LIMIT 0, 10'); // Affichage de chaque message while ($donnees = $reponse->fetch()) { echo '<p><strong>' . htmlspecialchars($donnees['pseudo_user']) . '</strong> : ' . htmlspecialchars($donnees['message_user']) . '</p>'; } $reponse->closeCursor(); ?> </body> </html>
Page minichat_post.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 <?php //on récupère les champs dans des variables if(isset($_POST['pseudo_user'])) $pseudo_user=$_POST['pseudo_user']; else $pseudo_user=""; if(isset($_POST['message_texte'])) $pseudo_user=$_POST['message_texte']; else $message_texte=""; //on teste si les champs sont vides if(empty($pseudo_user) OR empty($message_texte)) { echo '<font color="red">Attention, vous devez entrer quelque chose!</font>'; } else { //connexion à la bdd try { $bdd = new PDO('mysql:host=localhost;dbname=mini_chat;charset=utf8', 'root', 'root'); } catch(Exception $e) { die('Erreur : '.$e->getMessage()); } SELECT * //jointure FROM `user` INNER JOIN `message` ON `user`.`id_user` = `message`.`id_user` //requete préparée pour envoyer les données à la bdd $req = $bdd->prepare("INSERT INTO message (message_texte) VALUES('$message_texte')"); $req->execute(array($message_texte['message_texte'])); $id_message = $bdd->lastInsertId(); $req = $bdd->prepare("INSERT INTO user (pseudo_user, id_user) VALUES('$pseudo_user', '$id_user')"); $req->execute(array($pseudo_user['pseudo_user'], $id_user['id_user'])); // Redirection du visiteur vers la page du minichat header('Location: minichat.php'); ?>
J'ai commenté le code pour expliquer ce que j'ai tenté de faire...
Merci d'avance?
Partager