Bonjour,

J'essaie de faire un petit chat pour un besoin. Le chat est vraiment simple! Juste un textarea qui affiche les messages d'une base de données.

Voici les différents code :

secure_variable.php:
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
<?php
  function secureVariable($nomVariable)
  {
    return mysql_real_escape_string(htmlentities($nomVariable,ENT_QUOTES));
  }
 
  function showVariable($nomVariable)
  {
    return stripslashes(html_entity_decode($nomVariable,ENT_QUOTES));
  }
 
?>

index.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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
<?php
include("session.php");
include("connect.php");
include("secure_variable.php");
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<title>Bienvenue sur le Chat</title>
		<title>Tutoriel Ajax (XHTML + JavaScript + XML)</title>
		<script type='text/JavaScript'>
 
	 		function getXhr(){
                                var xhr = null;
				if(window.XMLHttpRequest) // Firefox et autres
				   xhr = new XMLHttpRequest();
				else if(window.ActiveXObject){ // Internet Explorer
				   try {
			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
			            } catch (e) {
			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
			            }
				}
				else { // XMLHttpRequest non supporté par le navigateur
				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
				   xhr = false;
				}
      return xhr
			}
 
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function afficherMessage(){
				var xhr = getXhr()
				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function(){
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr.readyState == 4 && xhr.status == 200){
						document.getElementById('message').value=xhr.responseText;
						l_div = document.getElementById('message');
            l_div.scrollTop = l_div.scrollHeight;
					}
				}
				xhr.open("POST","ajax.php",true);
        xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
				xhr.send(null);
				document.getElementById('messageEnvoie').focus();
			}
			setInterval( function()
     { afficherMessage(); }, 5000 );
		</script>
	</head>
	<body onload='afficherMessage()'>
  <?php
  if (isset($_POST['messageEnvoie'])) // Si les variables existent
  {
      if ($_POST['messageEnvoie'] != NULL) // Si on a quelque chose à enregistrer
      {
         $date_message=date('Y-m-d');
         $heure_message=date('H:i:s');
         //if((isset($_SESSION['dernier_message']) AND ($_SESSION["dernier_message"]!= $_POST['message'])));
         //{
          // D'abord, on se connecte à MySQL
          mysql_connect($serveur,$login,$mdp);
          mysql_select_db($bd);
 
          // Ensuite on enregistre le message
          $sql="INSERT INTO message (nom_membre,message,date_message,heure_message) VALUES('".secureVariable($_SESSION['nomMembre'])."', '".secureVariable($_POST['messageEnvoie'])."','".secureVariable($date_message)."','".secureVariable($heure_message)."')";
          mysql_query($sql);
          $_SESSION['dernier_message']=$_POST['message'];
 
          // On se déconnecte de MySQL
          mysql_close();
          //}
      }
  }
  ?>
	<textarea READONLY ROWS="25" COLS="125" id="message">
	</textarea>
  <form action="index.php" method="POST">
  <p>
  Message :  <input type="text" id="messageEnvoie" name="messageEnvoie" size=125/> <input type="submit" value="Envoyer" onclick='afficherMessage()' />
  </p>
 </form>
	</body>
</html>

ajax.php
Code : 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
<?php
include("session.php");
include("connect.php");
include("secure_variable.php");
 
  mysql_connect($serveur,$login,$mdp);
  mysql_select_db($bd);
 
  // On utilise la requête suivante pour récupérer les 10 derniers messages :
  $reponse = mysql_query("SELECT * FROM message ORDER BY id_message ASC");
 
  // On se déconnecte de MySQL
  mysql_close();
 
  while ($donnees = mysql_fetch_array($reponse))
  {
    list($month, $day, $year) = split('[/.-]', showVariable($donnees['date_message']));
?>
   Le <?php echo $day.'/'.$month.'/'.$year ?> à <?php echo showVariable($donnees['heure_message']); ?> <?php echo showVariable($donnees['nom_membre']); ?> a dit:
  <?php echo showVariable($donnees['message']);?>
 
<?php
  }
?>
Voici le soucis :
Je tape cette phrase :
Apprendre la programmation par soi-même c'est "trop" dur! Je crie à l'aide !!

Dans la base de données, c'est affiché comme ceci:
Apprendre la programmation par soi-m&ecirc;me c\'est \&quot;trop\&quot; dur! Je crie &agrave; l\'aide !!

Ce que j'obtiens à l'affichage :
Apprendre la programmation par soi-m�me c'est "trop" dur! Je crie � l'aide !!

Je n'arrive pas à résoudre ce soucis.
Quelqu'un peut-il m'aiguiller ?
Merci