Script meteo

Aici prezentati probleme, intrebari, sau orice subiecte legate de scripturi si tutoriale de pe site.
MelecaCristian
Mesaje:176

Script meteo

Nu gasesc scriptul pentru meteo de pe pagina principala. Il ai pe site?
Scuze de intrebare.
„Uneori o greşeală poate fi tot ce este necesar pentru o realizare valoroasă.” — Henry Ford

MarPlo Mesaje:4343
Vezi scriptul de la pagina: Script Meteo cu date de la Yahoo .

asistentu Mesaje:1
Salut
Din pacate scriptul tau la mine nu mai functioneaza si-mi da eroarea:

Cod: Selectaţi tot

Fatal error: Uncaught exception 'Exception' with message 'DateTime::__construct() [<a href='datetime.--construct'>datetime.--construct</a>]: Failed to parse time string (Sat, 03 Nov 2012 9:59 pm ET) at position 25 (E): The timezone could not be found in the database' in /home/hoster/public_html/xxxxx/vremea/meteo_yahoo.php:78 Stack trace: #0 /home/hoster/public_html/xxxxx/vremea/meteo_yahoo.php(78): DateTime->__construct('Sat, 03 Nov 201...') #1 /home/hoster/public_html/xxxxx/vremea/meteo_yahoo.php(120): reDataZi(Array, Array, 'Sat, 03 Nov 201...') #2 /home/hoster/public_html/xxxxx/vremea/meteo_yahoo.php(155): meteoYahoo->getXMLdata() #3 /home/xxxxx/public_html/xxxxx/vremea/meteo_yahoo.php(208): meteoYahoo->yMeteoHTML() #4 /home/xxxxx/public_html/xxxxx/vremea/test.php(2): include('/home/hoster/pu...') #5 {main} thrown in /home/xxxxx/public_html/xxxxx/vremea/meteo_yahoo.php on line 78
A functionat impecabil cateva zile.

MarPlo Mesaje:4343
Din ce vam citit pe internet, acea eroare este de la un "bug" PHP in versiunea 5.3 . Cred ca a fost corectat in PHP 5.4.
Daca a functionat la inceput, cateva zile, apoi a aparut eroarea, cred ca hosting-ul unde e site-ul a facut update la PHP cu versiunea 5.3 .
Rezolvare:
Inlocuieste aceasta linie de cod (78):

Cod: Selectaţi tot

$obj_date = new DateTime($data);
Cu aceasta:

Cod: Selectaţi tot

$obj_date = new DateTime(null, new DateTimeZone('Europe/Bucharest'));
- Sau descarca script-ul din nou, fiindca e modificat cu acest cod.

nicusorilie Mesaje:17
Felictari! Scriptul e excelent (si de cand cautam unul bun, care sa functioneze si sa arate si corect).
Insa, cantitatea de informatie e prea mare si as vrea sa renunt la o parte din ea si nu stiu ce si cum trebuie sa fac.
Mai exact, vreau:
- sa nu imi mai arate sus numele orasului subliniat (sa zicem ca e pentru Bucuresti, si eu stiu ca e pentru Bucuresti; asa cum e in fisierul de test);
- sa imi arate DOAR poza si temperatura (si poate si descrierea (de ex: cer senin)) si nu si presiunea, vantul etc.

Se poate asa ceva?

Multumesc anticipat.

MarPlo Mesaje:4343
Se poate daca stii cat de cat HTML si macar putin PHP.
In fisierul "meteo_yahoo.php" editezi /modifici codul HTML care e adaugat in variabila $re_html, liniile 164-175.
- Astfel de modificari si le face fiecare dupa cum stie.

nicusorilie Mesaje:17
As avea nevoie sa afisez si ora la care rasare si apune soarele.

Problema mea este ca aceste doua informatii doresc sa le afisez intr-un loc, separat de locul unde imi apare pictograma meteo, cu temperatura si descrierea curenta.
Am incercat sa declar inca o variabila $re_html1, dar mi-am cam prins rau urechile, si nu reusesc acest lucru.

Am nevoie de 2 scripturi (de fapt acelasi, pe care sa il "sparg" in doua si sa il apelez bucata corepsunzatoare acolo unde vreau sa o afisez) sau "merge" si cu unul singur? Se poate asa ceva?
Multumesc.

MarPlo Mesaje:4343
In functia yMeteoHTML(), datele pentru rasarit si apus sunt in $meteo_data['rasarit'] si $meteo_data['apus'].
Ca idee, se poate crea o proprietate in clasa, inainte de __construct(), de exemplu:

Cod: Selectaţi tot

public $meteo_data = array();
 
Iar in functia yMeteoHTML() se adauga datele meteo in acea proprietate:

Cod: Selectaţi tot

$this->meteo_data = $meteo_data;
 
Si se foloseste acea proprietate cu datele meteo unde vrei, chiar si in afara clasei.

Cod: Selectaţi tot

$rasarit = $meteo_yahoo->meteo_data['rasarit'];
 
- Sper sa te descurci, mai departe asi vrea sa nu ma mai bag pe acest subiect.

nicusorilie Mesaje:17
Multumesc pentru raspuns!
Pana acum nu am reusit... :D :( dar mai incerc...

MarPlo Mesaje:4343
O alta idee, poate mai usoara pt. tine, poti face ca variabila $re_html din yMeteoHTML() sa fie un array cu mai multe coduri /parti html.
De exemplu:

Cod: Selectaţi tot

$re_html[0] = 'cod html date meteo';
$re_html[1] = 'alt cod html, cu alte date meteo';
 
Apoi se retine rezultatul dat de yMeteoHTML() intr-o variabila ce va avea acel array, si apelezi din ea separat ce parte vrei.

Cod: Selectaţi tot

$meteo_yahoo = new meteoYahoo($loc);
$meteo_html = $meteo_yahoo->yMeteoHTML();
echo $meteo_html[0];
echo $meteo_html[1];
 
- Dar trebuie sa stii sa modifici la sfarsit in script ca sa adaptezi codul de afisare la aceasta varianta.

nicusorilie Mesaje:17
In primul rand, multumesc din nou pentru raspuns (pentru ca am inteles dorinta Dvs exprimata mai sus si o respect).

In adevar, e mai "digerabila" (sau accesibila) pentru mine cea de a doua varianta. Momentan nu am ajuns la nici un rezultat, pentru ca inca ma mai chinui sa descifrez ultima parte din script si sa vad cum pot face sa afisez corespunzator datele.
Sper sa revin cu vesti bune! :)

nicusorilie Mesaje:17
Bun gasit, din nou.

In setul de date meteo oferit de cei de la Yahoo, exista si informatii legate de soare, de ora de rasarit si de apus a acestuia.
Se stie ca aceasta depinde de anotimp, ora de vara/iarna si, in special, de pozitia geografica (longitudine, latitudine), ca punct de observatie, dar oare care sunt punctele de observatie de referinta, ca sa zic asa? Observatoarele astronomice? Anumite statii meteo? Centrul unui oras (km 0)? Alte puncte?

Astfel, am intalnit surse care, tabelar, dau valori apropiate, dar diferite. Si, intrebarea/curiozitatea era de ce? Care din date este cel mai exact? Nu acum ca ar conta acum o diferenta de 1-2 min, in plus sau in minus, ca doar nu sta nimeni la mm, sau cronometrul in mana, sa vada ca soarele rasare fix la ora, min si sec X. Si nici intr-un domeniu care eventual ar avea nevoie strict de informatii precise (naval, militar...?) nu suntem. Era deci, cum am mai zis, o curiozitate, de unde isi ia fiecare referinta, pe ce criterii si care ar fi mai bune/precise?

Astfel, de exemplu, am intalnit urmatoarele seturi de date rasarit-apus (pentru o anumita zi, din mai 2014 - Romania - Bucuresti)
05:53 si 20:31
05:56 si 20:29
05:53 si 20:29 (Yahoo)

Multumesc