Partage
  • Partager sur Facebook
  • Partager sur Twitter

Chat à Actualisation [du Tuto non officiel]

impossible de le faire fonctionner !

    15 novembre 2008 à 17:54:00

    Bonsoir,

    j'ai un problème avec le tutorial http://www.siteduzero.com/tutoriel-3-3 [...] tml#ss_part_5 que j'ai voulu adapter...

    Le message "Récupération des messages..." reste constamment visible, et je ne vois pas les messages postés...

    Merci pour votre aide !

    <?
    
     function afficher()
    {
    	$reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
    	$chat = '';//Initialisation de la variable $chat
    	$resultat = mysql_query("SELECT * FROM `minichat` ORDER BY `id` ")or die(mysql_error());
    	while ($donnees = mysql_fetch_assoc($resultat)) {
    		
    		$chat .=html_entity_decode($donnees['pseudo']).''.parse(stripslashes(nl2br($donnees['message']))).'';
    	}		
    
    	$reponse->addAssign('all_chat', 'innerHTML', $chat);//Enfin, on change le contenu du div block par le contenu de $chat
    	$reponse->script("hideLoadingMessage();");//ON CACHE LE MESSAGE DE CHARGEMENT
    	return $reponse;
    }
    
    //
    //Notre fonction PHP envoyer pour envoyer un message
    //
    function envoyer($donnees_formulaire)
    {
            $reponse = new xajaxResponse();//Création d'une instance de xajaxResponse pour traiter les réponses serveur
    		$pseudo = htmlentities($_SESSION['pseudo'], ENT_QUOTES);
    		if($message!=''){
    		mysql_query("INSERT INTO `minichat` (`message`, `pseudo`, `date`) VALUES ('".$message."', '".$pseudo."', ".time().")");
    		}
    		$derniere_id=mysql_fetch_array(mysql_query('SELECT id FROM minichat ORDER BY id DESC LIMIT 19, 1')); //changer le 9 si on veut garder plus ou moins de 10 messages
            mysql_query('DELETE FROM chat WHERE id<'.$derniere_id['id']);
            $reponse->clear('message', 'value');//On vide le champ contenant le message du posteur
            $reponse->call('xajax_afficher');//On appelle la fonction afficher pour afficher les messages et aussi pour que le posteur voit son message à l'écran
    		$reponse->script("hideLoadingMessage();");//ON CACHE LE MESSAGE DE CHARGEMENT
            return $reponse;
    }
    
    //
    //Ouverture de la librairie xajax
    //Instanciation d'un objet de la classe xajax, puis déclaration de nos fonctions php
    //
    require_once('../xajax_core/xajax.inc.php');
    $xajax = new xajax(); //On initialise l'objet xajax
    $xajax->setCharEncoding('iso-8859-1');//On précise à xAjax qu'on souhaite travailler en ISO-8859-1
    $xajax->register(XAJAX_FUNCTION, 'afficher');//on enregistre nos fonctions
    $xajax->register(XAJAX_FUNCTION, 'envoyer');
    $xajax
    
    ?>
    
    <!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" >
       <head>
           <title><?php echo $titre; ?> - G-Ski</title>
           <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <?php $xajax->printJavascript(); /* Affiche le Javascript */?>
                    <script type="text/javascript">
                    function refresh()//script javascript qui va appeler le fonction afficher toutes les 5 secondes
                    {
    						printLoadingMessage('Récupération des messages...');//On va appeler xajax_afficher, alors juste avant on affiche notre message
                            xajax_afficher();
                            setTimeout(refresh, 4000);
                    }
    				function printLoadingMessage(loadingMessageText)
                    {
                            if(!loadingMessageText)//Si aucun message personnalisé n'a été précisez on lui donne le message par defaut
                            {
                                    loadingMessageText = 'Chargement...';
                            }
                            var parentNode = document.getElementById('loadingMessage');//On récupère le noeud parent qui est la balise div
                            var textNode = document.createTextNode(loadingMessageText);//On crée un noeud enfant qui est tout simplement le texte
                            parentNode.replaceChild(textNode, parentNode.firstChild);//On accroche le texte à la balise div
                            document.getElementById('loadingMessage').style.visibility='visible';//Puis on rend visible le bloc
                    }
                    function hideLoadingMessage()
                    {
                            document.getElementById('loadingMessage').style.visibility='hidden';//On rend le message invisible
                    }
                    </script>
    

    <? // [.........] ?>
    
    <div id="all_chat"></div>
    
    
    	<form action="" style="border: 1px solid black; padding: 0.2em; background-color:#c4cee0;">
    		<div style="margin-left: 25px; text-indent: 0px;">
    				<label for="message">Message </label>(<a href="#" onclick="window.open('smileys.html', 'Smileys dispos', 'height=430, width=380, top=100, left=100, toolbar=no, menubar=no, location=no, resizable=yes, scrollbars=no, status=no'); return false;">Smileys</a>) :
    				<input type="text" id="message" name="message" size="65" />
    				<span style="text-indent: 0px; width: 200px;"><input type="submit" value="Envoyer" onclick="printLoadingMessage('Envoi du message...'); xajax_envoyer(xajax.getFormValues(this.form)); return false;"  style="border:1px solid #364365;"/></span>
    		</div>
    					
    	</form>
    	<script type="text/javascript">
                            refresh();//On appelle la fonction refresh() pour lancer le script
        </script>
    


    Merci d'avance !!
    • Partager sur Facebook
    • Partager sur Twitter

    Chat à Actualisation [du Tuto non officiel]

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown