Visualizzazione risultati 1 fino 7 di 7

Discussione: bottone che attiva/disattiva il il refresh automatico delle pagine php

  1. #1
    Guest

    Predefinito bottone che attiva/disattiva il il refresh automatico delle pagine php

    Salve a tutti, vorrei capire come inserire un bottone per attivare/disattivare il refresh automatico delle pagine ogni tot secondi
    Ho una pagina in php dove, quando un utente manda un messaggio, fa apparire da database tutti i messaggi e per il momento ho l'autorefresh continuo sempre
    Vorrei che l'utente scegliesse se fare l'autorefresh oppure disattivarlo
    ok usare l'evento onClick, ma non trovo soluzioni su come

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

    Predefinito

    Sposto in javascript.

    Comunque, come effettui momentaneamente il refresh automatico?

    Ciao!

  3. #3
    Guest

    Predefinito

    bè se si trova una soluzione in codice php ancora meglio :) cmq ok
    per ora uso:
    <meta http-equiv="refresh" content="2">

    2 sono i secondi tra un refresh e un altro

  4. #4
    L'avatar di radiodelmomento
    radiodelmomento non è connesso AlterGuru
    Data registrazione
    09-09-2010
    Messaggi
    1,075

    Predefinito

    Vuoi farlo in PHP oppure JS?
    In PHP è semplicissimo, mentre in JS devi includere jQuery (è comunque semplice) e la pagina non si ricaricherà.

  5. #5
    Guest

    Predefinito

    mi interessa la soluzione più leggera e semplice possibile, così anche da non caricare troppo il server
    Io al momento ho una soluzione di questo tipo:
    pagina con 2 frame, nel frame di sinistra c'è la connessione a database e stampa dell'elenco dei messaggi, col codice scritto prima per fare il refresh della pagina
    Nel frame di destra ho il link per aprire la chat tramite javascript, così refresha solo la pagina di sinistra e non dà problemi quando qualcuno scrive
    Se si riesce a trovare un modo per non fare il refresh fisico della pagina sarebbe molto bello :D
    Jquery l'ho comunque già nel mio sito

    Sentendo che si poteva fare con jquery ho fatto una ricerca e ho trovato questo
    Codice HTML:
    <html>
    <head>
    <!-- For ease i'm just using a JQuery version hosted by JQuery- you can download any version and link to it locally -->
    <script src="http://code.jquery.com/jquery-latest.js"></script>
    <script>
     $(document).ready(function() {
     	 $("#responsecontainer").load("response.php");
       var refreshId = setInterval(function() {
          $("#responsecontainer").load('response.php?randval='+ Math.random());
       }, 9000);
       $.ajaxSetup({ cache: false });
    });
    </script>
    </head>
    <body>
     
    <div id="responsecontainer">
    </div>
    </body>
    praticamente qua prende il contento del file response.php e lo mette nel div responsecontainer giusto?
    se io volessi non prenderlo da file ma semplicemente refreshare quel div basta sostiuire response.php con #responsecontainer?
    Ultima modifica di alemoppo : 31-01-2012 alle ore 18.48.34 Motivo: +tag [html]

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

    Predefinito

    Se vuoi usare soltanto php (quindi, è compatibile anche per chi non supporta javascript), ho fatto una soluzione con i cookie: se non esiste il cookie, la pagina non effettua il refresh, altrimenti lo effettua:

    (potrebbe essere una soluzione per chi non supporta javascript):
    Codice PHP:
    <?php
    if(isset($_POST['refresh']))
    {
    if(
    $_POST['refresh'] == 'disattiva')
    setCookie('stop'); //settiamo il cookie
    else setCookie('stop','',time()-3000); //eliminiamo il cookie
    header('Location: '.$_SERVER['PHP_SELF']); //applico i cambiamenti della setCookie (aggiornando la pagina)
    }

    if(!isset(
    $_COOKIE['stop']))
    echo
    '<meta http-equiv="refresh" content="2">';

    ?>
    <form action="<?= $_SERVER['PHP_SELF']; ?>" method="post">
    <input type="submit" name="refresh" value="<?= isset($_COOKIE['stop'])?'attiva':'disattiva'; ?>">
    </form>
    Comunque, sarebbe meglio usare ajax, e non i frame!.

    mentre in JS devi includere jQuery
    Beh, non è detto, anche se con jQuery è molto più semplice.
    Per questa strada, potresti usare .load(), oppure $.ajax(), oppure .post() ...

    EDIT:

    Ho letto il tuo ultimo messaggio.. visto che lo hai già incluso, vedi le cose che ti ho linkato...

    RI-EDIT:
    praticamente qua prende il contento del file response.php e lo mette nel div responsecontainer giusto?
    Sì; più precisamente prende l'output di "response.php", e non il contenuto del file.
    se io volessi non prenderlo da file ma semplicemente refreshare quel div basta sostiuire response.php con #responsecontainer?
    No. Cosa significa "refreshare quel div"? Dovresti aggiornare il contenuto del div prelevandolo da un file. Il sistema funziona in questo modo.

    Ciao!
    Ultima modifica di alemoppo : 31-01-2012 alle ore 18.53.41

  7. #7
    Guest

    Predefinito

    per entrare in quella pagina ho già un sistema di login, se vede che non è stato fatto il cookie non fa apparire la pagina ma dice "torna alla home e registrati"
    Si riesce a fare quello che dici te senza andare in conflitto?

    Niente sono un idiota XD ho provato una variante del codice che ho postato prima, ma mi ero dimenticato di togliere il refresh della pagina totale continuo, adesso che l'ho tolto funzia tutto alla grande
    Adesso che mi refresha solo un div posso togliere i frame e fare tutto su una pagina unica

Regole di scrittura

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