Je viens à vous car je rencontre un petit probleme, je m'explique.
J'ai ajouté un tchat en ajax pour mon projet ( tchat tiré du site du zéro car rien ne sert de réinventer la roue ^^ ) et donc voici le probleme tout mon tchat s'affiche de haut en bas, c'est à dire les messages les plus anciens en haut et ceux les plus vieux en bas, tous ceci regroupé dans une zone avec un scroll pour faire defiler la discution.
Mon probleme viens donc de l'affichage, je souhaiterais que les messages les plus récents se situe en haut et non en bas, j'ai pensé à écrire les messages du tchat les plus récent en premier dans mon fichier chat.txt, mais ceci ne fait qu'effacer les messages précendent.
Auriez un moyen pour réaliser ce que je souhaite ? ( message le plus récent en haut, et le plus vieux en bas ?
Voici une partie du code qui lit et écrit dans le fichier .
function afficher()
{
$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
$reponse->setCharEncoding('ISO-8859-1');//On indique le jeu de caractères utilisé
$chat = '';//Initialisation de la variable $chat
$fichier_texte = fopen('./chat.txt', 'r+');//On ouvre notre fichier texte en lecture seule
$chat = fgets($fichier_texte);//On lit notre fichier et on le stocke dans la variable $chat
fclose($fichier_texte);//On ferme notre fichier texte
$reponse->addAssign("block", "innerHTML", $chat);//Enfin, on change le contenu du div block par le contenu de $chat
return $reponse->getXML();
}
//
//Notre fonction PHP envoyer pour envoyer un message
//
function envoyer($message)
{
$heure = date("H");
$minute = date("i");
$pseudo=$_SESSION['pseudo'];
$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
$reponse->setCharEncoding('ISO-8859-1');//On indique le jeu de caractères utilisé
$fichier_texte = fopen('./chat.txt', 'a');//On ouvre notre fichier texte en ecriture seule
fwrite($fichier_texte,('<span class="Style2"><strong>['.$heure .':'.$minute.'] ' . htmlentities($pseudo) . ':</span> </strong><span class="Style1">' . htmlentities($message) . '</span><br />'));//On stocke dans notre fichier
fclose($fichier_texte);//On ferme notre fichier texte
$reponse->addAssign("message", "value", "");//On vide le champ contenant le message du posteur
$reponse->addScript("xajax_afficher();");//On appelle la fonction afficher pour afficher les messages et que le posteur voit son message à l'écran
return $reponse->getXML();
}
Suivi de ce qui permet de l'afficher
<div id="block" class="barrechat" align="left"></div>
<form action="">
<div>
<label><span class="Style2">Message :</span> <input type="text" size="45" style="color:#7c7b7b; background-color:#f2ecca;" id="message" /></label><br><input type="submit" value="Envoyer" onclick="xajax_envoyer(document.getElementById('message').value); return false;" />
</div>
</form>
<script type="text/javascript">
refresh();//On appelle la fonction refresh() pour lancer le script
</script> </td>
Il ya quelque morceaux de code encore entre tous sa comme l'ouverture de la librairie ajax etc... mais je ne pense pas que cela soit nécessaire le mettre .Merci