Aggiornare Singoli Dati Meteo Senza Aggiornare tutta la pagina

di il
35 risposte

35 Risposte - Pagina 2

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

    Allora Alka, chiarissimo il tuo discorso, praticamente io vorrei che quando si arriva in questa pagina https://ombarcellonapg.com/saratoga/Headlive.php , siano visibili subito i dati. 

    Ma e' meglio fermarsi un attimo per chiarire un atTimo la situazione, come ho fatto nel post d'apertura per capire se sto percorrendo la strada giusto o meno. 

    1- Io creo un file Modello/template in .php , con dei tag meteo, e lo carico sul mio spazio, che puoi vedere qui: https://ombarcellonapg.com/saratoga/Livetmp.php .

    2- Successivamente do indicazioni al programma che gestisce i dati ricevuti dalla stazione meteo, tramite pannello sul web, di prendere questo file sopra indicato, lui lo prende e trasforma quei tag in dati meteo, e io gli dico che file generare e dove mettere questi dati , ed ogni quanto aggiornarli per ora ogni 15 sec ed e' questo: https://ombarcellonapg.com/saratoga/Live.php

    3- Ora la problematica che a me e' sorta, motivo per cui ho cercato uno script o similare,  che su quest'ultimo file php liscio, arrivano i dati ma non li aggiorna da solo.

    4- Quindi mi chiedo se la strada che stiamo percorrendo e' corretta, o converrebbe lavorare sul file modello il primo di tutti dando li le varie istruzioni di refresh, che poi genera il secondo ? Stavo pensando che nel modello principale io potrei dividere i vari tag in div e fargli fare un refresh ogni 15 secondi div per div? 

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

    17/10/2023 - Markus_89 ha scritto:


    Ma e' meglio fermarsi un attimo per chiarire un atTimo la situazione, come ho fatto nel post d'apertura per capire se sto percorrendo la strada giusto o meno. 

    Mi chiedo se questo “giro” abbastanza complesso sia utile, ma non ho compreso bene la situazione.

    Chi crea il file che contiene i dati da restituire tramite la pagina? Una pagina PHP o un programma esterno?

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

    17/10/2023 - Alka ha scritto:


    17/10/2023 - Markus_89 ha scritto:


    Ma e' meglio fermarsi un attimo per chiarire un atTimo la situazione, come ho fatto nel post d'apertura per capire se sto percorrendo la strada giusto o meno. 

    Mi chiedo se questo “giro” abbastanza complesso sia utile, ma non ho compreso bene la situazione.

    Chi crea il file che contiene i dati da restituire tramite la pagina? Una pagina PHP o un programma esterno?

    Perdonami la lungaggine della spiegazione, ma il giro abbastanza complesso e' obbligato per far convertire i tag meteo del primo foglio in dati meteo del secondo foglio.

    Intendi questo file https://ombarcellonapg.com/saratoga/Live.php che contiene i dati puliti della stazione meteo? Se si viene creato dal mio programma esterno ogni 15secondi.  

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

    17/10/2023 - Markus_89 ha scritto:


    Intendi questo file https://ombarcellonapg.com/saratoga/Live.php che contiene i dati puliti della stazione meteo? Se si viene creato dal mio programma esterno ogni 15secondi.  

    Ma cosa impedisce di caricare questo file di dati anche nella pagina completa per mostrarli come faresti nella pagina parziale usata per il loro aggiornamento?

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

    17/10/2023 - Alka ha scritto:


    17/10/2023 - Markus_89 ha scritto:


    Intendi questo file https://ombarcellonapg.com/saratoga/Live.php che contiene i dati puliti della stazione meteo? Se si viene creato dal mio programma esterno ogni 15secondi.  

    Ma cosa impedisce di caricare questo file di dati anche nella pagina completa per mostrarli come faresti nella pagina parziale usata per il loro aggiornamento?

    Credo nessuno impedisca di farlo, infatti lo stiamo facendo, solo che io adesso mi trovo in una situazione che non so come far apparire subito i dati nel nuovo foglio, prima che inizi il refresh che abbiamo fatto tramite codice, su questo file. https://www.ombarcellonapg.com/saratoga/Headlive.php

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

    17/10/2023 - Markus_89 ha scritto:


    Credo nessuno impedisca di farlo, infatti lo stiamo facendo, solo che io adesso mi trovo in una situazione che non so come far apparire subito i dati nel nuovo foglio, prima che inizi il refresh che abbiamo fatto tramite codice, su questo file. https://www.ombarcellonapg.com/saratoga/Headlive.php

    Usa nella pagina Headlive.php lo stesso codice che usi in Live.php per visualizzare nel <div> della pagina completa i dati che carichi nella pagina parziale.

    Come è possibile che tu riesca a caricare questo file di testo da una pagina PHP e non dall'altra? :)

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

    17/10/2023 - Alka ha scritto:


    17/10/2023 - Markus_89 ha scritto:


    Credo nessuno impedisca di farlo, infatti lo stiamo facendo, solo che io adesso mi trovo in una situazione che non so come far apparire subito i dati nel nuovo foglio, prima che inizi il refresh che abbiamo fatto tramite codice, su questo file. https://www.ombarcellonapg.com/saratoga/Headlive.php

    Usa nella pagina Headlive.php lo stesso codice che usi in Live.php per visualizzare nel <div> della pagina completa i dati che carichi nella pagina parziale.

    Come è possibile che tu riesca a caricare questo file di testo da una pagina PHP e non dall'altra? :)

    Il codice che trovi nella pagina live.php,  e'  generato dal programma esterno, che prende tutto il codice dal modello template Livetmp.php (dove dentro ci sono solo i tag dei dati meteo) e li converte in dati puri, quindi tutto quello che e' codice php o script che io scrivo nel file Livetmp.php viene riportato uguale uguale nel foglio live.php (salvo convertire i tag in dati puri)  Spero di essermi spiegato bene.

    Se proverei a caricare il file Livetmp.php anziche'  Live.php, mi troverei con i tag meteo non convertiti in dati puri, ma uscirebbe cosi : 

    [th0temp-act.1:--] [th0hum-act] [thb0press-act] [wind0wind-act] [rain0total-sumday.1:--]

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

    17/10/2023 - Markus_89 ha scritto:


    Il codice che trovi nella pagina live.php […]

    Premetto che non riuscendo a vedere il codice difficilmente riesco a comprendere lo scenario (su cui insisto che c'è troppa complessità).

    Per risolvere in modo elegante e indolore, basterebbe chiamare la funzione loadData() anche dopo il setInterval(), così da invocare un primo aggiornamento istantaneo, senza aspettare N secondi, quando la pagina generale viene caricata.

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

    Ecco le 3 pagine in questione con i vari codici, in ordine 1- Livetmp.php , 2- Live.php, 3-Healive.php , infine ti metto lo specchietto del programma dove avviene la conversione dei tag meteo in dati. Spero di aiutarti a capire come funziona il tutto.

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    
    </head>
    
    <body>
    	
    <h2><div id="Meteo">[th0temp-act.1:--]
    [th0hum-act] 
    [thb0press-act] 
    [wind0wind-act] 
    [rain0total-sumday.1:--] </div></h2>
    	
    </body>
    </html>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    <body>
        
    <h2><div id="Meteo">22.7
    82.0 
    1010.8 
    0.4 
    0.0 </div></h2>
        
    </body>
    </html>
    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    <body>
        
        <div id="Meteo">
    <h2>Test Dati Meteo</h2>
            </div>
    <script>
    function loadDoc() {
     const xhttp = new XMLHttpRequest();
        xhttp.onload = function() {
       document.getElementById("Meteo").innerHTML =
       this.responseText;
     }
     xhttp.open("GET", "./Live.php");
     xhttp.send();
    };
        setInterval(loadDoc, 15000);
        
        
    </script>
        
    </body>
    </html>

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

    Ho provato ad usare questo codice sotto ma non funziona.

    setInterval(loadDoc, 15000);
     
     $("Meteo").load("./Live.php");

    Mentre mi sono messo a provare a mettere il codice script nella pagina MODELLO TEMPLATE  livetmp.php

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    </head>
    <body>
        
    <div id="Meteo">[th0temp-act.1:--]
    [th0hum-act] 
    [thb0press-act] 
    [wind0wind-act] 
    [rain0total-sumday.1:--] </div>
        
    <script>
    function loadDoc() {
     const xhttp = new XMLHttpRequest();
        xhttp.onload = function() {
       document.getElementById("Meteo").innerHTML =
       this.responseText;
     }
     xhttp.open("GET", "./Live.php");
     xhttp.send();
     };
        
        setInterval(loadDoc, 15000);
    
    
    </script>    
    </body>
    </html>

    Ed il risultato e' che riesco ad avere i dati subito stampati e aggiornati ogni 15 secondi, ma credo che a livello logico funzionale non sia corretto,  o piu' che altro se c'e'  un altra funzione che faccia il refresh del Div con dentro i tag meteo, senza dover usufruire di questo script che praticamente richiama la pagina ad ogni setInterval. 

    O sbaglio? 

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

    Secondo me, il template da cui generi “live.php” dovrebbe essere semplificato, togliendo tutto ciò che fa parte della struttura della pagina, in pratica tutto tranne questa sezione:

    <h2><div id="Meteo">[th0temp-act.1:--]
    [th0hum-act] 
    [thb0press-act] 
    [wind0wind-act] 
    [rain0total-sumday.1:--] </div></h2>

    Inoltre, non puoi dare al <div> un ID (“Meteo”) che è presente anche nella pagina principale, altrimenti avrai due elementi uguali nella pagina; togli quindi l'attributo id="Meteo" che non ti serve.

    Quando carichi la pagina “healive.php” vai a includere anche la parte “live.php” usando la direttiva specifica di PHP:

    <div id="Meteo">
    <?php include 'live.php';?>
    </div>
    
    <script>
      ...
    </script>

    In questo modo, la pagina completa include già la porzione nel file separato che contiene solo la parte formattata dei dati, generata a partire dal template.

    Lo script rimane esattamente com'è, ossia a intervalli regolari va a sostituire il contenuto del <div> con id="Meteo" con il contenuto del file “live.php” incorporato in precedenza; se il contenuto del file esterno cambia a seguito della sua rigenerazione, vedrai anche cambiare i dati.

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

    17/10/2023 - Alka ha scritto:


    Secondo me, il template da cui generi “live.php” dovrebbe essere semplificato, togliendo tutto ciò che fa parte della struttura della pagina, in pratica tutto tranne questa sezione:

    <h2><div id="Meteo">[th0temp-act.1:--]
    [th0hum-act] 
    [thb0press-act] 
    [wind0wind-act] 
    [rain0total-sumday.1:--] </div></h2>

    Inoltre, non puoi dare al <div> un ID (“Meteo”) che è presente anche nella pagina principale, altrimenti avrai due elementi uguali nella pagina; togli quindi l'attributo id="Meteo" che non ti serve.

    Quando carichi la pagina “healive.php” vai a includere anche la parte “live.php” usando la direttiva specifica di PHP:

    <div id="Meteo">
    <?php include 'live.php';?>
    </div>
    
    <script>
      ...
    </script>

    In questo modo, la pagina completa include già la porzione nel file separato che contiene solo la parte formattata dei dati, generata a partire dal template.

    Lo script rimane esattamente com'è, ossia a intervalli regolari va a sostituire il contenuto del <div> con id="Meteo" con il contenuto del file “live.php” incorporato in precedenza; se il contenuto del file esterno cambia a seguito della sua rigenerazione, vedrai anche cambiare i dati.

    Cosi funziona perfettamente, appaiono subito i dati e si aggiornano, ma quello che io voglio chiederti adesso , fermo restando che il template lo abbiamo semplificato.

    Se io volessi dare ad ogni valore meteo, una grafica diversa nel senso di dimensione e posizionamento, metterci un icona accanto, devo agire sul file Livetmp.php , che e' il modello template madre, dividendoli in Div diversi posso farlo? 

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

    17/10/2023 - Markus_89 ha scritto:


    Se io volessi dare ad ogni valore meteo, una grafica diversa nel senso di dimensione e posizionamento, metterci un icona accanto, devo agire sul file Livetmp.php , che e' il modello template madre, dividendoli in Div diversi posso farlo? 

    Il template viene usato per produrre la porzione di pagina da inserire in quella più completa, direttamente tramite “include” e successivamente scaricandola tramite script dalla pagina e inserendola al punto giusto, quindi fondamentalmente su quella porzione di pagina puoi fare quello che vuoi e scriverci tutto ciò che vuoi vedere apparire nella pagina completa, all'inizio o in seguito.

    In breve, la risposta alla domanda è sì.

    Come approccio comunque io consiglierei in futuro di procedere in altro modo: prima di chiedere, provare.
    In caso di problemi, allora chiedere. :)

    Le pagine PHP non scoppiano e non danno la scossa. ;)

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

    Buongiorno Alka, 

    Oggi dopo pranzo farò delle prove, mi è sorto il dubbio di farse queste modifiche sul file template, perché andrò a dividere i vari tag meteo ognuno con il proprio Div (Temperatura , pressione, vento, pioggia) ma vedo che nella pagina Headlive usiamo sia un richiamo di un div meteo specifico e la pagina tramite include, e poi nello script vi è un richiamo pure lì su div meteo.

    Per questo mi sono venuti i dubbi prima di fare modifiche. Ci aggiorniamo tra un paio di ore con le modifiche fatte e posto qui il codice. 

    Grazie per la tua disponibilità!!

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

    Sera a tutti, 

    mi sono dilungato con i tempi, avevo detto dopo pranzo, ma si e' fatto dopo cena eheh!  Intanto un GRAZIE doveroso ad @Alka! 

    Sono riuscito a impostare bene la paginetta, come speravo di fare, ed i dati si aggiornano per bene! eccola: https://www.ombarcellonapg.com/saratoga/Headlive.php

    Solo che adesso volevo chiedere una cosa, e' possibile nel momento in cui viene aggiornato il dato una tipologia di refresh grafico diverso? E mi spiego tipo a dissolvenza, soprattuto nel dato della temperatura piu' grosso? Esiste una soluzione simile? 

    Ecco il codice del template su cui ho lavorato, ho da sistemate delle cosine che non mi quadrano tipo ridurre l'src delle immagini. 

    <!doctype html>
    <html>
    <head>
    <meta charset="utf-8">
    <title>Documento senza titolo</title>
    
    <style type="text/css">
    	
    .Big {
      font-family: Tahoma, Verdana, sans-serif;
      font-size: 4.0em ;
      font-weight: bold;
      margin-top: 10px;
      margin-left: 25px;
    
    }
    	
    div.allinea { float:left; 
    	margin-left:15px;
    	font-family: Baskerville, "Palatino Linotype", Palatino, "Century Schoolbook L", "Times New Roman", "serif";
    	font-size: 20px;
    	text-align: center; }
    	
    .logo{
      width: 25px; 
      height: 25px;
    	padding-right: 5px;
     float: left;
      margin: auto;
     display: block;
      	
    }
    	
    </style>
    	
    </head>
    
    <body>
    
    	<div id="DatiMeteo">
    		<span style="margin-left: 15px; font-size: 20px;">Barcellona Pozzo Di Gotto - Nord Est</span>
    		
    <div class="Big" id="Temperatura">[th0temp-act.1:--] &deg;C</div><!--#Temperatura-->
    <br>
    <div class="allinea" id="Umidita"><img src="https://www.ombarcellonapg.com/saratoga/img/Umidita.png" class="logo" alt="Umidita">[th0hum-act] %</div><!--#Umidita'-->
    		
    <div class="allinea" id="Pressione"><img src="https://www.ombarcellonapg.com/saratoga/img/Pressione.png" class="logo" alt="Pressione">[thb0press-act] Hpa</div><!--#Pressione-->
    		
    <div class="allinea" id="Vento"><img src="https://www.ombarcellonapg.com/saratoga/img/Vento.png" class="logo" alt="Vento">[wind0wind-act] Km/h</div><!--#Vento-->
    		
    <div class="allinea" id="Pioggia"><img src="https://www.ombarcellonapg.com/saratoga/img/Pioggia.png" class="logo" alt="Pioggia">[rain0total-sumday.1:--] mm</div><!--#Pioggia-->
    
    	</div><!--#DatiMeteo-->
    </body>
    </html>
Devi accedere o registrarti per scrivere nel forum
35 risposte