Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138

    Abbinare a dei pulsanti un evento

    Nell'ambito di una chat line creata per diletto "raffazzonando" codice nel web, mi sono imbattuto nel problema che non riesco ad assegnare a due pulsanti l'evento da me desiderato.
    Di questi pulsanti, uno dovrebbe farmi abbandonare la pagina in cui mi trovo, l'altro dovrebbe farmi cancellare i messaggi memorizzati nel database.

    La mia pressochè ignoranza di Java mi ha portato a partorire questo codice la cui base, come detto, non è farina del mio sacco.

    Questa è la funzione che ingloba i pulsanti in questione e li mette uno di seguito all'altro dopo una casella di testo:

    // create message input box
    function createMessageBox(){
    // create message box container
    var mdiv=document.createElement('div');
    mdiv.setAttribute('id','messagebox');
    // create message form
    var mform=document.createElement('form');
    // create message box
    var mbox=document.createElement('input');
    mbox.setAttribute('type','text');
    mbox.setAttribute('name','message');
    mbox.className='msgfield';
    1° // create 'send' button
    var mbutton=document.createElement('input');
    mbutton.setAttribute('type','button');
    mbutton.setAttribute('value','Invia messaggio');
    mbutton.onclick=sendMessage;
    2° // create 'exit' button
    var ebutton=document.createElement('input');
    ebutton.setAttribute('type','button');
    ebutton.setAttribute('value','Abbandona chat line');
    ebutton.onclick=exitChat;
    3° // create 'delete' button
    var dbutton=document.createElement('input');
    dbutton.setAttribute('type','button');
    dbutton.setAttribute('value','Cancella tutti i messaggi');
    dbutton.onclick=deleteMessages;
    // create login text
    var sp=document.createElement('span');
    sp.appendChild(document.createTextNode('Connesso come: <?php echo $user?>'));
    // append elements
    mform.appendChild(mbox);
    mform.appendChild(mbutton);
    mform.appendChild(ebutton);
    mform.appendChild(dbutton);
    mform.appendChild(sp);
    mdiv.appendChild(mform);
    document.getElementsByTagName('body')[0].appendChild(mdiv);
    mbox.focus();
    mbox.onfocus=function(){this.value='';}
    }

    Queste le funzioni legate al click dei pulsanti (il primo pulsante non è presente perchè funziona):

    2° pulsante // uscita chat
    function exitChat(){
    // rimanda alla pagina principale
    header("Location: ../PaginaHomeITA/Home.php");
    }

    3° pulsante // cancellazione messaggi chat
    function deleteMessages(){
    <?php
    // apre il database
    $host = "62.149.196.247";
    $user = "blugenio";
    $pwd = "11031999";
    $dbConn = mysql_connect($host,$user,$pwd);
    // si collega al database
    $database = "clienti_blugenio01";
    mysql_select_db($database);
    // cancella messaggi
    $query_deleteAccesso = "DELETE FROM tblChat";
    $deleteAccesso = mysql_query($query_deleteAccesso);
    ?>
    }

    Mi succede, tra l'altro, che come entro nella pagina che contiene i pulsanti in questione mi si cancellano tutti i messagi contenuti nella tabella tblChat. Probabilmente perchè, ma questa è una mia sensazione, quando apro la pagina viene eseguita la funzione di cancellazione senza che venga premuto il pulsante.
    Dove sta l'errore?

    Grazie a chiunque getterà un po' di luce su questo problema.

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Il codice lato server viene eseguito tutto sul server prima di inviare la pagina al browser.

    ciao
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    Poichè il risultato ottenuto è graficamente scarno vorrei inserire il codice java di cui sopra in una maschera preesistente realizzata in html.

    Premessa: detta maschera contiene una tabella e vorrei che la visualizzazione dei messaggi avvenisse all'interno di una cella di detta tabella.

    Prove effettuate: ho provato a inserire il codice all'interno dei tag della tabella e a creare un form all'interno della cella a a inserire all'interno del form il codice java.

    Risultato: ciò che riesco a ottenere è che i messaggi sono tutti all'esterno della tabella.

    Grazie per ogni suggerimento

  4. #4
    Innanzitutto non facciamo confusione tra Java e Javascript che a parte il nome hanno poco in comune...

    Poi la riga
    codice:
    document.getElementsByTagName('body')[0].appendChild(mdiv);
    fa si che tutto il tuo codice finisca direttamente nel body quindi fuori da ogni cosa.

    dovresti assegnare un id al tag td che dovrebbe contenere la tua chat, ad esempio "tdChat".
    In questo caso dovresti sostituire la riga sopra con la seguente riga:
    codice:
    document.getElementById('tdChat').appendChild(mdiv);
    A questo punto non è importante dove tu piazzi il codice, basta che lo fai eseguire al caricamento della pagina, siccome questa riga inserice il codice all'interno della cella che hai scelto.

    Inoltre a mio parere sarebbe più semplice scrivere direttamente in HTML che ti semplifichi un po' la vita, a meno che tu non debba fare cose particolari...
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    Grazie 8matt5 per il suggerimento ma, molto probabilmente, "canno" qualcosa.
    Questo è il codice relativo alla pagina in cui voglio inserire la chat:

    <?php
    // get user name
    session_start();
    $user=$_SESSION['user'];
    ?>
    <!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>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title></title>
    <link href="../StiliTabelle.css" rel="stylesheet" type="text/css" />

    <script language="javascript">
    /*
    ************************************************** ***************
    AJAX-Based Chat System
    Author: Alejandro Gervasio
    Version: 1.0
    ************************************************** ***************
    */
    // getXMLHttpRequest object
    function getXMLHttpRequestObject(){
    var xmlobj;
    // check for existing requests
    if(xmlobj!=null&&xmlobj.readyState!=0&&xmlobj.read yState!=4){
    xmlobj.abort();
    }
    try{
    // instantiate object for Mozilla, Nestcape, etc.
    xmlobj=new XMLHttpRequest();
    }
    catch(e){
    try{
    // instantiate object for Internet Explorer
    xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
    }
    catch(e){
    // Ajax is not supported by the browser
    xmlobj=null;
    return false;
    }
    }
    return xmlobj;
    }
    // check status of sender object
    function senderStatusChecker(){
    // check if request is completed
    if(senderXMLHttpObj.readyState==4){
    if(senderXMLHttpObj.status==200){
    // if status == 200 display chat data
    displayChatData(senderXMLHttpObj);
    }
    else{
    alert('Errore di comunicazione: '+ senderXMLHttpObj.statusText);
    }
    }
    }
    // check status of receiver object
    function receiverStatusChecker(){
    // if request is completed
    if(receiverXMLHttpObj.readyState==4){
    if(receiverXMLHttpObj.status==200){
    // if status == 200 display chat data
    displayChatData(receiverXMLHttpObj);
    }
    else{
    alert('Errore di comunicazione: '+ receiverXMLHttpObj.statusText);
    }
    }
    }
    // get messages from database each 5 seconds
    function getChatData(){
    receiverXMLHttpObj.open('GET','getchatdata.php',tr ue);
    receiverXMLHttpObj.send(null);
    receiverXMLHttpObj.onreadystatechange=receiverStat usChecker;
    setTimeout('getChatData()',5*1000);
    }
    // display messages
    function displayChatData(reqObj){
    // remove previous messages
    var mdiv=document.getElementById('messages');
    if(!mdiv){return};
    mdiv.innerHTML='';
    var messages=reqObj.responseText.split('|');
    // display messages
    for(var i=0;i<messages.length;i++){
    var p=document.createElement('p');
    p.appendChild(document.createTextNode(messages[(messages.length-1)-i]));
    mdiv.appendChild(p);
    }
    }
    // send user message
    function sendMessage(){
    var user='<?php echo $user?>';
    var message=document.getElementsByTagName('form')[0].elements[0].value;
    if(message.length>100){message=message.substring(0 ,100)};
    // open socket connection
    senderXMLHttpObj.open('POST','sendchatdata.php',tr ue);
    // set form http header
    senderXMLHttpObj.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    senderXMLHttpObj.send('user='+user+'&message='+mes sage);
    senderXMLHttpObj.onreadystatechange=senderStatusCh ecker;
    }
    // create messages board
    function createMessageBoard(){
    var mdiv=document.createElement('div');
    mdiv.setAttribute('id','messages');
    document.getElementsById('tdChat');
    }
    // create message input box
    function createMessageBox(){
    // create message box container
    var mdiv=document.createElement('div');
    mdiv.setAttribute('id','messagebox');
    // create message form
    var mform=document.createElement('form');
    // create message box
    var mbox=document.createElement('input');
    mbox.setAttribute('type','text');
    mbox.setAttribute('name','message');
    mbox.className='msgfield';
    // create 'send' button
    var mbutton=document.createElement('input');
    mbutton.setAttribute('type','button');
    mbutton.setAttribute('value','Invia messaggio');
    mbutton.onclick=sendMessage;
    // create login text
    var sp=document.createElement('span');
    sp.appendChild(document.createTextNode('Logged in as: <?php echo $user?>'));
    // append elements
    mform.appendChild(mbox);
    mform.appendChild(mbutton);
    mform.appendChild(sp);
    mdiv.appendChild(mform);
    document.getElementsById('tdChat').appendChild(mdi v);
    mbox.focus();
    mbox.onfocus=function(){this.value='';}
    }
    // initialize chat
    function intitializeChat(){
    if(document.getElementById&&document.getElementsBy TagName&&document.createElement){
    createMessageBoard();
    createMessageBox();
    getChatData();
    }
    }
    // instantiate sender XMLHttpRequest object
    var senderXMLHttpObj=getXMLHttpRequestObject();
    // instantiate receiver XMLHttpRequest object
    var receiverXMLHttpObj=getXMLHttpRequestObject();
    // initialize chat
    window.onload=intitializeChat;
    </script>
    </head>

    <body>
    <div align="center">
    <table border="0" cellspacing="0" cellpadding="0">
    <tr>
    <td id="tdChat"></td>
    </tr>
    </table>
    </div>
    </body>
    </html>

    ma nella tabella non mi compare nè i messaggi presenti nel database (che ho verificato e ci sono), nè la casella di testo per immettere il messaggio, nè il pulsante per inviare il messaggio.

    Sai dirmi dove sbaglio?

  6. #6
    Se per cortesia usi la formattazione apposita per il codice si legge molto meglio... è quel pulsantino col cancelletto (#).

    Cmq non è
    codice:
    document.getElementsById('tdChat').appendChild(mdiv);
    ma

    codice:
    document.getElementById('tdChat').appendChild(mdiv);
    c'è una "s" di troppo (dato che in una pagina può esistere solo un elemento con un certo Id)
    La verita' è che... tu sei il debole, e io sono la tirannia degli uomini malvagi, ma ci sto provando ringo, ci sto provando con grandissima fatica a diventare il pastore..

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2008
    Messaggi
    138
    Grazie per l'aiuto. Funziona quasi perfettamente....
    Il quasi riguarda il fatto che appena apro la pagina non mi vengono visualizzati i messaggi contenuti nel db. Se poi invio un messaggio allora mi vengono visualizzati anche tutti gli altri.

    Il file getchatdata.php non è altro che un'istruzione di select per richiamare tutti i messaggi dal db è funziona perchè, come detto, quando invio un messaggio mi compaiono anche tutti quelli già presenti.

    Grazie nuovamente.

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 © 2025 vBulletin Solutions, Inc. All rights reserved.