Bonjour,
(Je debute en PHP, excusez-moi...)
J'ai suivi le tuto Tchat PHP/Ajax et tout fonctionne après pas mal de soucis... sauf une chose que je n'arrive pas à resoudre :
lorsque je tape un message sans accent tout fonctionne... (Nickel)
Par contre lorsque je tape une message avec accent : "é" ou "à" ou "ç" alors il ne m'affiche pas du tout le message, même pas une partie : Rien de rien !
J'ai essayer de voir si cela venait de mysql, j'ai mis la base de données et les tables en UTF-8 puis en UTF-8 unicode ci etc... mais sans resultat
J'ai aussi essayer d'enlever htmlentities mais rien à faire... et là vraiment je ne vois pas de solution pour mon humble niveau en php
J'ai vraiment besoins d'aide, j'attend vos reponses avec impatience. Merci d'avance...
Voici le code de Tchat.php :
<code>***
<?php
session_start();
if(!isset($_SESSION["pseudo"]) || empty($_SESSION["pseudo"])){
header("location:index.php");
}
include "connect.php";
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link rel="stylesheet" href="theme/style.css" type="text/css" media="screen" />
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/tchat.js"></script>
<script type="text/javascript">
<?php
$sql = "SELECT id FROM messages ORDER BY id DESC LIMIT 1";
$req = mysql_query($sql) or die(mysql_error());
$data=mysql_fetch_assoc($req);
?>
var lastid = <?php echo $data["id"]; ?>
</script>
</head>
<body>
<div id="conteneur" style="width:94%; margin-bottom:200px;">
<h1>Mon tchat, connectez en tant que <?php echo $_SESSION["pseudo"]; ?></h1>
<div id="connected">
</div>
<div id="tchat">
<?php
$sql = "SELECT * FROM messages ORDER BY date DESC LIMIT 15";
$req = mysql_query($sql) or die(mysql_error());
$d = array();
while($data = mysql_fetch_assoc($req)){
$d[] = $data;
}
for($i=count($d)-1;$i>=0;$i--){
?>
<p><strong><?php echo $d[$i]["pseudo"]; ?></strong> (<?php echo date("d/m/Y H:i:s",$d[$i]["date"]); ?>) : <?php echo htmlentities(utf8_decode($d[$i]["message"])); ?></p>
<?php
}
?>
</div>
</div>
<div id="tchatForm" style="position:fixed;bottom:0;width:100%;">
<form method="post" action="#">
<div style="margin-right:110px;">
<textarea name="message" style="width:100%;"></textarea>
</div>
<div style="position:absolute; top:12px; right:0;">
<input type="submit" value="Envoyer"/>
</div>
</form>
</div>
</body>
</html>
</code>***
Voici le code de tchatAjax.php :
<code>***
<?php
session_start();
require("connect.php");
$d =array();
if(!isset($_SESSION["pseudo"]) || empty($_SESSION["pseudo"]) || !isset($_POST["action"])){
$d["erreur"] = "Vous devez être connecté pour utiliser le tchat";
}
else{
extract($_POST);
$pseudo = mysql_real_escape_string($_SESSION["pseudo"]);
/**
* Action : addMessage
* Permet l'ajout d'un message
* */
if($_POST["action"]=="addMessage"){
$message = mysql_real_escape_string($message);
$sql = "INSERT INTO messages(pseudo,message,date) VALUES ('$pseudo','$message',".time().")";
mysql_query($sql) or die(mysql_error());
$d["erreur"] ="ok";
}
/**
* Action : getMessages
* Permet l'affichage des dernier messages
* */
if($_POST["action"]=="getMessages"){
$lastid = floor($lastid);
$sql = "SELECT * FROM messages WHERE id>$lastid ORDER BY date ASC";
$req = mysql_query($sql) or die(mysql_error());
$d["result"] = "";
$d["lastid"] = $lastid;
while($data = mysql_fetch_assoc($req)){
$d["result"] .= '<p><strong>'.$data["pseudo"].'</strong>('.date("d/m/Y H:i:s",$data["date"]).') : '.htmlentities(utf8_decode($data["message"])).'</p>';
$d["lastid"] = $data["id"];
}
$d["erreur"]="ok";
}
/**
* Action : getConnected
* Permet l'affichage des derniers connectés
**/
if($_POST["action"]=="getConnected"){
$now = time();
$sql = "SELECT pseudo FROM connected WHERE $now-date<60";
$req = mysql_query($sql) or die(mysql_error());
$d["result"] = "Connectés : ";
while($data = mysql_fetch_assoc($req)){
$d["result"] .= $data["pseudo"].", ";
}
$d["result"] = substr($d["result"],0,-2);
$sql = "UPDATE connected SET date = $now WHERE id={$_SESSION["idTchat"]}";
mysql_query($sql) or die(mysql_error());
$d["erreur"] = "ok";
}
}
echo json_encode($d);
?>
</code>***