Problema leggere su file di testo remoti

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
Ciao a tutti,
premetto che sono un novellino in php e mi strovo i una situzione diffcile per un lavoro commissionatomi.

Proverò a spiegarvi.
Tempo fa, assieme ad un amico esperto in php, creammo questa rete di rilevamento meteo (www.meteospezia.com/retesp.php), questa rete legge i dati in questa maniere:

Ogni stazione, ad intervalli regolari fa un upload di un file di testo verso il proprio spazio web mente uno script va a leggere le righe di questo file di testo e restiruisce a video il valore.
Qeusto file di testo è uguale, strutturalmente, per tutte le stazione e se volete vederne uno lo potete consultare a questo indirizzo www.meteospezia.com/rete/wx.txt

Bene, tutto al momento funziona ma , dal proprietario del sito madre, mio è stata chiesta una milgioria ossia, far apparire in homepage del sito (www.meteospezia.com) un modulo (il sito è in joomla) che contenga una pagina php che mostri in tepo reale i dati di tutte le stazioni delle rete, per farvi un'esempio servirebeb una cosa del genere


Nome stazione
Temp
Umid
T.max
T.min

Nome stazione 2
Temp
Umid
T.max
T.min

e cosi via pert tutte.

Purtyroppo questa persona che mi aveva aiuto, o meglio, fatto la rete non è piu disponibile e ora sono nelle canne piu totali

In pratica servirebbe una pagina e con uno script che vada a leggere le righe numero 1-5-8-11-18 di ogni file realtivo alla propria stazione e lo restituisse a video.

Per l'impaginazione poi ci penserei io, mi serve solo lo script.

Vi ringrazio dell'attenzione e spero che la cosa sia fattibile.

Saluti
Davide
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, per leggere un file puoi fare cosi
PHP:
<?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere
$daleggere = array(1, 5, 8, 11, 18);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (in_array($k, $daleggere)) {
        // leggiamo la riga
        echo $riga . "<br/>";
    }
}
// chiudiamo il file
fclose($fr);
?>
per leggere piu file puoi inserire il tutto dentro ad un ciclo e cambiare indirizzo ad ogni iterazione
ho commentato il codice se hai bisgono chiedi pure
 

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
Ciao, per leggere un file puoi fare cosi
PHP:
<?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere
$daleggere = array(1, 5, 8, 11, 18);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (in_array($k, $daleggere)) {
        // leggiamo la riga
        echo $riga . "<br/>";
    }
}
// chiudiamo il file
fclose($fr);
?>
per leggere piu file puoi inserire il tutto dentro ad un ciclo e cambiare indirizzo ad ogni iterazione
ho commentato il codice se hai bisgono chiedi pure

wow...velocissimo..
provo subito e se ho bisogno non esiterò :)

grazie mille
 

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
ok benissimo...funziona alla grandissima,

mi viene questo

La Spezia
4,8
87
1007,08
16,1
N

Se volessi inserire del testo per farlo diventare cosi, echo dove devo metterlo?


La Spezia
T°C: 4,8
UR: 87%
P:1007,08 hpa
V:16,1 N

Scusa sono prorio zero :(
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
modifica cosi
PHP:
<?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere e intestazioni
$daleggere = array(
    1 => "",
    5 => "T&deg;C: ",
    8 => "UR: ",
    11 => "P: ",
    18 => "V: "
);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
// ciclo del file
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (array_key_exists($k, $daleggere)) {
        // la leggiamo
        echo $daleggere[$k] . $riga . "<br/>";
    }
}
// chiudiamo il file
fclose($fr);
?>
Edit:
attento che ho modificato sia l'array che la condizione nel ciclo
 

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
modifica cosi
PHP:
<?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere e intestazioni
$daleggere = array(
    1 => "",
    5 => "T&deg;C: ",
    8 => "UR: ",
    11 => "P: ",
    18 => "V: "
);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
// ciclo del file
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (array_key_exists($k, $daleggere)) {
        // la leggiamo
        echo $daleggere[$k] . $riga . "<br/>";
    }
}
// chiudiamo il file
fclose($fr);
?>
Edit:
attento che ho modificato sia l'array che la condizione nel ciclo

Ottimo..latro passo anvanti..
Ora il riusltato è questo
La Spezia
T: 4,8
UR: 86
P: 1006,61
V: 16,1

Se si riscisse a metter il °C dopo il valore 4.8 e aggiungere la direzione del vento dopo 16,1 mi mancherevve solo array per i fiel remoti e avrei finito

Ti devo mille cene....
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
La direzione del vento quale sarebbe? nel file che mi hai linkato non la trovo
intanto prova cosi per separare i °C
PHP:
<?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere e intestazioni
$daleggere = array(
    1 => "|",
    5 => "T:|&deg;C ",
    8 => "UR:| ",
    11 => "P:| ",
    18 => "V:| "
);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
// ciclo del file
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (array_key_exists($k, $daleggere)) {

        // dividiamo il valore
        $split = explode("|", $daleggere[$k]);
        // stampiamo
        echo $split[0] . $riga . $split[1] . "<br/>";
    }
}
// chiudiamo il file
fclose($fr);
?>

edit:
ok ho visto ora i numeri delle righe
 
Ultima modifica:

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
Ho modificato le righe dello script aggiungendo la riga 36 corrispondente alla direzione del vento
PHP:
 <?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere e intestazioni
$daleggere = array(
    1 => "|",
    5 => "T:|&deg;C ",
    17 => "UR:| ",
    29 => "P:| ",
    35 => "V:| ",
    36 => "",
);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
// ciclo del file
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (array_key_exists($k, $daleggere)) {
        // la leggiamo
        echo $daleggere[$k] . $riga . "<br/>";
    }
}
// chiudiamo il file
fclose($fr);
?>

e il risultato è questo

|La Spezia
T:|°C 5,1
UR:| 86
P:| 1006,47
V:| 11,3
NNE

Purtroppo il °C non riesce ad andare al di la del valore...ma quelo sarebbe il meno, quello che mi serve di piu è aggiungere la direzionea fianco alla velocità del vento e l'array dei file sorgenti

TIPO UNA COSA COSI


La Spezia
T:5,1°C
UR:86%
P:1006,47
V:11,3 NNE
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
ok aggiunto anche la direzione del vento
PHP:
<?php

// file da leggere
$file = "http://www.meteospezia.com/rete/wx.txt";
// righe da leggere e intestazioni
$daleggere = array(
    1 => "|",
    5 => "T:|&deg;C ",
    8 => "UR:| ",
    29 => "P:| ",
    35 => "V:| ",
    36 => "|"
);
// apriamo il file in lettura      
$fr = fopen($file, 'r');
// incrementatore
$k = 0;
// ciclo del file
while (!feof($fr)) {
    //incrementiamo subito
    $k++;
    // recuperiamo la riga
    $riga = fgets($fr);
    // se è una riga da leggere
    if (array_key_exists($k, $daleggere)) {

        // dividiamo il valore
        $split = explode("|", $daleggere[$k]);
        // stampiamo
        echo $split[0] . $riga . $split[1] . " ";
        // se la riga non è quella del vento andiamo a capo
        if ($k != 35) {
            echo "<br/>";
        }
    }
}
// chiudiamo il file
fclose($fr);
?>
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Purtroppo il °C non riesce ad andare al di la del valore...ma quelo sarebbe il meno, quello che mi serve di piu è aggiungere la direzionea fianco alla velocità del vento e l'array dei file sorgenti
perche non sei stato attento al codice che ti ho postato
 

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
in effetti...ora è corretto....uff...eppure avevo guardato bene...dannat ascemenza..

Grazie infinite cavolo...ora cerco googlando per l'array...ma ce la faro :D
 

meteospeziacom

Nuovo Utente
21 Feb 2013
9
0
0
Grazie infinite...ci sono riuscito...questpo è il codice finale funzionante
PHP:
<?php

// file da leggere
$file = array(
"http://www.meteospezia.com/rete/wx.txt",
"http://www.sanbenedettometeo.it/wd/wx.txt",
"http://beverinometeo.altervista.org/wx.txt",
"http://www.meteolaserra.it/dati/wx.txt",
"http://lalizzameteo.altervista.org/wx_out.txt",
"http://www.speziafoto.it/temp2/wx.txt",
"http://www.buto.it/Meteo/file/wx.txt",
"http://www.valdipino.it/staz_met/dinamico/wx.txt",
"http://www.caniparolameteo.altervista.org/rete_osservativa.txt",
"http://www.meteovareseligure.it/limet/wx.txt",
"http://bobkrest.altervista.org/wx.txt",
"http://retelimet.centrometeoligure.it/meteo-beverone/rete_limet.txt",
"http://retelimet.centrometeoligure.it/meteo-vernazza/rete_limet.txt",
"http://www.meteolevanto.com/stazionemeteo/rete_limet.txt",
"http://meteolospezia.altervista.org/rete_limet.txt",
"http://www.mgpcservice.it/meteo/wx.txt",
"http://www.mgpcservice.it/meteo_sarzana/wx.txt"
);


// righe da leggere e intestazioni
$daleggere = array(
    1 => "|",
    5 => "T:|&deg;C ",
    8 => "UR:| ",
    29 => "P:| ",
    35 => "V:| ",
    36 => "|"
);
for ($i=0;$i<count($file);$i++)
{

  // apriamo il file in lettura      
  $fr = fopen($file[$i], 'r');
  // incrementatore
  $k = 0;
  // ciclo del file
  while (!feof($fr)) {
      //incrementiamo subito
      $k++;
      // recuperiamo la riga
      $riga = fgets($fr);
      // se è una riga da leggere
      if (array_key_exists($k, $daleggere)) {
  
          // dividiamo il valore
          $split = explode("|", $daleggere[$k]);
          // stampiamo
          echo $split[0] . $riga . $split[1] . " ";
          // se la riga non è quella del vento andiamo a capo
          if ($k != 35) {
              echo "<br/>";
          }
      }
  }
  // chiudiamo il file
  fclose($fr);
}
  
?>

Ora sistemerò la grafica...

:beer::beer::beer::beer:
 
Ultima modifica di un moderatore:
Discussioni simili
Autore Titolo Forum Risposte Data
L [c++] Problema leggere file txt riga per riga C/C++ 0
P Problema: come far leggere unintero dvd da php e memorizzare il suo contenuto ???? PHP 38
P Problema acquisizione clienti Webdesign e Grafica 0
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 7
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 1
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 1
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0

Discussioni simili