Non Sei Pratico di Codice? La funzione cURL non funziona sul tuo server? Allora guarda il mio Plugin per avere il Meteo di Google
In questi giorni, come Programmatore PHP in un attività di Consulenza ho avuto l'esigenza per un sistema di Booking Online di fornire un servizio semplice, cioè un Meteo con le previsioni dei prossimi giorni.
Pur essendo disponibile una moltitudine di siti internet che offrono il proprio codice da copiare e incollare nel proprio sito, per ragioni di Ottimizzazione del Codice e per evitare URL che puntassero all'esterno, come Programmatore PHP ho preferito utilizzare le Google Weather API per creare un piccolo script che ognuno di voi portrà facilmente personalizzare che permetta la generazione di un Meteo PHP utile per le esigenze base di ogni utente.
In questo esempio è possibile vedere il risultato del nostro script, inoltre consiglio ad ogni Programmatore PHP lo studio di alcune funzioni presenti all'interno dello script come la funzione curl_setopt o simplexml_load_file
<?php
// Creiamo un file fisico per evitare problemi di configurazione che si manifestano su alcuni server
$ch = curl_init("http://www.google.com/ig/api?weather=Napoli&hl=it");
$fp = fopen("weather.xml", "w");
//Con la funzione CURL settimano i parametri in maniera che l'XML venga letto correttamente (encoding)
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
//Leggiamo l'XML delle previsioni
$xml = simplexml_load_file("weather.xml");
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
$forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");
?>
<h2>Napoli - Oggi</h2>
<div class="weather">
<img src="<?= 'http://www.google.com' . $current[0]->icon['data']?>" alt="weather"/>
<span class="condition">
<br/><?= $current[0]->temp_c['data'] ?>° C<br/>
<?= $current[0]->condition['data'] ?>
</span>
</div>
<h2>Previsioni Prossimi Giorni</h2>
<? foreach ($forecast_list as $forecast) : ?>
<div class="weather">
<img src="<?= 'http://www.google.com' . $forecast->icon['data']?>" alt="weather"/>
<div><?= ucfirst($forecast->day_of_week['data']); ?></div>
<span class="condition">
<?= $forecast->low['data'] ?>° C - <?= $forecast->high['data'] ?>° C<br/>
<?= $forecast->condition['data'] ?>
</span>
</div>
<br/>
<? endforeach ?>
Giancarlo Lucioli - Inserito il: 19/05/10
Ho appena letto questo tuo codice, non l'ho provato (lo farò quanto prima) lo trovo utilissimo. Io vengo da poco da un corso in php avanzato in cui mi sono cimentato in questo problema delle previsioni ma ho seguito una strada leggermente diversa. Vedrò quale è più semplice ma ad occhio mi sembra questa.