Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11

Discussione: chat

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55

    chat

    Ho trovato in giro una chat che fa al caso mio xrò ho un problema che non riesco a risolvere.

    Lo script della chat l'ho preso da questo link :
    http://www.slacko.org/2006/12/08/ajax-chat/

    Il problema che non riesco a risolvere è dove i messaggi mi vengono riportati dall'alto verso il basso cioè l'ultimo msg scritto lo visualizzo in alto mentre vorrei ilcontrario.
    Lo script riporta la parte dove avviene il capovolgimento ma non riesco a farlo come vorrei io.

    riporto anche lo script :

    codice:
    <script type="text/javascript">
    /* Richiesta Ajax */
    var http_request=false;
    var http_request2=false;
    var intUpdate;
    function ajax_request(url){http_request=false;
    if(window.XMLHttpRequest){http_request=new XMLHttpRequest();
    if(http_request.overrideMimeType){http_request.overrideMimeType('text/xml');
    }
    }
    else if(window.ActiveXObject){try{http_request=new ActiveXObject("Msxml2.XMLHTTP");
    }
    catch(e){
    try{http_request=new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e){}}}
    if(!http_request){alert('Mi fermo ( Impossibile creare una istanza XMLHTTP');
    return false;
    }
    http_request.onreadystatechange=alertContents;
    http_request.open('GET',url,true);http_request.send(null);
    }
    function alertContents(){
    if(http_request.readyState==4)
    {
    if(http_request.status==200)
    {rec_response(http_request.responseText);
    }else{}
    }
    }
    
    /* Lettura richiesta Ajax */
    function ajax_request2(url){http_request2=false;if(window.XMLHttpRequest){
    http_request2=new XMLHttpRequest();
    if(http_request2.overrideMimeType){http_request2.overrideMimeType('text/xml');
    }
    }
    else if(window.ActiveXObject){
    try{http_request2=new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e){
    try{http_request2=new ActiveXObject("Microsoft.XMLHTTP");
    } catch(e){}
    }
    }
    if(!http_request2){alert('Mi fermo ( Impossibile creare una istanza XMLHTTP');
    return false;
    }
    http_request2.onreadystatechange=alertContents2;
    http_request2.open('GET',url,true);
    http_request2.send(null);
    }
    function alertContents2(){
    if(http_request2.readyState==4){if(http_request2.status==200){
    rec_chatcontent(http_request2.responseText);
    }else{}
    }
    }
    
    /* Codice riguardante la chat */
    waittime=1000;
    intUpdate=window.setTimeout("read_cont()", waittime);
    chatwindow.value = "connecting...";
    
    	function display_msg(msg1) {
    		/* riempio la textarea con il contenuto */
    		chatwindow.value = msg1;
    	}
    
    	function write_msg(msg1) {
    		ajax_request("chat.php?m=" + escape(msg1));
    	}
    		
    	function submit_msg() {
    		/* invio il messaggio*/
    		write_msg(chatmsg.value);
    		chatmsg.value="";
    	}
    			
    	function rec_response(str1) {
    		/* la risposta qui è data dallo script php*/
    	}
    
    	function rec_chatcontent(cont1) {
    		if (cont1 != "") { 
    			out1 = "";
    			/* capovolgo i messaggi in modo da mostra prima l'ultimo inviato */
    			while (cont1.indexOf("\n") > 0) {
    				out1 = cont1.substr(0, cont1.indexOf("\n")) + "\n" + out1;
    
    				cont1 = cont1.substr(cont1.indexOf("\n") + 1);
    			}
    			out1 = unescape(out1);
    			if (chatwindow.value != out1) { display_msg(out1); }
    			intUpdate=window.setTimeout("read_cont()", waittime);
    		}		
    	}
    
    	function read_cont() { 
    		/* funzione per prvenire il buffering */
    			zeit = new Date();
    		   ms = (zeit.getHours() * 24 * 60 * 1000) + (zeit.getMinutes() * 60 * 1000) + (zeit.getSeconds() * 1000) + zeit.getMilliseconds();
    		ajax_request2("chat.txt?x=" + ms); 
    	}
    	function keyup(arg1) { 	if (arg1 == 13) { 	submit_msg(); } }
    </script>
    Che ne dite? come posso capovolgere il tutto?


  2. #2
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non fai prima a stampare i dati "inverti" da chat.php ordinando i dati della query?
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    non lavoro con un database mysql, ma la chat viene salvata in un file di testo


  4. #4
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Originariamente inviato da lavoce
    non lavoro con un database mysql, ma la chat viene salvata in un file di testo

    E non è possibile comunque invertire l'inserimento, lo trovo + rapido (forse sbagliando) invece di leggerli in javascript e poi invertirli, mi sembra più complesso.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    bhè come idea mi sembra ottima è 3 ore che ci sbatto la testa per fare come hai detto, ma non ne vuole proprio sapere.
    Inoltre ora mi sono accorto che i caratteri speciali non li considera, ho provato con HTMLEntities ma continua a fregarsene.
    tu che mi suggerisci? di cambiare proprio chat?


  6. #6
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non so cosa dirti, se non riesci ha risolvere il problema forse cambiare chat è la soluzione.
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  7. #7
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    Allora ho trovato questa chat ma è possibile che ci deve essere sempre qualcosa che non riesco a mettere apposto

    file ajch.css

    codice:
    #alert {
    font-family: Arial,Verdana,Helvetica,sans-serif,monospace;
    color: red;
    font-size: 12px;
    }
    #chatresp {
    border: 1px solid;
    overflow: auto;
    height: 400px;
    width: 400px;
    position: relative;
    font-family: Arial,Verdana,Helvetica,sans-serif,monospace;
    font-size: 12px;
    }
    file send.js

    codice:
    if(document.getElementById){
    
    window.alert = function(text){
    
    err(text);
    
    }
    
    }
    
    function err(text){
    
    document.getElementById("alert").innerHTML = text;
    
    setTimeout('document.getElementById("alert").innerHTML = ""', 3000);
    
    }
    
    function makeRequest(){
    
    if(window.XMLHttpRequest){
    
    return new XMLHttpRequest();
    
    } else if(window.ActiveXObject){
    
    return new ActiveXObject("Microsoft.XMLHTTP");
    
    } else {
    
    err("You browser doesn't support XMLHttpRequestObject");
    
    }
    
    }
    
    var req = makeRequest();
    
    function send(){
    
    if(req.readyState == 4 || req.readyState == 0){
    
    if(document.chatform.guestname.value != "" && document.chatform.chatext.value != ""){
    
    req.open("GET", "send.php?name="+document.chatform.guestname.value+"&msg="+escape(document.chatform.chatext.value));
    
    //req.onreadystatechange = handleResp;
    
    req.send(null);
    
    } else {
    
    alert('Hey where is your name or message??');
    
    }
    
    }
    
    document.chatform.chatext.value = '';
    
    }
    
    function recieve(){
    
    req.open("GET", "recieve.php");
    
    req.onreadystatechange = handleresponse;
    
    req.send(null);
    
    }
    
    
    
    function handleresponse(){
    
    if(req.readyState == 4 && req.status == 200){
    
    document.getElementById("chatresp").innerHTML = req.responseText;
    
    //document.chatform.chatresp.value = req.responseText;
    
    //var txt = document.createTextNode(req.responseText+"\n----------------------------------------\n");
    
    //document.chatform.chatresp.appendChild(txt);
    
    var elem=document.getElementById("chatresp");
    
    elem.scrollTop=elem.offsetHeight*elem.offsetHeight;
    
    //var elem = document.getElementById("chatresp");
    
    //elem.scrollTop = elem.scrollHeight;
    
    }
    
    }
    
    function init(){
    
    var num = parseInt(Math.random()*10);
    
    var stnum = String(num);
    
    var num1 = parseInt(Math.random()*10);
    
    var stnum1 = String(num1);
    
    var num2 = parseInt(Math.random()*10);
    
    var stnum2 = String(num2);
    
    var num3 = parseInt(Math.random()*10);
    
    var stnum3 = String(num3);
    
    document.chatform.guestname.value = document.getElementById("nome").value;
    
    setInterval('recieve()', 2000);
    
    recieve();
    
    if(document.images){
    
    angel = new Image(22,19);
    
    angel.src = "smileys/angel.png";
    
    angry = new Image(18,18);
    
    angry.src = "smileys/angry.png";
    
    blush = new Image(18,18);
    
    blush.src = "smileys/blush.png";
    
    cool = new Image(18,18);
    
    cool.src = "smileys/cool.png";
    
    cry = new Image(18,19);
    
    cry.src = "smileys/cry.png";
    
    erm = new Image(18,18);
    
    erm.src = "smileys/erm.png";
    
    gasp = new Image(18,20);
    
    gasp.src = "smileys/gasp.png";
    
    grin = new Image(18,19);
    
    grin.src = "smileys/grin.png";
    
    kiss = new Image(18,18);
    
    kiss.src = "smileys/kiss.png";
    
    money = new Image(18,19);
    
    money.src = "smileys/money.png";
    
    sad = new Image(18,18);
    
    sad.src = "smileys/sad.png";
    
    scared = new Image(18,18);
    
    scared.src = "smileys/scared.png";
    
    smile = new Image(18,18);
    
    smile.src = "smileys/smile.png";
    
    tongue = new Image(18,19);
    
    tongue.src = "smileys/tongue.png";
    
    wink = new Image(18,18);
    
    wink.src = "smileys/wink.png";
    
    wub = new Image(18,18);
    
    wub.src = "smileys/wub.png";
    
    }
    
    }
    
    window.onload = init;

    file send.php

    Codice PHP:
    <?php

    function makeSmiley($msg){

    $file file("smiley.txt");

    for(
    $i=0;$i<count($file);$i++){

    $exp explode('|'$file[$i]);

    $msg str_replace($exp[0], $exp[1], $msg);

    }

    return 
    $msg;

    }

    function 
    filter($msg){

    $f file("badwords.txt");

    for(
    $i=0;$i<count($f);$i++){

    $bad_words explode(','$f[$i]);

    }

    foreach (
    $bad_words as $naughty){

      
    $msg eregi_replace($naughty"*****"$msg);

    }

    return 
    $msg."\n";

    }

    if(isset(
    $_GET['msg']) && isset($_GET['name'])){

    $text $_GET['msg'];

    $name $_GET['name'];

    $text stripslashes($text);

    $text filter($text);

    $text makeSmiley($text);

    $f fopen('prova.txt''a');

    fwrite($f$name." said: ".$text."");

    fclose($f);

    } else {

    exit();

    }

    ?>
    file recive.php

    Codice PHP:
    <?php

    $fr 
    file('prova.txt');

    for (
    $i=0;$i<count($fr);$i++){

    $zz=htmlentities($fr[$i]);

    echo 
    $zz."
    "
    ;

    }

    ?>
    file chat.php

    Codice PHP:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml">

    <head>

    <script type="text/javascript" src="send.js"></script>

    <link rel="stylesheet" type="text/css" href="ajch.css">

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

    <title>Documento senza titolo</title>

    </head>



    <body>

    <form name="chatform" onSubmit="send()" method="get">

    <!--<textarea name="chatresp" cols="50" rows="20" id="chatresp" readonly="readonly"></textarea>
    -->

    <div id="chatresp" name="chatresp"></div>

    <input type="text" name="guestname" id="name" size="7"> : 

    <input type="text" name="chatext" id="chatext">

    <input type="submit" value="Send" onClick="send()">

    <input name="nome" type="hidden" id="nome" value="<?php $aa="ciccio"; echo $aa;?>" />

    </form>

    <div id="alert">

    </div>

    </body>

    </html>
    Con firefox non ci sono problemi va che è una meraviglia, mentre con IE ci sono problemi.
    Lancio IE e inizio a scrivere non mi visualizza niente , però nel file testo inserisce quello che ho scritto ,quindi la parte send.php funge.
    Se provo a d aggiornare la pagina niente come prima.
    Se chiudo la pagina e ne riapro un'altra visualizzo quello che avevo scritto prima ( o quello che c'e' nel file di testo) se riprovo a scrivere di nuovo non mi visualizza l'ultima cosa che ho scritto
    Dove potrebbe essere il problema?




  8. #8
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    up!

  9. #9
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,133
    Non è detto che sia questo, ma ie soffre (non solo) del effetto "cache" che puoi eliminare impostando un cod random in querystring tipo
    codice:
    req.open("GET", "send.php?noCache="+ Math.floor(Math.random() * (9999))+"&name="+document.chatform.guestname.value+"&msg="+escape(document.chatform.chatext.value));
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  10. #10
    Utente di HTML.it
    Registrato dal
    Nov 2007
    Messaggi
    55
    scusa l'ignoranza ma dici di sostituire il codice che mi hai dato

    codice:
    req.open("GET", "send.php?noCache="+ Math.floor(Math.random() * (9999))+"&name="+document.chatform.guestname.value+"&msg="+escape(document.chatform.chatext.value));
    Con quello che avevo nella pagina send.js al posto



    codice:
    req.open("GET", "send.php?name="+document.chatform.guestname.value+"&msg="+escape(document.chatform.chatext.value));
    Ho fatto così ma sempre uguale


Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.