Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comment effacer un message d'un chat en ajax en JS

    23 février 2009 à 23:21:52

    Bonjour à tous,

    J'ai fait un chat en temps réel (ajax) sur mon site et j'aimerai que les modos puissent effacer les messages du chat.

    Je ne sais pas du tout comment il faut faire ... :s

    Merci d'avance !
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      23 février 2009 à 23:25:03

      Difficile de répondre avec si peu d'infos !
      Mais une solution plausible serait de vider l'élément html qui contient le texte du chat grâce à element.innerHTML = '';
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        23 février 2009 à 23:29:31

        <?php
        session_start();
        ?>
        <!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>Fan-Game : L'&eacute;quipe du site</title>
                <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
        		<link rel="stylesheet" media="screen" type="text/css" title="Design" href="design.css" />
        
        <script language="javascript" type="text/javascript">
        window.onerror = null;
        
        var noticeList = new Array("NoticeGood","NoticeBad");
        var agent = navigator.userAgent.toLowerCase();
        var is_ie = ((agent.indexOf("msie") != -1) && (agent.indexOf("opera") == -1));
        var http = new Array();
        var refreshTimeUsers = 5000; // Temps de rafraichissement //
        var refreshTimeMsg = 1000;
        var chooseName;
        var sSendMsgId = 0;
        var messageLineSize = 25;
        var lastSend = "";
        
        function httprequest()
        {
        	var xmlhttp=false;
        	try
        	{
        		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
        	}
        	catch (e)
        	{
        		try
        		{
        			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        		}
        		catch (e)
        		{
        			xmlhttp = false;
        		}
        	}
        	if (!xmlhttp && typeof XMLHttpRequest!='undefined')
        	{
        		xmlhttp = new XMLHttpRequest();
        	}
        	return xmlhttp;
        }
        
        function analLogin()
        {
        	if (http[0].readyState == 4)
        	{
        		resultat = http[0].responseXML;
        		IsOk = (resultat.getElementsByTagName("LoginOk").item(0).firstChild.data == "True") ? true : false;
        		Msg = resultat.getElementsByTagName("Message").item(0).firstChild.data;
        		
        		closeNotice();
        		if (IsOk)
        		{
        			document.getElementById("NoticeGood").innerHTML = "<br />"+Msg;
        			document.getElementById("NoticeGood").style.visibility = "visible";
        			
        			if (!is_ie)
        			{
        				document.getElementById("NoticeGood").style.top = Math.round(window.innerHeight/2)-60;
        				document.getElementById("NoticeGood").style.left = Math.round(window.innerWidth/2)-150;
        			}
        			else
        			{
        				document.getElementById("NoticeGood").style.top = Math.round(document.body.clientHeight/2)-60;
        				document.getElementById("NoticeGood").style.left = Math.round(document.body.clientWidth/2)-150;
        			}
        			
        			if (!is_ie) // Ajuste le l'affichage pour ie //
        			{
        				document.getElementById("usersChat").size = 26;
        				messageLineSize += 1;
        			}
        			
        			document.getElementById("loginDiv").style.visibility = "hidden"; // Affiche la fenetre du chat et fermer celle du login //
        			document.getElementById("mainForm").style.visibility = "visible";
        			
        			getUsersOnline(); // Commence le refresh //
        			getMsg();
        		}
        		else
        		{
        			document.getElementById("NoticeBad").innerHTML = "<br />"+Msg;
        			document.getElementById("NoticeBad").style.visibility = "visible";
        			
        			if (!is_ie)
        			{
        				document.getElementById("NoticeBad").style.top = Math.round(window.innerHeight/2)-60;
        				document.getElementById("NoticeBad").style.left = Math.round(window.innerWidth/2)-150;
        			}
        			else
        			{
        				document.getElementById("NoticeBad").style.top = Math.round(document.body.clientHeight/2)-60;
        				document.getElementById("NoticeBad").style.left = Math.round(document.body.clientWidth/2)-150;
        			}
        		}
        		
        		document.loginForm.logButton.disabled = false;
        	}
        }
        
        function analUsersOnline()
        {
        	if (http[1].readyState == 4)
        	{
        		try
        		{
        			resultat = http[1].responseXML;
        			
        			nameList = resultat.getElementsByTagName("Name");
        			modeList = resultat.getElementsByTagName("Mode");
        		}
        		catch(e)
        		{
        			setTimeout("getUsersOnline()",refreshTimeUsers);
        			return false;
        		}
        		
        		for (i=0;i<document.mainFormChat.usersChat.options.length;i++)
        		{
        			try
        			{
        				document.mainFormChat.usersChat.options[i] = new Option(""); // Efface les noms //
        			}catch(e){}
        		}
        		
        		for (i=0;i<nameList.length;i++)
        		{
        			try
        			{
        				name = nameList[i].firstChild.data;
        				mode = modeList[i].firstChild.data;
        			}
        			catch(e){}
        			
        			document.mainFormChat.usersChat.options[i] = new Option(name + " (" + mode + ")"); // Afiiche les nouveaux noms //
        		}
        		
        		setTimeout("getUsersOnline()",refreshTimeUsers);
        	}
        }
        
        function analGetMsg()
        {
        	if (http[2].readyState == 4)
        	{
        		try
        		{
        			resultat = http[2].responseXML;
        			
        			if (http[2].responseText == "<Data></Data>") // Si aucune donnée //
        			{
        				setTimeout("getMsg()",refreshTimeMsg);
        				return false;
        			}
        			
        			userList = resultat.getElementsByTagName("User");
        			textList = resultat.getElementsByTagName("Text");
        			typeList = resultat.getElementsByTagName("Type");
        		}
        		catch(e)
        		{
        			setTimeout("getMsg()",refreshTimeMsg);
        			return false;
        		}
        		
        		
        		for (i=0;i<userList.length;i++)
        		{
        			try
        			{	
        				user = userList[i].firstChild.data;
        				text = textList[i].firstChild.data;
        				type = typeList[i].firstChild.data;
        				
        				switch (type) // Affiche le texte selon le type //
        				{
        					case "Action" :
        					document.mainFormChat.messageChat.value += "*" + user + " " + text + "*\n";
        					break;
        					
        					case "Text" :
        					user = "<" + user + ">";
        					for (i=user.length;i<17;i++)
        					{
        						user += " ";
        					}
        					document.mainFormChat.messageChat.value += user + "" + text + "\n";
        					break;
        					
        					case "Kick" :
        					if (chooseName == text)
        					{
        						alert("Vous avez été kicker du chat par " + user + " !");
        						window.location = "index.html";
        						return false;
        					}
        					document.mainFormChat.messageChat.value += text + " a été kické par " + user + "\n";
        					break;
        					
        					case "Mode" :
        					document.mainFormChat.messageChat.value += "Mode " + text + " par " + user + "\n";
        					break;
        					
        					case "Quit" :
        					if (chooseName == user)
        					{
        						window.location = "index.html";
        						return false;
        					}
        					document.mainFormChat.messageChat.value += user + " a quitté (" + text + ")\n";
        					break;
        					
        				}
        				
        				cContent = new String(document.mainFormChat.messageChat.value);
        				cContent = cContent.split("\n");
        				
        				if (cContent.length > messageLineSize) // Affiche seulement les 25 dernières lignes //
        				{
        					nContent = "";
        					for (i=1;i<cContent.length;i++)
        					{
        						if (i != (cContent.length-1))
        						nContent += cContent[i] + "\n";
        					}
        					
        					document.mainFormChat.messageChat.value = nContent;
        				}
        			}
        			catch(e){}
        		}
        		
        		setTimeout("getMsg()",refreshTimeMsg);
        	}
        }
        
        function closeNotice() // Fermer les messges box //
        {
        	for(i=0;i<noticeList.length;i++)
        	{
        		document.getElementById(noticeList[i]).style.visibility = "hidden";
        	}
        }
        
        function prevMsg(event) // Affiche le msg qui a été envoyé avant si l'utilisateur appuie sur la flèche du haut //
        {
        	if (event.keyCode == 38)
        	{
        		document.mainFormChat.toSendText.value = lastSend;
        	}
        }
        
        // Les fonctions et les requetes qu'ils font au script ajax.php //
        
        function login()
        {
        	http[0] = httprequest();
        	http[0].open("POST","ajax.php?action=login",true);
        	http[0].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        	http[0].onreadystatechange = analLogin;
        	http[0].send("username="+document.loginForm.username.value);
        	
        	chooseName = document.loginForm.username.value;
        	document.loginForm.logButton.disabled = true;
        }
        
        function getUsersOnline()
        {
        	http[1] = httprequest();
        	http[1].open("GET","ajax.php?action=getusers",true);
        	http[1].onreadystatechange = analUsersOnline;
        	http[1].send(null);
        	
        	is_sending = true;
        }
        
        function getMsg()
        {
        	http[2] = httprequest();
        	http[2].open("GET","ajax.php?action=getmsg",true);
        	http[2].onreadystatechange = analGetMsg;
        	http[2].send(null);
        }
        
        function sendMsg()
        {
        	sendMessage = document.mainFormChat.toSendText.value;
        	lastSend = sendMessage;
        	http[3] = httprequest();
        	http[3].open("POST","ajax.php?action=sendMsg",true);
        	http[3].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
        	while(sendMessage.indexOf("&") > 0 || sendMessage.indexOf("+") > 0)
        	{
        		sendMessage = sendMessage.replace("&","%26");
        		sendMessage = sendMessage.replace("+","%2B");
        	}
        	http[3].send("msg="+sendMessage);
        	document.mainFormChat.toSendText.value = "";
        	return false;
        }
        </script>
        
        <style type="text/css">
        .noticeBoxGood
        {
        	background-color: #000000;
        	color: #000000;
        	border-width: 1px;
        	border-style: solid;
        	width : 300px;
        	height: 60px;
        	text-align: center;
        	position: absolute;
        }
        
        .noticeBoxBad
        {
        	background-color: #000000;
        	color: #000000;
        	border-width: 1px;
        	border-style: solid;
        	width : 300px;
        	height: 60px;
        	text-align: center;
        	position: absolute;
        }
        
        .button
        {
        	background-color: #000000;
        }
        
        .cChat
        {
        	background-color: #ffffff;
        	color : #00e300;
        }
        
        #mainForm
        {
        	border-width: 1px;
        	border-style: solid;
        }
        
        td
        {
        	vertical-align: top;
        }
        </style>
            </head>
            
            <body>
        	
        		  <div align="center">
               <img src="images/banniere.jpg" />
        	   </div>
        	<?php
        /*
        Neoterranos & LkY
        Page inscription.php
        
        Permet de s'inscrire.
        
        Quelques indications : (utiliser l'outil de recherche et rechercher les mentions donn?)
        
        Liste des fonctions :
        --------------------------
        Aucune fonction
        --------------------------
        
        
        Liste des informations/erreurs :
        --------------------------
        Aucune information/erreur
        --------------------------
        */
        
        
        
        
        
        
        include('config.php');
        ?>
        
        <?php
        /********Actualisation de la session...**********/
        
        include('fonctions.php');
        connexionbdd();
        actualiser_session();
        
        /********Fin actualisation de session...**********/
        ?>
        
        
        
        
        
        
        
        <?php
        /********Ent? et titre de page*********/
        
        
        
        $titre = 'Inscription 1/2';
        
        include('haut.php'); //contient le doctype, et head.
        
        /**********Fin ent? et titre***********/
        ?>
        
        <!--Colonne gauche-->
        		<div id="colonne_gauche">
        		<?php
        		include('colg.php');
        		?>
        		</div>
        </head>
        <body onclick="closeNotice()">
        <div id="loginDiv">
        <br /><br /><br />
        <center>
        <form action="#" name="loginForm" onSubmit="return false;">
        Choisissez un nom :<br /><br />
        <input type="text" name="username" value="<?php echo$_SESSION['membre_pseudo']; ?>" /><br /><br />
        </form>
        <input type="button" name="logButton" value="Entrez" onClick="login()" class="button" />
        
        </div>
        </center>
        <center>
        <!-- Main Chat Box -->
        <form action="" name="mainFormChat" onSubmit="return sendMsg()">
        <div id="mainForm" style="visibility:hidden;position:absolute;top:10px;left:10px;">
        <table border="1">
        <tr>
        <td>
        <textarea cols="65" rows="25" id="messageChat" name="messageChat" class="cChat" readonly>
        
        </textarea>
        </td>
        <td>
        <select size="25" style="width:150px" name="usersChat" id="usersChat" class="cChat"></select>
        </td>
        </tr>
        <tr>
        <td colspan="2">
        <input type="text" name="toSendText" size="100" class="cChat" onKeyUp="prevMsg(event)" onKeyPress="prevMsg(event)" /><input type="button" value="Envoyez" class="button" onClick="sendMsg()" />
        </td>
        </tr>
        </table>
        </div>
        </form>
        </center>
        <!-- Notice Box -->
        <div class="noticeBoxGood" id="NoticeGood" style="visibility:hidden">Bla Bla</div>
        <div class="noticeBoxBad" id="NoticeBad" style="visibility:hidden">Bla Bla</div>
        </body>
        </html>
        
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          23 février 2009 à 23:34:59

          En fait niveau ajax je n'y connais pas grad chose.
          Mais en fait, tu voudrais pouvoir enlever des messages en particulier ?
          Ces messages sont enregistrés dans une bdd ?
          Car si c'est le cas, une requête sql pourrait supprimer le message.
          • Partager sur Facebook
          • Partager sur Twitter
            23 février 2009 à 23:36:16

            Oui, ils sont enregistrés dans ma BDD.

            En dessous de chaque message, je voudrais un lien pour supprimer un message du chat toujours en temps réel...
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              23 février 2009 à 23:44:32

              Ben par exemple ce lien pourrait envoyer une requête sql via php via ajax (je dis peut-être une bêtise ^^), et après ça rafraîchit le chat pour que le message ne soit plus là (en affichant à l'aide de la bdd tous les messages, qui ne contiendront plus celui précédemment effacé).
              • Partager sur Facebook
              • Partager sur Twitter
                24 février 2009 à 9:21:42

                soit tu supprime carrément le message en question de ta BDD, soit, si tu veux pouvoir en conserver une trace, tu en modifie une composante (ex : un champ 'statut' où tu mettrais une valeur 'deleted'). tu peux aussi insérer des balises au début et à la fin du message et dire à l'affichage de ne pas lire ce qu'il y'a entre ces balises.
                à toi de voir !!
                • Partager sur Facebook
                • Partager sur Twitter
                Je ne dis pas que c'est nul, je dis qu'il y a moyen de faire mieux

                Comment effacer un message d'un chat en ajax en JS

                × 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