[PHP] Pagina html che legge file txt

Stato
Chiusa ad ulteriori risposte.

Carmelo Catalano

Nuovo Utente
9 Gen 2017
23
0
1
52
Mascali (CT)
Salve, ho la necessità di visualizzare su una pagina html, i dati prelevati da un file txt che si aggiorna ogni 60 secondi.
Come posso fare ?
In pratica il file txt, contiene dei dati numerici, che scaturiscono dalla mia stazione meteo, ma ovviamente sono poco leggibili e visualizzabili per tutti, per questo vorrei creare una o più pagine web (va bene anche html) sul mio sito, come si può fare ?
Per rendere l'idea di che genere di dati si tratta, ecco il file .txt in questione http://www.stazionemeteonunziata.it/meteo/realtime.txt a prima vista si può notare il primo dato che indica la data, poi l'ora, poi temperatura, umidità, ecc.ecc.
Grazie in anticipo


P.S. dimenticavo di dire che il file txt si trova sul server e che viene richiamato o visualizzato tramite url...praticamente quello che ho postato sopra
 
Ultima modifica:

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.278
330
83
Con il solo html non puoi fare nulla ti occorre un linguaggio dinamico!
se vuoi ti sposto nella sezione che preferisci es: PHP, Javascript
 

macus_adi

Utente Attivo
5 Dic 2017
1.312
88
48
IT/SW
PHP:
$data=str_getcsv(file_get_contents('http://www.stazionemeteonunziata.it/meteo/realtime.txt')," ");
//PHP >7
dd($data);

//PHP <7
print_r($data);
//OR
var_dump($data);
 

Carmelo Catalano

Nuovo Utente
9 Gen 2017
23
0
1
52
Mascali (CT)
cosi viene visualizzato per come appare sul file txt, io invece devo poter visualizzare i dati, magari in delle tabelle, cioè, ad esempio...

Data : xxxxxxx Ora : xxxxx
Temperatura xxxx
Umidità ; xxxx
ecc.ecc. insomma non nell'ordine come si vedono sul file txt
è fattibile ?
 

macus_adi

Utente Attivo
5 Dic 2017
1.312
88
48
IT/SW
cosi viene visualizzato per come appare sul file txt, io invece devo poter visualizzare i dati, magari in delle tabelle, cioè, ad esempio...
Così viene inserito in un array.... dall'array crei la parte che ti serve in tabelle.... quindi... ipotizzando che tu abbia la mappatura:
PHP:
$ar_mappatura=['temperatura','orario','bla bla vl'];
foreach($data as $k=>$v){
echo $ar_mappatura[$k].': '.$v.'<br>;
}
Una cosa del genere.
 

Carmelo Catalano

Nuovo Utente
9 Gen 2017
23
0
1
52
Mascali (CT)
ehm...mappatura che intendi..scusami ma non sono pe rnulla pratico... :(
cioè, se io voglio richiamare un certo dato, ad esempio il dato della temperatura, che nel file txt è il terzo dato partendo da sinistra...e voglio inserirlo in un può x della mia pagina, magari all'interno di una cella...
 

macus_adi

Utente Attivo
5 Dic 2017
1.312
88
48
IT/SW
PHP:
$url='http://www.stazionemeteonunziata.it/meteo/realtime.txt';
$dati=str_getcsv(file_get_contents($url)," ");
print_r($dati);
Questo l'output
Codice:
Array
(
[0] => 12/28/18
[1] => 19:12:06
[2] => 9.2
[3] => 70
[4] => 4.0
[5] => 6.8
[6] => 9.7
[7] => 200
[8] => 0.0
[9] => 0.0
[10] => 1027.8
[11] => SSW
[12] => 2
[13] => km/h
[14] => C
[15] => hPa
[16] => mm
[17] => ---
[18] => ---
[19] => 28.4
[20] => 28.4
[21] => ---
[22] => 16.6
[23] => 53
[24] => 8.3
[25] => ---
[26] => 14.8
[27] => 12:33
[28] => 7.7
[29] => 4:57
[30] => 17.7
[31] => 6:22
[32] => 17.7
[33] => 6:22
[34] => 1029.0
[35] => 2:13
[36] => 1026.5
[37] => 13:17
[38] => 1.23
[39] => 1.23
[40] => 11.3
[41] => 9.4
[42] => ---
[43] => ---
[44] => 0.00
[45] => ---
[46] => ---
[47] => 0.0
[48] => 0
[49] => 0
[50] => 0
[51] => 0
[52] => 0
[53] => 0
[54] => 0
[55] => 0
[56] => 0
[57] => 0
[58] =>
)
ora per ottenere un dato che ti server basta che metti:
PHP:
//al posto dello 0 "ZERO" metti l'indice numerico che ti serve
//stampa data
echo $dati[0];
//stampa orario
echo $dati[1];
//etc etc
Dove non ti trovi?
 

macus_adi

Utente Attivo
5 Dic 2017
1.312
88
48
IT/SW
la mappatura non è altro che identificare il valore associandolo ad un nome.... ossia
data[0]='data';
data[1]='orario';
data[2]='altro valore';
quindi puoi mappare i dati non con indici numerici ma richiamandoli tramite il nome impostato.... più semplice...
Quindi quando scorri l'array dei dati recuperati in remoto li mappi con l'array che imposti... e richiami il tutto in modo più semplice.... ossia:
PHP:
echo $dati['data'];
Se sai tutti i nomi dei dati risulta più semplice interagire con i sistemi...


-----------------
Forse il concetto è fuorviante....
PHP:
$url='http://www.stazionemeteonunziata.it/meteo/realtime.txt';
$dati_remoti=str_getcsv(file_get_contents($url)," ");
print_r($dati_remoti);
$data=['data','orario','valore in posizione 1','valore in posizione 2',......etc...];
$map=[];
foreach($dati_remoti as $k=>$v){
$map[$data[$k]]=$v;
}

//ora puoi stampare comodamente scrivendo il nome
echo $map['data'];
Ora se questo script lo metti in alto alla pagina dove vuoi che escano i dati nella pagina basta aggiungere:
Codice:
<div>
<?php echo $map['data'].' - '. $map['orario'];?>
</div>
 
Ultima modifica:

macus_adi

Utente Attivo
5 Dic 2017
1.312
88
48
IT/SW
rimpiazza con questo
PHP:
<?php
$url='http://www.stazionemeteonunziata.it/meteo/realtime.txt';
 $dati_remoti=str_getcsv(file_get_contents($url)," ");
print_r($dati_remoti);
$data=['data','orario','valore in posizione 1','valore in posizione 2'];
$map=[];
foreach($dati_remoti as $k=>$v){
//controlla che siano presenti tutti i valori, quindi in questo caso prende solo i primi 4 in quanto in
//data non sono presenti tutti i 59 dati
if(isset($data[$k]))$map[$data[$k]]=$v;
}
print_r($map);
 

macus_adi

Utente Attivo
5 Dic 2017
1.312
88
48
IT/SW
File vuoto e incolla questo
PHP:
<?php
/**
* Created by PHPS.
* User: Marco ADR
* Date: 28/12/2018
* Time: 16:03
*/

$url='http://www.stazionemeteonunziata.it/meteo/realtime.txt';
$dati_remoti=str_getcsv(file_get_contents($url)," ");

//variabile appoggio per il nome dei campi
$app_var='valore in posizione ';

//stampa i dati recuperati da remoto
//print_r($dati_remoti);
//aggiungere dentro $data i nomi dei valori nelle giuste posizioni
$data=['data','orario'];
$map=[];
foreach($dati_remoti as $k=>$v){
   //controlla che siano presenti tutti i valori, quindi in questo caso prende solo i primi 4 in quanto in
   //data non sono presenti tutti i 59 dati, non conoscendo i nomi dei valori ho aggiunto "valore in posizione $pos"

   //se esiste il nome del campo lo assegno
   if(isset($data[$k]))$map[$data[$k]]=$v;
   //altrimenti aggiungo un valore da me definito aggiungendo l'incremento = $k
   else $map[$app_var.$k]=$v;
}
//stampa la map
print_r($map);

echo $map['data'].' - '.$map['orario'];
echo '<br>';
echo $map[$app_var.'16'];
 
Stato
Chiusa ad ulteriori risposte.