Visualizzazione risultati 1 fino 19 di 19

Discussione: Script gestione commenti

  1. #1
    Guest

    Question Script gestione commenti

    Ciao a tutti, sto cercando on-line uno script per la gestione dei commenti che funzioni come la risposta rapida di altervista.

    Praticamente vorrei che il messaggio dell'utente venga aggiunto alla lista senza ricaricare tutta la pagina.

    Sapete dove posso trovare uno script simile???

  2. #2
    Guest

    Predefinito

    Probabilmente troverai qualcosa ma per piattaforme di blogging o simili.

    Per progetti personali credo dovrai scriverti del codice a manina studiandoti AJAX.
    Un buon punto di partenza potrebbe essere spaghettiajax

  3. #3
    Guest

    Predefinito

    Ciao grazie per la guida mi ha dato qualche idea da applicare al mio progetto.

    Volevo chiederti una cosa, dato che on-line ho trovato informazioni contrastanti.
    è possibile, senza usare gli Iframe, aggiornare alcuni elementi della pagina? ad esempio un div con javascript o simili?

  4. #4
    Guest

    Predefinito

    Certo. Anzi è proprio quello lo scopo di ajax!

  5. #5
    Guest

    Predefinito

    ah ok, per caso conosci qualche sito su cui possa studiare l'argomento o leggere dei frammenti di codice a riguardo?

  6. #6
    Guest

    Predefinito

    Oltre a sito già indicato potresti dare un'occhiata a questo.

  7. #7
    Guest

    Predefinito

    Grazie, leggerò anche questa guida

  8. #8
    Guest

    Predefinito

    Mentre leggi, fai delle prove.
    Vedrai che lo studio sarà più piacevole e profiquo...

    e se non capisci qualcosa, chiedi.

  9. #9
    L'avatar di alemoppo
    alemoppo non è connesso Staff AV
    Data registrazione
    24-08-2008
    Residenza
    PU / BO
    Messaggi
    22,709

    Predefinito

    Non nascondo che saper usare ajax nativo è... emozionante!..
    (anche io imparai ajax proprio da quella guida).

    Però, se proprio non riesci, puoi semplificarti la vita usando jQuery, in particolare per ajax, jQuery.ajax().

    Ciao!

  10. #10
    Guest

    Predefinito

    Ciao e grazie per le risposte, sto leggendoì molte delle guide che mi avete segnalato, anche se il linguaggio lato server a cui sono abbituato è molto diverso e sto facendo un pò di fatica....

    Nel frattempo ho cercato qualche script on-line, e ho trovato questo.

    Codice:
    <script type="text/javascript">
    var xmlhttp;
    
    function mostraInfo(str)
    {
    xmlhttp=GetXmlHttpObject();
    if (xmlhttp==null)
    {
    alert ("Browser does not support HTTP Request");
    return;
    }
    var url="mostra_utenti.php";
    url=url+"?q="+str;
    xmlhttp.onreadystatechange=stateChanged;
    xmlhttp.open("GET",url,true);
    xmlhttp.send(null);
    }
    
    function stateChanged()
    {
    if (xmlhttp.readyState==4)
    {
    document.getElementById("info").innerHTML=xmlhttp.responseText;
    }
    }
    
    function GetXmlHttpObject()
    {
    if (window.XMLHttpRequest)
    {
    // code for IE7+, Firefox, Chrome, Opera, Safari
    return new XMLHttpRequest();
    }
    if (window.ActiveXObject)
    {
    // code for IE6, IE5
    return new ActiveXObject("Microsoft.XMLHTTP");
    }
    return null;
    }
    </script>

    Ora sto cercando di adattarlo al mio lavoro.
    Normalmente mostro i commenti in questo modo

    Codice PHP:
    Page_All($page_comment, $primo)
    {
    //Stampo tutti i commenti utilizzando una query che ha come limit $primo

    $new_page = $primo + 20;

    echo <<<EOD
    <form method='post' action="#">
    <p class="center">
    <input type="hidden" name="page" value="
    $new_page">
    <input type="submit" name="show_other_page" value="Mostra altri"/>
    </p>
    </form>
    EOD;
    }

    if(!isset(
    $_POST['show_other_page']))
    {
    Page_All(
    $page_comment, 20);
    } else {
    Page_All(
    $page_comment, $_POST['page']);
    }

    Secondo il nuovo script devo mettere tutto il mio script nel file esterno e poi richiamarlo, oppure devo mettere la funziona e inviare tramite get i dati della funzione?

  11. #11
    Guest

    Predefinito

    Tieni sempre ben a mente che PHP e JS lavorano su due ambiti diversi.
    PHP lavora a livello server (viene generata la pagina dal server e il codice viene poi inviato al browser che la visualizzerà) mentre JS lavora a livello client (modifica il codice che il browser sta già mostrando).

    Ora, il codice JS, secondo le tue necessità, lo puoi scrivere o direttamente nel corpo della pagina tra tag <script> o scriverlo su un file esterno e incorporarlo.

    Entrando nel merito della questione, quando devi inserire un nuovo commento, devi distinguere due momenti

    1. una chiamata asincrona (AJAX) con la quale invii al server i dati per l'inserimento del commento nel DB, gestendo anche i messaggi di ritorno.

    2. l'aggiornamento della pagina attuale con l'accodamento del messaggio al testo già presente nella pagina.

    Per l'uso pratico, una volta capito come funziona ajax, come suggerito da alemoppo, puoi usare jQuery che ti semplifica il codice da scrivere occupandosi delle parti più rognose, compresa la compatibilità cross browser.

    EDIT:
    Potresti postare una pagina coi messaggi, anche di test, per poterti meglio consigliare?
    Ultima modifica di simpleticket : 13-09-2011 alle ore 15.29.44

  12. #12
    Guest

    Predefinito

    In questo momento non sono a casa quindi non posso postare la pagina, questa sera posto il tutto così eventualmente posso farvi vedere dove riscontro problemi.

    Comunque, più che all'inserimento dei nuovi commenti stavo pensando (magari sbaglio) che la cosa più facile da fare era la seguente.

    Apro la pagina e tramite una funzione aggiorno il div e inserico tutti i commenti, quando l'utente inserisce un nuovo commento ricarico il div, quando tramite un terzo script mi accorgo che è stato postato un nuovo commento ricarico il div.

    Quindi stavo cercando di capire come inserire tutta la visualizzazione del commento in un file esterno ricchiamabile nel div.

  13. #13
    Guest

    Predefinito

    Citazione Originalmente inviato da nextonext Visualizza messaggio
    ...

    Apro la pagina e tramite una funzione aggiorno il div e inserico tutti i commenti, quando l'utente inserisce un nuovo commento ricarico il div, quando tramite un terzo script mi accorgo che è stato postato un nuovo commento ricarico il div.
    ...
    Mi viene da chiedere: col tuo ragionamento, genero una pagina "vuota", e poi in maniera asincrona la riempio prelevando i dati dal server. Ma non fai prima a generare la pagina con già dentro i contenuti che poi aggiornerai con l'inserimento dei nuovi commenti.

    La tua impostazione ha tra l'altro anche l'inconveniente che qualora l'utente abbia Javascript disabilitato, non vedrà mai i commenti. Neanche ricaricando la pagina.

    Riguardo i nuovi commenti, bisogna distinguere il caso in cui il nuovo commento sia caricato da te o da qualcun altro.
    Per quest'ultimo caso, tramite un setInteval/setTimeout, ogni X secondi il ricarico dei messaggi.

    Nel caso in cui il nuovo messaggio lo sta scrivendo l'utente, procedi come ti dicevo.

  14. #14
    Guest

    Predefinito

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    La tua impostazione ha tra l'altro anche l'inconveniente che qualora l'utente abbia Javascript disabilitato, non vedrà mai i commenti. Neanche ricaricando la pagina.
    A questo non avevo pensato

    Citazione Originalmente inviato da simpleticket Visualizza messaggio
    Mi viene da chiedere: col tuo ragionamento, genero una pagina "vuota", e poi in maniera asincrona la riempio prelevando i dati dal server. Ma non fai prima a generare la pagina con già dentro i contenuti che poi aggiornerai con l'inserimento dei nuovi commenti.
    Magari sono io che non ho capito, ma quando inserisci un commento e premo F5 la pagina mi viene ricaricata e vedo tutti i commenti correttamente inseriti, però il commento che stavo scrivendo mi viene inserito due volte. Con Javascript non si pone questo problema?

  15. #15
    Guest

    Predefinito

    Il commento lo vedi due volte poichè, è la stessa pagina che si occupa di ricevere i dati della form e registrarli sul db.
    Quando premi F5 ricarichi la pagina ricaricando pure i dati, e quindi riesegue tutta la procedura. Se ripremi F5 avrai pure il terzo!

    Un metodo per evitare questo è quello di mettere come action della form un'altra pagina, e da questa, alla fine degli script fai u redirect sulla pagina che mostra i commenti.

  16. #16
    Guest

    Predefinito

    Ho risolto il problema dei commenti, inserendo un banale redirect alla pagina stessa dopo l'inserimento dei commenti.
    Domani affronterò il problema della visualizzazione in tempo reale dei commenti.
    Il primo problema che mi viene in mente è come capire quando l'utente non sta svolgendo operazioni.
    (Non credo sia il caso di aggiornare la pagina mentre l'utente sta inserendo un commento o simili). Che ne pensate?

  17. #17
    Guest

    Predefinito

    Per ora ti dico che devi pensare ad aggiornamenti con cadenza periodica.

    Se A scrive un commento non puoi pensare che a B si aggiorni la pagina nel momento in cui il commento viene inserito (non siamo in Java).
    Semmai la pagina ogni x secondi ricarica i commenti e quindi se nel frattempo un utente scrive un commento, questo viene visualizzato.

  18. #18
    Guest

    Predefinito

    Potrei fare una cosa di questo tipo:

    Codice:
    setInterval("location.href = 'http://www.indirizzo_pagina.it/'", 300000);
    Per aggiornare la pagina ogni 5 minuti.

    Non so però come evitare il caricamento se l'utente sta scrivendo un commento, o sta eseguendo qualche operazione.

  19. #19
    Guest

    Predefinito

    Al posto di ricaricare l'intera pagina, tramite richiesta ajax aggiorni solo i contenuti.
    Così non interrompi l'operazione dell'utente.

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •