Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

di il
35 risposte

Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

Ciao a tutti ragazzi, sono nuovo su questo forum, non ho visto forum di presentazioni quindi chiedo scusa qualora non avessi visto questa sezione, sono un appassionato meteo e gestisco i dati forniti dalla mia stazione meteo, che vengono caricati online tramite un software chiamato meteobrigde, in queste due settimane volevo creare uno specchietto nel mio sito personalizzato, dove mettere soltanto alcuni dati e farli aggiornare ogni 60 secondi, poi modificarli graficamente tramite codice php di cui ho conoscenza base.  Ed a quanto pare serve scrivere del codice javascript sul quale io ho conoscenza pari a 0, spero di trovare qualcuno che possa aiutarmi in merito qui sul forum. 

Per farmi aiutare nel mio modo possibile, cerco di spiegarvi come funziona il sistema dei dati sul mio sito. Praticamente io ho creato un file di php pulito, solo con dei TAG  chiamato Modello(template) che il programma meteobridge che vi dicevo prima elabora e converte in dati e poi carica sul sito in una pagina php. 

File template modello : ombarcellonapg.com/saratoga/Livetmp.php

File elaborato convertito php: ombarcellonapg.com/saratoga/Live.php

Ora il secondo file generato se io faccio aggiornamento della pagina classico da browser si aggiorna. Ma io vorrei automattizare il tutto e fare aggiornare i singoli dati da soli. 

Grazie mille anticipate a chi mi aiutera' a realizzare questa cosa. 

35 Risposte

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    15/10/2023 - Markus_89 ha scritto:


    Ora il secondo file generato se io faccio aggiornamento della pagina classico da browser si aggiorna. Ma io vorrei automattizare il tutto e fare aggiornare i singoli dati da soli. 

    La risposta al tuo problema è AJAX, tecnologia che esiste da prima degli anni 2000. :)

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    16/10/2023 - Alka ha scritto:


    15/10/2023 - Markus_89 ha scritto:


    Ora il secondo file generato se io faccio aggiornamento della pagina classico da browser si aggiorna. Ma io vorrei automattizare il tutto e fare aggiornare i singoli dati da soli. 

    La risposta al tuo problema è AJAX, tecnologia che esiste da prima degli anni 2000. :)

    Ciao Alka, 

    quindi ho sbagliato sezione?!?  In caso potete spostarla voi? 

    Purtroppo sconosco questo linguaggio ed il suo funzionamento, ho visto il tuo link, ma non comprendo come integrarlo sul mio sito? Devo metterlo in un altra pagina che richiama quella generata in php dal programma? Ossia Live.php?

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    Più esattamente, devi creare una 

    Single Page Application

    che si appoggia a Ajax. 

    Devi studiarti JavaScript. 

    Una libreria che aiuta a fare queste cose e' Backbone

    Poi servira' una libreria per l'interfaccia: jqWidgets. 

    poi, per grafici ed altro c'e' da sbizzarrirsi.

    Per fare anche le cose piu' basilari serve un sacco di tempo, non sono 2 righe di codice, ma 200!

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    16/10/2023 - Alka ha scritto:


    15/10/2023 - Markus_89 ha scritto:


    Ora il secondo file generato se io faccio aggiornamento della pagina classico da browser si aggiorna. Ma io vorrei automattizare il tutto e fare aggiornare i singoli dati da soli. 

    La risposta al tuo problema è AJAX, tecnologia che esiste da prima degli anni 2000. :)

    Ciao Alka, 

    quindi ho sbagliato sezione?!?  In caso potete spostarla voi? 

    Purtroppo sconosco questo linguaggio ed il suo funzionamento, ho visto il tuo link, ma non comprendo come integrarlo sul mio sito? Devo metterlo in un altra pagina che richiama quella generata in php dal programma? Ossia Live.php?

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    16/10/2023 - migliorabile ha scritto:


    Più esattamente, devi creare una 

    Single Page Application

    che si appoggia a Ajax. 

    Devi studiarti JavaScript. 

    Una libreria che aiuta a fare queste cose e' Backbone

    Poi servira' una libreria per l'interfaccia: jqWidgets. 

    poi, per grafici ed altro c'e' da sbizzarrirsi.

    Per fare anche le cose piu' basilari serve un sacco di tempo, non sono 2 righe di codice, ma 200!

    Grazie per la risposta, Infatti come dicevo non ho conoscenza in merito, e non credo che avro' modo di studiare purtroppo. 

    Come dici giustamente anche per cose basilari serve tanto tempo perche' c'e' tanto codice da scrivere, quindi mi sa che devo abbandonare l'idea. 

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    16/10/2023 - Markus_89 ha scritto:


    Purtroppo sconosco questo linguaggio ed il suo funzionamento, ho visto il tuo link, ma non comprendo come integrarlo sul mio sito? Devo metterlo in un altra pagina che richiama quella generata in php dal programma? Ossia Live.php?

    AJAX non è un linguaggio, ma l'acronimo di una tecnologia, o di una API.

    Per integrarlo nel tuo sito senza fare troppa fatica, ovvero senza usare eccessivo JavaScript, è sufficiente che il file PHP non restituisca una pagina intera, ma solo il pezzo una parte, ossia il “pezzettino” HTML di interfaccia che deve essere aggiornato.

    Puoi mettere quel pezzo in un DIV e quando lo desideri scaricarlo aggiornato dal server.

    Riassumendo, la possibilità di aggiornare la pagina senza scaricarla tutta si basa su due elementi:

    1. un pezzo di script che si occupa di andare a recuperare la parte da aggiornare, o meglio i dati per poterla generare (ma nel tuo caso, se non hai familiarità con JavaScript, meglio la prima soluzione);
    2. uno script PHP che produca il markup (HTML) necessario, quello del “pezzo di pagina” da aggiornare e solo quello, al posto della pagina intera.

    Ovviamente, dovrai avere anche una pagina PHP completa in cui caricare tutto inizialmente: da quel momento in poi, tramite codice JS, potrai scaricare e sostituire la parte relativa alla sezione da aggiornare, senza ricaricare l'intera pagina.

    La pagina che ti avevo linkato all'inizio (questa) spiega proprio come fare questo: sono poche righe di codice da copiare, non serve un diploma.

    E' chiaro che se manco ci provi un minimo, difficilmente potrai raggiungere qualche tipo di risultato… :|

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    16/10/2023 - Alka ha scritto:


    16/10/2023 - Markus_89 ha scritto:


    Purtroppo sconosco questo linguaggio ed il suo funzionamento, ho visto il tuo link, ma non comprendo come integrarlo sul mio sito? Devo metterlo in un altra pagina che richiama quella generata in php dal programma? Ossia Live.php?

    AJAX non è un linguaggio, ma l'acronimo di una tecnologia, o di una API.

    Per integrarlo nel tuo sito senza fare troppa fatica, ovvero senza usare eccessivo JavaScript, è sufficiente che il file PHP non restituisca una pagina intera, ma solo il pezzo una parte, ossia il “pezzettino” HTML di interfaccia che deve essere aggiornato.

    Puoi mettere quel pezzo in un DIV e quando lo desideri scaricarlo aggiornato dal server.

    Riassumendo, la possibilità di aggiornare la pagina senza scaricarla tutta si basa su due elementi:

    1. un pezzo di script che si occupa di andare a recuperare la parte da aggiornare, o meglio i dati per poterla generare (ma nel tuo caso, se non hai familiarità con JavaScript, meglio la prima soluzione);
    2. uno script PHP che produca il markup (HTML) necessario, quello del “pezzo di pagina” da aggiornare e solo quello, al posto della pagina intera.

    Ovviamente, dovrai avere anche una pagina PHP completa in cui caricare tutto inizialmente: da quel momento in poi, tramite codice JS, potrai scaricare e sostituire la parte relativa alla sezione da aggiornare, senza ricaricare l'intera pagina.

    La pagina che ti avevo linkato all'inizio (questa) spiega proprio come fare questo: sono poche righe di codice da copiare, non serve un diploma.

    E' chiaro che se manco ci provi un minimo, difficilmente potrai raggiungere qualche tipo di risultato… :|

    Ciao alla, grazie per le indicazioni vediamo se ho capito qualcosa: 

    1- Devo racchiudere all interno di un div tutti i dati o diversi div uno per ogni tipologia di dato, tipo “div pioggia”, “div vento” ecc…?? e credo che lo debba fare sulla pagina template. La prima non quella generata dopo giusto ?

    2- vedere se trovo il pezzo di script sulla pagina indicata da te, che mi prende i dati sopra indicati.

    3- Successivamente usare uno script php che richiami il pezzo di pagina aggiornato deduco?

    4- questi script 2 e 3 dove vanno inseriti in una pagina nuova rispetto alle prime indicate all apertura del post o vanno inseriti in una delle due ? 

    5- Quando dici che dopo aver fatto tutto quello sopra indicato, devo procedere con codice javascript per scaricare e sostituire il pezzo di pagina in questione, questo codice lo trovo sempre in quella pagina da te indicata ? E dove andrebbe messo quest altro pezzo di codice ? 

    Grazie mille 

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    16/10/2023 - Markus_89 ha scritto:


    Quando dici che dopo aver fatto tutto quello sopra indicato, devo procedere con codice javascript per scaricare e sostituire il pezzo di pagina in questione, questo codice lo trovo sempre in quella pagina da te indicata ? E dove andrebbe messo quest altro pezzo di codice ? 

    Facendo una gran commistione, praticamente mi hai richiesto tutto quello che è stato detto in precedenza mescolando qualsiasi cosa.

    Ripeto: hai letto quello che c'è scritto qui?

    Inutile pensare a una megasoluzione prendendo in esame tutto prima di capire come funziona il “gioco”: leggi gli esempi nel link, è un sito che uso per istruire anche i bambini, è impossibile che tu non riesca a comprenderlo (se lo leggi, s'intende).

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    17/10/2023 - Alka ha scritto:


    16/10/2023 - Markus_89 ha scritto:


    Quando dici che dopo aver fatto tutto quello sopra indicato, devo procedere con codice javascript per scaricare e sostituire il pezzo di pagina in questione, questo codice lo trovo sempre in quella pagina da te indicata ? E dove andrebbe messo quest altro pezzo di codice ? 

    Facendo una gran commistione, praticamente mi hai richiesto tutto quello che è stato detto in precedenza mescolando qualsiasi cosa.

    Ripeto: hai letto quello che c'è scritto qui?

    Inutile pensare a una megasoluzione prendendo in esame tutto prima di capire come funziona il “gioco”: leggi gli esempi nel link, è un sito che uso per istruire anche i bambini, è impossibile che tu non riesca a comprenderlo (se lo leggi, s'intende).

    Buongiorno Alka,

    sin dal primo post che hai fatto, ho dato un occhiata a quel sito, dove c'e' un esempio nella prima pagina, dove praticamente a livello elementare e per me ignorante in tale materia, credo di aver capito che lui crea un codice html, dove  crea un div al quale da un ID di riferimento, mette un testo, e poi scrive un codice per creare un pulsante che al click, che al click carica un documento con all'interno un altro contenuto.

    Sotto invece e' presente un codice AJAX che va inserito all'interno di tag SCRIPT o sbaglio? E dove va messo nell'head dello stesso foglio? 

    Questo codice apre il documento, cerca il tag DIV ID che gli viene indicato da me, successivamente va ad aprire il documento che gli indico io, tale documento che puo' essere pure in .php deve stare nella stessa directory dell'altro file giusto? 

    Vorrei applicare questi due codici separati alla mia pagina, ma non capisco bene dove posizionare i codici, per farli funzionare. 

    Grazie e perdonate la mia non conoscenza di questi codici. 

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    17/10/2023 - Markus_89 ha scritto:


    sin dal primo post che hai fatto, ho dato un occhiata a quel sito, dove c'e' un esempio nella prima pagina, dove praticamente a livello elementare e per me ignorante in tale materia, credo di aver capito che lui crea un codice html, dove  crea un div al quale da un ID di riferimento, mette un testo, e poi scrive un codice per creare un pulsante che al click, che al click carica un documento con all'interno un altro contenuto.

    Perfetto: questa interpretazione è corretta.

    17/10/2023 - Markus_89 ha scritto:


    Sotto invece e' presente un codice AJAX che va inserito all'interno di tag SCRIPT o sbaglio? E dove va messo nell'head dello stesso foglio? 

    Se accedi alle pagine successive della sezione, noterai diversi esempi con un pulsante Try It Yourself con cui puoi vedere il codice della pagina completa.

    In linea di massima, il codice si trova nella pagina completa che vai a scaricare inizialmente e che fornisce l'infrastruttura generale dell'interfaccia utente, con quel famigerato <div> aggiornabile che può partire completamente vuoto, oppure contenere già i primi dati aggiornati, da rinfrescare successivamente.

    Negli esempi del sito, la procedura che aggiorna i dati è attivata dalla pressione di un pulsante, che potresti provare come primo tentativo e sostituire poi l'evento del click sul pulsante con la funzione setInterval() per “temporizzare” questa procedura, invece di legarla a una interazione esplicita dell'utente.

    Su clic o sull'intervallo, la procedura che usa XMLHttpRequest chiama dinamicamente (senza ricaricare la pagina intera) un indirizzo del server, che potrebbe rispondere con dati, con un pezzo di pagina HTML da inserire (che è il caso usato nel sito), ecc. A quell'indirizzo potrebbe corrispondere un testo fisso, un file HTML, una pagina PHP, quello che vuoi…

    In definitiva, puoi far scaricare una pagina completa in HTML o in PHP che contenga tutte le parti “fisse”, più la parte dinamica che può essere vuota o partire già con i dati iniziali; nella pagina dovrà essere presente anche lo script JavaScript che, a tempo o su clic o altro evento, andrà a richiamare un altro indirizzo che corrisponde a un file statico o un file PHP che produce in alternativa un pezzo di HTML da visualizzare nella pagina ospitante, oppure i dati per creare l'interfaccia lato script (più difficile).

    17/10/2023 - Markus_89 ha scritto:


    Questo codice apre il documento, cerca il tag DIV ID che gli viene indicato da me, successivamente va ad aprire il documento che gli indico io, tale documento che puo' essere pure in .php deve stare nella stessa directory dell'altro file giusto? 

    Il documento che vai a caricare lo puoi mettere praticamente ovunque tu voglia.

    17/10/2023 - Markus_89 ha scritto:


    Vorrei applicare questi due codici separati alla mia pagina, ma non capisco bene dove posizionare i codici, per farli funzionare. 

    Il codice è uno. Vedi gli esempi nelle pagine successive della sezione del sito W3CSchool per un esempio.

    Nel sito viene usato un file di testo che contiene l'HTML da inserire nella pagina: nel tuo caso, potrà invece essere sostituito dal file PHP che, sfruttando il linguaggio PHP appunto, potrà usare le istruzioni dell'interprete per recuperare i dati da inserire nel pezzo di pagina da restituire.

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    17/10/2023 - Markus_89 ha scritto:


    Sotto invece e' presente un codice AJAX che va inserito all'interno di tag SCRIPT o sbaglio? E dove va messo nell'head dello stesso foglio? 

    Se accedi alle pagine successive della sezione, noterai diversi esempi con un pulsante Try It Yourself con cui puoi vedere il codice della pagina completa.

    In linea di massima, il codice si trova nella pagina completa che vai a scaricare inizialmente e che fornisce l'infrastruttura generale dell'interfaccia utente, con quel famigerato <div> aggiornabile che può partire completamente vuoto, oppure contenere già i primi dati aggiornati, da rinfrescare successivamente.

    Negli esempi del sito, la procedura che aggiorna i dati è attivata dalla pressione di un pulsante, che potresti provare come primo tentativo e sostituire poi l'evento del click sul pulsante con la funzione setInterval() per “temporizzare” questa procedura, invece di legarla a una interazione esplicita dell'utente.

    Su clic o sull'intervallo, la procedura che usa XMLHttpRequest chiama dinamicamente (senza ricaricare la pagina intera) un indirizzo del server, che potrebbe rispondere con dati, con un pezzo di pagina HTML da inserire (che è il caso usato nel sito), ecc. A quell'indirizzo potrebbe corrispondere un testo fisso, un file HTML, una pagina PHP, quello che vuoi…

    In definitiva, puoi far scaricare una pagina completa in HTML o in PHP che contenga tutte le parti “fisse”, più la parte dinamica che può essere vuota o partire già con i dati iniziali; nella pagina dovrà essere presente anche lo script JavaScript che, a tempo o su clic o altro evento, andrà a richiamare un altro indirizzo che corrisponde a un file statico o un file PHP che produce in alternativa un pezzo di HTML da visualizzare nella pagina ospitante, oppure i dati per creare l'interfaccia lato script (più difficile).

    17/10/2023 - Markus_89 ha scritto:


    Questo codice apre il documento, cerca il tag DIV ID che gli viene indicato da me, successivamente va ad aprire il documento che gli indico io, tale documento che puo' essere pure in .php deve stare nella stessa directory dell'altro file giusto? 

    Il documento che vai a caricare lo puoi mettere praticamente ovunque tu voglia.

    17/10/2023 - Markus_89 ha scritto:


    Vorrei applicare questi due codici separati alla mia pagina, ma non capisco bene dove posizionare i codici, per farli funzionare. 

    Il codice è uno. Vedi gli esempi nelle pagine successive della sezione del sito W3CSchool per un esempio.

    Nel sito viene usato un file di testo che contiene l'HTML da inserire nella pagina: nel tuo caso, potrà invece essere sostituito dal file PHP che, sfruttando il linguaggio PHP appunto, potrà usare le istruzioni dell'interprete per recuperare i dati da inserire nel pezzo di pagina da restituire.

    Ciao Alka, 

    ho appena copiato il codice e modificato ed adesso come si puo' vedere alla pagina Documento senza titolo (ombarcellonapg.com)

    Cliccando sul pulsante appaiono i dati aggiornati..

    Come indicavi tu adesso io dovrei togliere il pulsante e inserire un intervallo tale da fare questa operazione automaticamente senza azioni aggiuntive ogni X tempo e senza aggiornare tutta la pagina. 

    Sto guardando quella pagina da te linkata , dove viene fatto l'esempio della scritta hello inviata ogni x tempo. 

    Ma nel mio caso dovrei eliminare solo la riga all'interno del DIV o devo fare anche modifiche dentro lo script? 

    Sto facendo alcune prove ma non riesco a capire come funziona, credo che la funzione LoadDoc, deve restare.

     <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    
    <body>
    	
    	<div id="Meteo">
    <h2>Test Dati Meteo</h2>
    <button type="button" onclick="loadDoc()">Aggiorna Dati Meteo</button>
    		</div>
    
    <script>
    function loadDoc() {
      const xhttp = new XMLHttpRequest();
      xhttp.onload = function() {
        document.getElementById("Meteo").innerHTML =
        this.responseText;
      }
      xhttp.open("GET", "./Live.php");
      xhttp.send();
    }
    	
    </script>
    </body>
    </html>
  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    17/10/2023 - Markus_89 ha scritto:


    Sto facendo alcune prove ma non riesco a capire come funziona, credo che la funzione LoadDoc, deve restare.

    Sì, la funzione LoadDoc() deve restare, perché è quella che contiene il codice responsabile del recupero della porzione aggiornata e del suo inserimento nella pagina.

    Devi solo togliere il pulsante (se non ti serve più) e fare sì che esso non appaia più, ma così non potrai richiamare la funzione cliccandoci sopra.

    Tuttavia, la tua funzione verrà richiamata in automatico a un'altra condizione, in questo caso il “tick” di un intervallo, se utilizzi setInterval() passandola come parametro, assieme ai secondi di attesa tra una esecuzione e l'altra.

    Nel tuo script quindi, dopo e fuori dal corpo della funzione loadDoc(), che così deve rimanere, ti basta aggiungere una riga tipo questa:

    setInterval(loadDoc, 1000);

    In questo modo, indichi alla pagina di chiamare ogni secondo (ogni 1000 msec) la funzione loadDoc().

    Non dovrebbe servire nient'altro (per il meccanismo in sé).

    Potrai chiaramente fare modifiche a piacimento sia alla pagina completa o alla parte che scarichi, finché lo script continua a lavorare in questo modo.

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    17/10/2023 - Alka ha scritto:


    17/10/2023 - Markus_89 ha scritto:


    Sto facendo alcune prove ma non riesco a capire come funziona, credo che la funzione LoadDoc, deve restare.

    Sì, la funzione LoadDoc() deve restare, perché è quella che contiene il codice responsabile del recupero della porzione aggiornata e del suo inserimento nella pagina.

    Devi solo togliere il pulsante (se non ti serve più) e fare sì che esso non appaia più, ma così non potrai richiamare la funzione cliccandoci sopra.

    Tuttavia, la tua funzione verrà richiamata in automatico a un'altra condizione, in questo caso il “tick” di un intervallo, se utilizzi setInterval() passandola come parametro, assieme ai secondi di attesa tra una esecuzione e l'altra.

    Nel tuo script quindi, dopo e fuori dal corpo della funzione loadDoc(), che così deve rimanere, ti basta aggiungere una riga tipo questa:

    setInterval(loadDoc, 1000);

    In questo modo, indichi alla pagina di chiamare ogni secondo (ogni 1000 msec) la funzione loadDoc().

    Non dovrebbe servire nient'altro (per il meccanismo in sé).

    Potrai chiaramente fare modifiche a piacimento sia alla pagina completa o alla parte che scarichi, finché lo script continua a lavorare in questo modo.

    Perfetto Alka, funziona perfettamente, l'aggiornamento in questione ma ho dei quesiti che mi pongo e che ti pongo: 

    Ogni volta che io aggiorno questa pagina non mi escono subito i dati, questo perche'  parto da una pagina bianca con la scritta in alto TEST METEO, dove non ci sono i dati deduco giusto? Ma vengono solo importati. Posso risolvere questa situazione partendo dalla pagina che genera i dati ?? Se si devo comunque cambiare il codice? 

    Dato che poi vorrei realizzare uno specchietto con questi dati, sistemati graficamente ecc…ecc…. ma vorrei che apparissero subito i dati corretti e man mano aggiornati. 

    Grazie mille anticipate.  

  • Re: Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

    17/10/2023 - Markus_89 ha scritto:


    Ogni volta che io aggiorno questa pagina non mi escono subito i dati, questo perche'  parto da una pagina bianca con la scritta in alto TEST METEO, dove non ci sono i dati deduco giusto?

    Se per “aggiornare” intendi navigare sulla pagina la prima volta, la pagina riporterà ciò che tu decidi di inserire inizialmente nella stessa.

    17/10/2023 - Markus_89 ha scritto:


    Posso risolvere questa situazione?

    Certo.

    17/10/2023 - Markus_89 ha scritto:


    Dato che poi vorrei realizzare uno specchietto con questi dati, sistemati graficamente ecc…ecc…. ma vorrei che apparissero subito i dati corretti e man mano aggiornati. 

    Dove hai la scritta “Test…”, scrivi invece i dati aggiornati da subito. Poi ci penserà la procedura a intervalli regolari ad andare a sostituire quel contenuto con quello nuovo.

    In poche parole, tu hai inserito un testo che poi sostituisci dinamicamente con una pagina parziale contenenti i dati: vuoi vedere i dati al posto del testo? allora sostituisci il testo con i dati. :)

Devi accedere o registrarti per scrivere nel forum
35 risposte