Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Pogoda na stronie www
Forum PHP.pl > Forum > Przedszkole
rafalskula
Witam,
on dłużego czasu poszukuje skryptu pokazującego warunki pogodowe na mojej stronie www.
Do te pory miałem skrypt wyciągający informację z onetu, lecz coś pozmieniali w onecie i nic już u mnie nie świeci.
Przedewszyskim chodzi mi o czeskie ośrodki narciarskie. Czy ktoś pomoże mi coś takiego napisać , a może ma gotowca. Czytałem na forum o meteoprog.pl i xml, ale nic nie znalazłem na ich stronie.
Napisałem do na priv do jedengo z użytowników i czekam na informację po widzę na jego stronie , że to hula. Strona http://jastrzebieonline.pl/


Pozdrawiam
modern-web
Dane pogodowe pobierać możesz z google, to nie problem, a jest pewność że nic się nie zmieni "od tak" smile.gif
Gotowca nie dostaniesz, wątpię by taki program ktoś już napisał i oddał za darmo (ale fajny pomysł, wezmę się za to tak nawiasem mówiąc smile.gif), także jeśli poczekasz trochę - mogę Ci to oddać.
Także podsumowując, robisz sam albo zapraszamy do wątku "Giełda ofert" smile.gif albo czekasz... czas nieokreślony.
Arcioch
Google wyłączyło api dla pogody dlatego już raczej z google nic nie pobierzesz smile.gif Od kiedy google wyłączyło pogodę korzystam z http://www.pogodynka.net/strona/api zwraca wszystkie potrzebne informacje smile.gif Ikonkę pogodową i tłumaczenia pogody na następne dni można sobie w bardzo łatwy sposób dorobić smile.gif
rafalskula
modern-web dziękuję za propozycję smile.gif Jeżeli masz czas to chętnie poczekam. Nawiasem mówiąc sam bym chciał się nauczyć, ale wiem, że to mi trochę czasu zajmie. Przejże też to co wysał mi Arcioch, mam przynajmniej jakiś punkt wyjścia. Co do google to nie działa - już probowałem.

Może ktoś ma jeszcze jakieś informację i chce się podzielić ?

Dziękuję Wam
siuda
Jeżeli poradzisz sobie z SOAP'em to polecam tą usługę:
http://www.webservicex.net/ws/wsdetails.as...=12&wsid=56
rafalskula
Arcioch chyba jestem za głupi, siedze od kilku godzin i nie moge tego xml przerobić. Możesz mi pomóc ?
Jak to przerobić na normalne wyświetlanie
Teraz mam coś takiego:

SimpleXMLElement Object
(
[observation_time] => 06:48 PM
[temp_C] => 9
[temp_F] => 48
[weatherCode] => 116
[weatherDesc] => Częściowe zachmurzenie
[windspeedMiles] => 6
[windspeedKmph] => 9
[winddirDegree] => 60
[winddir16Point] => ENE
[precipMM] => 0.0
[humidity] => 71
[visibility] => 10
[pressure] => 1026
[cloudcover] => 75
[FeelsLikeC] => 8
[FeelsLikeF] => 46
)

Nie znam sie kompletnie na xml zielony jestem .

Pozdrawiam


Żeby nie było, że nic nie robię.
Już mi działa wyciągniecie temperatury
  1. $temp_C = simplexml_load_file('http://www.pogodynka.net/api:server/weather/getCurrent.xml?city=pec-pod-sniezka');
  2. echo '';
  3. foreach ($temp_C->temp_C as $p) {
  4. echo '' . $p . '°C';
  5. foreach ($p->attributes() as $atr) {
  6. echo '' . $atr . '';
  7. }
  8. echo '';
  9. }
  10. echo '<br>';


Może mi ktoś powie jak wyciągnąć grafikę z http://www.pogodynka.net/api:server/weathe...od-%C5%9Bniezka

Chodzi o chmurki, słonka itp wink.gif


Wczoraj nie miałem pojęcia o XML a dziś już coś sam zrobiłęm ehh:)


Czekam dalej na jakieś info.

Pozdrawiam
Arcioch
Jasne że mogę pomóc smile.gif
Ja to robię po parametrze weatherCode smile.gif
Tu masz listę http://www.worldweatheronline.com/feed/wwoConditionCodes.txt

I teraz robisz sobie tablicę z numerami i jakie obrazki ma zwracać smile.gif czyli:

  1. <?php
  2. $icons = array(
  3. 'numerKodu' => 'ikocnka',
  4. '113' => 'sunny.png',
  5. );
  6. ?>

I tak wszystkie kody smile.gif

No a potem zwracasz sobie do widoku $icons['weatherCode'] i masz obrazek smile.gif

Tu masz darmowe ikonki pogodowe http://www.webresourcesdepot.com/free-weat...ons-collection/
rafalskula
mam już balagan w głowie, cały czas walcze z tym

Powiedz mi jak mam
  1. <?php $temp_C = simplexml_load_file('http://www.pogodynka.net/api:server/weather/getCurrent.xml?city=pec-pod-sniezka');
  2. echo '';
  3. foreach ($temp_C->temp_C as $p) {
  4. echo '' . $p . '°C';
  5. foreach ($p->attributes() as $atr) {
  6. echo '' . $atr . '';
  7. }
  8. echo '';
  9. }
  10. echo '<br>';?>


to gdzie mam wstawić

  1. <?php
  2. $icons = array(
  3. 'numerKodu' => 'ikocnka',
  4. '113' => 'sunny.png',
  5. );
  6. ?>


i to $icons['weatherCode']

kurde nieradze sobie z tym sad.gif

Pomozecie mi ?
ixox
Spróbuj tak:
  1. $weather = simplexml_load_file('http://www.pogodynka.net/api:server/weather/getCurrent.xml?city=pec-pod-sniezka');
  2. echo $weather->temp_C . '°C';
  3. .
  4. .
  5. .
  6.  

Tablicę wstaw przed
  1. $icons[$weather->weatherCode];
rafalskula
Składając wszystko to kupy - wyszło mi tak

  1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  2. <html>
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  5. </head>
  6. <body>
  7. <b>Pec pod Śnieżką</b><br><br>
  8.  
  9.  
  10. <?php
  11.  
  12. $icons = array(
  13. 'numerKodu' => 'ikonka',
  14. '116' => 'http://www.pogodynka.net/media/images/weather/Cloudy_Mostly.png',
  15. '119' => 'http://www.pogodynka.net/media/images/weather/Cloudy_Mostly.png',
  16. );
  17. $icons[$weather->weatherCode];
  18.  
  19. $weather = simplexml_load_file('http://www.pogodynka.net/api:server/weather/getCurrent.xml?city=pec-pod-sniezka');
  20. echo $weather->temp_C . '°C';
  21. echo '<br>';
  22. echo $weather->pressure . 'hPa';
  23. echo '<br>';
  24. echo $weather->weatherDesc . '';
  25. echo '<br>';
  26. echo $icons['$weather->weatherCode'];
  27.  
  28. ?>
  29.  
  30. </body>
  31.  
  32. </html>



Wyświetla ta jak pod linkiem Pogoda test

Więc nie mam ikonek ( chmurek , słonek - narazie dałem tylko dwie - 119 i 116 , które wyświetla z xml) - możecie mi to przejżeć - nie wiem co robię żle. Już prawie 20 godzin nad tym siedzę


Z góry dziękuję
ixox
  1. echo "<img src='" . $icons['$weather->weatherCode'] . "'>";
Arcioch
Bardzo prosta klasa i nie do końca dobrze napisana smile.gif Musisz sobie ją troszkę przerobić i dostosować bo dzisiaj mam dużo pracy a obiecałem pomóc smile.gif Zabiera ona wszystkie kody ikonek i tłumaczenia do opisów. Ma jedną metodą zwracająca pogodę na obecny dzień smile.gif

Pliki: weather.class.php
  1. <?php
  2. class Weather{
  3.  
  4. //miasto dla którego chcesz otrzymać pogode
  5. public $city;
  6.  
  7. public $icons = array(
  8. '113' => 'sunny.png',
  9. '116' => 'm-cloudy.png',
  10. '119' => 'm-cloudy.png',
  11. '122' => 'm-cloudy.png',
  12. '143' => 'fog.png',
  13. '176' => 'showers.png',
  14. '179' => 'snow.png',
  15. '182' => 'showers.png',
  16. '185' => 'freezing-rain.png',
  17. '200' => 'thunder-storm.png',
  18. '227' => 'blowing-snow.png',
  19. '230' => 'blowing-snow.png',
  20. '248' => 'fog.png',
  21. '260' => 'freezing-rain.png',
  22. '263' => 'drizzle.png',
  23. '266' => 'drizzle.png',
  24. '281' => 'drizzle.png',
  25. '284' => 'drizzle.png',
  26. '293' => 'drizzle.png',
  27. '296' => 'drizzle.png',
  28. '299' => 'drizzle.png',
  29. '302' => 'drizzle.png',
  30. '305' => 'showers.png',
  31. '308' => 'showers.png',
  32. '311' => 'freezing-rain.png',
  33. '314' => 'freezing-rain.png',
  34. '317' => 'rainy-snow.png',
  35. '320' => 'rainy-snow.png',
  36. '323' => 'rainy-snow.png',
  37. '326' => 'snow.png',
  38. '329' => 'snow.png',
  39. '332' => 'snow.png',
  40. '335' => 'snow.png',
  41. '338' => 'snow.png',
  42. '350' => 'flurries.png',
  43. '353' => 'drizzle.png',
  44. '356' => 'rainy.png',
  45. '359' => 'rainy.png',
  46. '362' => 'rainy-snow.png',
  47. '365' => 'rainy-snow.png',
  48. '368' => 'snow.png',
  49. '371' => 'snow.png',
  50. '374' => 'blizzard.png',
  51. '377' => 'blizzard.png',
  52. '386' => 't-storm-rain.png',
  53. '389' => 't-storm-rain.png',
  54. '392' => 't-storm-rain.png',
  55. '395' => 't-storm-rain.png',
  56. );
  57.  
  58. public $pl_translation = array(
  59. '113' => 'Słonecznie',
  60. '116' => 'Częściowe zachmurzenie',
  61. '119' => 'Pochmurnie',
  62. '122' => 'Zachmurzenie',
  63. '143' => 'Mgła',
  64. '176' => 'Opady deszczu',
  65. '179' => 'Opady śniegu',
  66. '182' => 'Opday deszczu',
  67. '185' => 'Marznąca mżawka',
  68. '200' => 'Ogniska grzmotów w pobliżu',
  69. '227' => 'Zamiecie śnieżne',
  70. '230' => 'Zamieć',
  71. '248' => 'Mgła',
  72. '260' => 'Marznąca mgła',
  73. '263' => 'Niejednolita lekka mżawka',
  74. '266' => 'Mała mżawka',
  75. '281' => 'Marznąca mżawka',
  76. '284' => 'Marznąca mżawka',
  77. '293' => 'Lekki deszcz',
  78. '296' => 'Lekki deszcz',
  79. '299' => 'Możliwe opady deszczu',
  80. '302' => 'Małe opady deszczu',
  81. '305' => 'Ulewa',
  82. '308' => 'Ulewa',
  83. '311' => 'Mały marznący deszcz',
  84. '314' => 'Duży marznący deszcz',
  85. '317' => 'Umiarkowane lub duży marznący deszcz',
  86. '320' => 'Lekki deszcz ze śniegiem',
  87. '323' => 'Umiarkowany lub duży deszcz ze śniegiem',
  88. '326' => 'Opady śniegu',
  89. '329' => 'Opady śniegu',
  90. '332' => 'Opady śniegu',
  91. '335' => 'Opady śniegu',
  92. '338' => 'Intenstywne opady śniegu',
  93. '350' => 'Grad',
  94. '353' => 'Lekki deszcz',
  95. '356' => 'Umiarkowany lub duży deszcz',
  96. '359' => 'Ulewny deszcz',
  97. '362' => 'Niewielkie opady deszczu ze śniegiem',
  98. '365' => 'Umiarkowane lub ciężkie opady śniegu z deszczem',
  99. '368' => 'Lekkie opady śniegu',
  100. '371' => 'Umiarkowane lub ciężkie opady śniegu',
  101. '374' => 'Grad',
  102. '377' => 'Grad',
  103. '386' => 'Możliwe burze z opadami deszczu',
  104. '389' => 'Umiarkowany lub silny deszcz w obszarze burzy',
  105. '392' => 'Padający śnieg i burze',
  106. '395' => 'Umiarkowany lub duży śnieg i burze',
  107. );
  108.  
  109. public function set_city($city){
  110. $this->city = $city;
  111. }
  112.  
  113. public function get_weather_today(){
  114. $xml = simplexml_load_file('http://www.pogodynka.net/api:server/weather/getCurrent.xml?city='.$this->city);
  115.  
  116. return array(
  117. 'temp' => $xml->temp_C,
  118. 'pressure' => $xml->pressure,
  119. 'desc' => $this->pl_translation[''.$xml->weatherCode.''],
  120. 'icon' => $this->icons[''.$xml->weatherCode.'']
  121. );
  122. }
  123.  
  124. }


Pliki index.php
  1. <?php
  2. include_once('weather.class.php');
  3. $weather = new Weather;
  4. $weather->set_city('pec-pod-sniezka');
  5. $wether_today = $weather->get_weather_today();
  6. ?>
  7.  
  8. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
  9. <html>
  10. <head>
  11. <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  12. </head>
  13. <body>
  14. <b>Pec pod Śnieżką</b><br><br>
  15. </body>
  16. Temp: <?= $wether_today['temp'] ?> stopni cel<br>
  17. Ciśnienie: <?= $wether_today['pressure'] ?> hPa<br>
  18. Opis: <?= $wether_today['desc'] ?> <br>
  19. Ikonka: <img src="icons/<?= $wether_today['icon'] ?>" />
  20. </html>


Całość spakowana z ikonami smile.gif
http://www.speedyshare.com/qK33e/pogoda.rar
rafalskula
Dziękuję za pomoc. Wszytko działa. Jedyne co zaobserwowałem, to pogodynka nie podaje pomiarów danej miejscowości tylko okolic - w tym przypadku mowa o Czechach.

Pozdrawiam
brzanek
A słuchajcie jak można pobrać prognozę na kolejne dni. API niby umożliwia to ale nie wiem jak to zrobić.
Z góry dziękuję za pomoc.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.