Pocasie na web

Máte problém, hľadáte niečo? Opýtajte sa a poradíme...

Moderátor: Moderators

Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Pocasie na web

Príspevok od používateľa Marek Adamec »

chcel by som spravit skript na predpoved pocasia, zatial som nasiel nejake weby ktore poskytuju odber...:

http://weather.msn.com/localmaps.aspx?w ... VK&src=rss
http://www.google.co.uk/ig/api?weather=trencin
http://www.k-service.sk/Pocko/index.php ... anguage=sk


Mesta ktore by som chcel mat:
Blatislava
Nitra
Trencin
Dubnica nad Vahom
Zilina
Matrin
Poprad
Kosice

len neviem co dalej stym.
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa _rasel^ »

Na stránke http://www.pmasarik.info/index.php?docs ... iny+do+RS2 si stiahni Obrázky k počasiu. Dole je snippet pre Etomite [!Pocasie!] (takto ho používaj na webe, tzn. že sa nebude cachovať). Postupuj podľa popisu v súbore, ak ho chceš upraviť na iné mesto.

Kód: Vybrať všetko

/*
                           /-----------------------------------------\
                           |                                         |
                      -----|     Počasie na stránke pomocou PHP      |-----
                           |    --------------------------------     |
                           |                                         |
                           |  Version:   1.4 beta pre RS2 SK         |
                           |  Website:   www.pmasarik.info/blog/     |
                           |  Author:    Peter Masarik               |
                              E-mail:    pmasarik@pobox.sk           |
                           |  Copyright: (c) Peter Masarik, 2005     |
                           \-----------------------------------------/

          Tento script je moje dielo na ktorom som sa začal učiť PHP, preto
          možno nie sú použité tie správne programátorské postupy, ale každý
          nejako začínal. Script testujem sám a preto sa môžu stále vyskytnúť
          nejaké problémy. Odladený je pre METAR správy z Piešťanského letiska,
          takže na inom letisku môžu kludne nastať nejaké problémy.
          Script som upravil na plugin, ktorý sa dá použiť do Redakčného systému pre blog RS2.

          Script je voľne šíriteľný, stále na ňom pracujem a dolaďujem.
          Preto sa vám oplatí sem-tam pozrieť na stránku http://www.pmasarik.info/blog/
          či nie je niečo nové. Okomentovaný je dostatočne, na to aby to pochopil
          aj menej skúsený užívateľ a ak treba rád pomôžem z akýmkoľvek problémom.

          Stačí napísať... :-)

          Do počasia a dúfam, že dáte vedieť na akej stránke ste použili môj script.

      #######################
      # Skratky miest v SR: #
      #######################

      LZPP -- PIEŠŤANY
      LZTT -- POPRAD
      LZKZ -- KOŠICE
      LZIB -- BRATISLAVA

      #######################
      # Skratky miest v ČR: #
      #######################

      LKPR -- Praha/Ruzyně
      LKMT -- Ostrava/Mošnov
      LKTB -- Brno/Tuřany
      LKHO -- Holešov
      LKKV -- Karlovy Vary
      LKLB -- Liberec
      LKKU -- Kunovice
      LKKB -- Kbely
      LKVO -- Vodochody ** POZOR NEFUNGUJE!!!
      LKOT -- Otrokovice ** POZOR NEFUNGUJE!!!
      LKPD -- Pardubice
      LKCV -- Čáslav
      LKNA -- Náměšť nad Oslavou
      LKPO -- Přerov
      Adresa s mapov ČR -- http://meteo.rlp.cz/mapa_int.htm
*/

      ####################################
      # Tieto údaje uprav podľa nápovedy #
      ####################################

  $skratka = "LZKZ"; // namiesto LZPP zadaj kód tvojho mesta, napríklad LKKU pre Kunovice.
  $icons_folder = "icons/"; // Sem zadaj cestu k obrázkom na identifikáciu počasia
  $mesto = "Kosice"; // sem napíš názov mesta kde žiješ
  $nadpis = "Pocasie"; // sem napíš nadpis, ktorý sa bude zobrazovať

 ## svoje súradnice zistíte na adrese http://www.heavens-above.com/ ##
 
  $latitude = "48.750";    # zemepisná dĺžka
  $longitude = "17.833";   # zemepisná širka
  $timezone = "+1";        # časové pásmo

## Ak chces tento script pouzivat aj inde nez v RS2 chod na samy konec a
## odstran dve lomitka pred echo   --->  //echo "$sablonaNahrazeni"; uz upravene pre Etomite!

## Ak si chces zmenit vysledne HTML, chod na riadok 440 az 449 a uprav si to ako len chces

###################################################################################################
##############       Ak sa nerozumieš PHP tak ďalej už sa ani nepozeraj !!!     ###################
###################################################################################################

## Cookies
## Nacitanie suboru trva niekedy 1 az 5 sekund a zdrzuje to nacitanie stranky, preto ulozim na 30minut
## hodnotu do cookies aby sa stale nemusela nacitat. Takze pri bruzdani po stranke zostane 30 minut
## ta ista hodnota.
## Co ak niekto pride na stranku 5 minut pred zmenou udaju? Ma smolu 30 minut sa mu bude ukazovat
## stara hodnota. Nevidim v tom problem kedze aktualizacia je cca kazdu 1 hodinu a nejde o nic vazne.

  if (!isset($_COOKIE['data_pocasie'])) {
    $cesta_zdroja1 = "http://weather.noaa.gov/pub/data/observations/metar/stations/" .$skratka. ".TXT";
    $fp = @fopen($cesta_zdroja1, "r");
    $data = @file($cesta_zdroja1);
    for($i=0; $i<count($data); $i++)
    $retazec = $data{1};
    setcookie ('data_pocasie', $retazec, time()+1800, '/', '', 0);
    @fclose($fp);
  } else {
    $retazec = $_COOKIE['data_pocasie'];
    }
    
   if (!ereg ('^[A-Z]{4}$', $skratka)) { //kontrola spravne zadanej skratky
       $problem = TRUE;
   }

if (!isset($retazec) OR @$problem == TRUE) { // ak je problem nespusti sa script, napise chybovu hlasku
      $problem = TRUE;
} else { // ak je všetko OK prebehne script


              #########################
              # identifikacia teploty #
              #########################

    $pozicia_znaku = strrpos($retazec, "/");
    $pozicia_teploty = $pozicia_znaku-3;
    $teplota = substr($retazec, $pozicia_teploty, 3);
    $o = array("M00", "M", "00");
    $n = array("0", "-", "0");
    $teplota = str_replace($o, $n, $teplota);
    $teplota = (int)$teplota;

            ############################
            # identifikacia oblačnosti #
            ############################

    // ak je CAVOK
    $pozicia_cavok = strpos($retazec, "CAVOK");
    $cavok = substr($retazec, $pozicia_cavok, 5);

    if ($cavok == "CAVOK") {
        $oblaky = array("- jasno", "0cloud");
        @$oblaky_1 = $oblaky[0];
        @$oblacnost_icon = $oblaky[1];
    } else {  $pole_oblacnost = array("SKC", "NSC", "FEW", "SCT", "BKN", "OVC");
              $tmp = array();

                  foreach ($pole_oblacnost as $hladaj_oblacnost) {
                      $pozicia_oblacnost = strpos($retazec, $hladaj_oblacnost);
                      $oblacnost = substr($retazec, $pozicia_oblacnost, 3); //OVC
                      $vyska_oblacnost = substr($retazec, $pozicia_oblacnost+3, 3); //050

                          if (strlen($pozicia_oblacnost) > 0) {
                              $tmp[$vyska_oblacnost] = $oblacnost; //("050" => "OVC"
                          }

                  } //foreach

              krsort ($tmp);
              $tmp = array_values($tmp);
              @$oblacnost = $tmp[0];

                if (isset($oblacnost)) {
                        switch($oblacnost) {
                      		case "SKC": $oblaky = array("- jasno", "0cloud"); break;
                      		case "NSC": $oblaky = array("- veľmi malá oblačnosť", "1cloud_"); break;
                      		case "FEW": $oblaky = array("- malá oblačnosť", "1cloud_"); break;
                      		case "SCT": $oblaky = array("- polooblačno", "2cloud_"); break;
                      		case "BKN": $oblaky = array("- oblačno", "3cloud_"); break;
                      		case "OVC": $oblaky = array("- zamračené", "4cloud_"); break;
                    		}
                }
                
              @$oblaky_1 = $oblaky[0];
              @$oblacnost_icon = $oblaky[1];
      } //else CAVOK
    
            ###############################
            # Búrky a prehánky spresnenie #
            ###############################

    $pole_burky = array("TSRA", "TSSN", "TSPE", "TSGR", "TSGS", "SHRA", "SHSN", "SHPE", "SHGR", "FZFG", "FZDZ", "FZRA");
    $tmp_1 = array();
    
    foreach ($pole_burky as $hladaj_burky) {
      $pozicia_burky = strpos($retazec, $hladaj_burky);
      $b = substr($retazec, $pozicia_burky, 4);
      $znamienko_b = substr($retazec, $pozicia_burky-1, 1);
      
        if (strlen($pozicia_burky) > 0) {
           $tmp_1[] = $b; //TSGR
           $tmp_1[] = $znamienko_b; // "+" OR "-" OR " "
        }

    } //foreach
    
   @$burky = $tmp_1[0]; //TSGR
   @$znamienko_burky = $tmp_1[1]; // "+" OR "-" OR " "
    
    if (isset($burky)) {
    
      switch($znamienko_burky) {
    		case "-": $znamienko_burky = "- slabá "; $znamienko_zrazky_icon = "light"; break;
    		case "+": $znamienko_burky = "- silná "; $znamienko_zrazky_icon = "heavy"; break;
    		case " ": $znamienko_burky = "- "; $znamienko_zrazky_icon = NULL; break;
  		}

        if ($burky == "SHRA" && $znamienko_burky == "- ") { //zopar problemovych podmienok + sklonovanie
            $znamienko_zrazky_icon = "mod";
            $burky = array("dažďová prehánka", "rain.png");
        } elseif ($burky == "FZDZ" && $znamienko_burky == "- silná ") {
            $znamienko_burky = "- silné ";
            $burky = array("mrznúce mrholenie", "rain.png");
        } elseif ($burky == "FZDZ" && $znamienko_burky == "- slabá ") {
            $znamienko_burky = "- slabé ";
            $burky = array("mrznúce mrholenie", "rain.png");
        } elseif ($burky == "FZRA" && $znamienko_burky == "- silná ") {
            $znamienko_burky = "- silný ";
            $burky = array("mrznúci dážď", "rain.png");
        } elseif ($burky == "FZRA" && $znamienko_burky == "- slabá ") {
            $znamienko_burky = "- slabý ";
            $burky = array("mrznúci dážď", "rain.png");
        } else {
             switch($burky) {
                  case "TSRA": $burky = array("búrka so zrážkami", "thunders.png"); break;
                  case "TSSN": $burky = array("búrka so snežením", "thunders.png"); break;
                  case "TSPE": $burky = array("búrka s ľadovými jadrami", "thunders.png"); break;
                  case "TSGR": $burky = array("búrka s krúpami", "thunders.png"); break;
                  case "TSGS": $burky = array("búrka so snehovými jadrami", "thunders.png"); break;
                  case "SHRA": $burky = array("dažďová prehánka", "rain.png"); break;
                  case "SHSN": $burky = array("snehová prehánka", "snow.png"); break;
                  case "SHPE": $burky = array("prehánka s ľadovými jadrami", "hail.png"); break;
                  case "SHGR": $burky = array("prehánka s krúpami", "hail.png"); break;
                  case "FZFG": $burky = array("mrznúca hmla", "fog.png"); break;
                  case "FZDZ": $burky = array("mrznúce mrholenie", "modrain.png"); break;
                  case "FZRA": $burky = array("mrznúci dážď", "modrain.png"); break;
               }
         }//else

    @$burky_1 = $burky[0];
    @$zrazky_icon = $burky[1];

    } // if isset($burky)
    
      
            ######################################
            # hydrometeory zmenšujúce dohľadnosť #
            ######################################
            
    if (@$burky_1 != "mrznúca hmla") {
      $pole_hmla = array("FG", "BR");

        foreach ($pole_hmla as $key => $hladaj_hmlu) {
        $pozicia_hmla = strpos($retazec, $hladaj_hmlu);
        $h = substr($retazec, $pozicia_hmla, 2); //FG alebo BR

            if (strlen($pozicia_hmla) > 0) {
                  if ($h == "FG") $hmla_1 = array("- hmla", "fog.png");
                  if ($h == "BR") $hmla_1 = array("- slabá hmla", "fog.png");
            }

        }//foreach
    }//if
    
    @$hmla_icon = $hmla_1[1];
    @$hmla = $hmla_1[0];

            ########################
            # identifikacia zrazky #
            ########################
            
    if (!isset($burky_1)) {

    $pole_zrazky = array("DZ", "RA", "SN", "SG", "PE", "IC", "GR", "GS", "TS");
    $tmp_2 = array();

      foreach ($pole_zrazky as $key => $hladaj_zrazky) {
      $pozicia_zrazky = strpos($retazec, $hladaj_zrazky);
      @$z = substr($retazec, $pozicia_zrazky, 2); //PE
      @$znamienko_z = substr($retazec, $pozicia_zrazky-1, 1);

        if (strlen($pozicia_zrazky) > 0) {
            $tmp_2[] = $z; //PE
            $tmp_2[] = $znamienko_z; // "+" OR "-" OR " "
        }

      } //foreach

     @$zrazky = $tmp_2[0]; //PE
     @$znamienko_zrazky = $tmp_2[1]; // "+" OR "-" OR " "

     if (isset($zrazky)) {
    
        switch($znamienko_zrazky) {
      		case "-": $znamienko_zrazky = "- slabé "; $znamienko_zrazky_icon = "light"; break;
      		case "+": $znamienko_zrazky = "- silné "; $znamienko_zrazky_icon = "heavy"; break;
      		case " ": $znamienko_zrazky = "- "; $znamienko_zrazky_icon = NULL; break;
    		}

           if ($zrazky == "RA" && $znamienko_zrazky == "- silné ") { //zopar problemovych podmienok + sklonovanie
               $znamienko_zrazky = "- silný ";
               $zrazky = array("dážď", "rain.png");
           } elseif ($zrazky == "RA" && $znamienko_zrazky == "- slabé ") {
                     $znamienko_zrazky = "- slabý ";
                     $zrazky = array("dážď", "rain.png");
             } else {
               switch($zrazky) {
                      case "DZ": $zrazky = array("mrholenie", "rain.png"); break;
                      case "RA": $zrazky = array("dážď", "modrain.png"); break;
                      case "SN": $zrazky = array("sneženie", "snow.png"); break;
                      case "TS": $zrazky = array("búrka", "thunders.png"); break;
                      case "SG": $zrazky = array("snehové krúpky", "hail.png"); break;
                      case "PE": $zrazky = array("ľadové jadrá", "hail.png"); break;
                      case "IC": $zrazky = array("ľadové kryštáliky", "hail.png"); break;
                      case "GR": $zrazky = array("krúpy", "hail.png"); break;
                      case "GS": $zrazky = array("malé krúpky", "hail.png"); break;
                   }
            }//else
     }// isset $zrazky

     @$zrazky_1 = $zrazky[0];
     @$zrazky_icon = $zrazky[1];

    }// !isset $burky_1

              ##################################
              # kedy vychádza a zachádza slnko #
              ##################################
              
  $yday = date("z");
  $mon = date("n");
  $mday = date("j");
  $year = date("Y");

  function is_daylight_time($time)
  { list($dom, $dow, $month, $hour, $min)
     = explode(":", date("d:w:m:H:i", $time));
   if  ($month > 4 && $month < 10) {
    $retval = 1;      # od mája do septembra
   } elseif ($month == 4 && $dom > 7) {
    $retval = 1;      # po prvom aprílovom tyzdni
   } elseif ($month == 4 && $dom <= 7 && $dow == 0 && $hour >= 2) {
    $retval = 1;      # po 2. hodine rannej v nedelu ($dow=0) v apríli
   } elseif ($month == 4 && $dom <= 7 && $dow != 0 && ($dom-$dow > 0)) {
    $retval = 1;      # po prvej aprílovej nedeli
   } elseif ($month == 10 && $dom < 25) {
    $retval = 1;      # pred posledným týždňom v októbri
   } elseif ($month == 10 && $dom >= 25 && $dow == 0 && $hour < 2) {
    $retval = 1;      # pred 2. hodinou rannou poslednú októbrovú nedeľu
   } elseif ($month == 10 && $dom >= 25 && $dow != 0
               && ($dom-24-$dow < 1) ) {
    $retval = 1;      # pred nedeľou posledného týždňa v októbri
   } else {  $retval = 0; }
   return($retval);}

  $DST=is_daylight_time(date("U"));
  if ($DST) {$timezone = ($timezone + 1);}
  if ($timezone == "13") {$timezone = "-11";}

     $A = 1.5708;
     $B = 3.14159;
     $C = 4.71239;
     $D = 6.28319;
     $E = 0.0174533 * $latitude;
     $F = 0.0174533 * $longitude;
     $G = 0.261799  * $timezone;
     $R = -.0145439;
  for ($i = 0; $i < 2; $i++)
   {if (!$i) {$J =  $A;  $type = "vychádza";}
       # výpočet východu slnka
    else  {$J =  $C;  $type = "zapadá"; }
       # výpočet západu slnka
     $K = $yday + (($J - $F) / $D);
     $L = ($K * .017202) - .0574039;
     $M = $L + .0334405 * sin($L);
     $M += 4.93289 + (3.49066E-04) * sin(2 * $L);
       if ($D == 0) {$problem = TRUE;}
       while ($M < 0)  {$M = ($M + $D);}
       while ($M >= $D) {$M = ($M - $D);}
     if (($M / $A) - intval($M / $A) == 0) {$M += 4.84814E-06;}
     $P = sin($M) / cos($M);
     $P = atan2(.91746 * $P, 1);
     if ($M > $C) {$P += $D;}
     else {if ($M > $A) {$P += $B;} }
     $Q = .39782 * sin($M);
     $Q = $Q / sqrt(-$Q * $Q + 1);
     $Q = atan2($Q, 1);
     $S = $R - (sin($Q) * sin($E));
     $S = $S / (cos($Q) * cos($E));
     if (abs($S) > 1) {$problem = TRUE;}
     $S = $S / sqrt(-$S * $S + 1);
     $S = $A - atan2($S, 1);
     if ($type == 'vychádza') {$S = $D - $S ;}
     $T = $S + $P - 0.0172028 * $K - 1.73364;
     $U = $T - $F;
     $V = $U + $G;
       if ($D == 0) {$problem = TRUE;}
       while ($V < 0)  {$V = ($V + $D);}
       while ($V >= $D) {$V = ($V - $D);}
     $V = $V * 3.81972;

  $hour = intval($V);
  $min  = intval((($V - $hour) * 60) + 0.5);

    if ($type == "vychádza"){
     $vychod = mktime($hour,$min,0,$mon,$mday,$year);
    }
    if ($type == "zapadá"){
      $zapad = mktime($hour,$min,0,$mon,$mday,$year);
    }
  }

            ##################################
            # identifikacia pomocou obrázkov #
            ##################################

  @$alt = $oblaky_1; //popisok pri img v alt=""
  $aktual_cas = time();
  
    if ($aktual_cas > $vychod && $aktual_cas < $zapad) { // je noc alebo den
     $noc = NULL;
    } else {
     $noc = "n_";
    }

  if (@$oblaky[0] == "- jasno" && @$hmla_icon == "fog.png") { // ak je jasno a hmla
      @$obrazok = $icons_folder. $noc. "0cloud_fog.png";
  } elseif (@$oblaky[0] == "- jasno"){   // ak je jasno
         @$obrazok = $icons_folder. $noc. "0cloud.png";
    } else {
    
       if (@strlen($zrazky_1) > 0) {   // ak sú zrážky
                 $obrazok = $icons_folder. $noc. $oblacnost_icon. $znamienko_zrazky_icon. $zrazky_icon;
             } elseif (@strlen($burky_1) > 0 ) { // ak sú búrky
                   $obrazok = $icons_folder. $noc. $oblacnost_icon. $znamienko_zrazky_icon. $zrazky_icon;
               } elseif (@$hmla_icon == "fog.png") { // ak je hmla
                  $obrazok = $icons_folder. $noc. $oblacnost_icon. $znamienko_zrazky_icon. $hmla_icon;
                 } else { $obrazok = $icons_folder. $noc. $oblacnost_icon. "norain.png"; // ak nie je nic
                   }

      }//else
      
      if (!file_exists($obrazok)) { //kontrola ci obrázok existuje
        $obrazok = $icons_folder. $noc. "no_data.png";
        $alt = "Obrázok nenájdený";
      }
      
                        $sablonaNahrazeni = "<h3>" .$nadpis. "</h3>\n";
                        $sablonaNahrazeni .= "<ul class=\"no\" id=\"white\">\n";
                        $sablonaNahrazeni .= "\t<li>" .$mesto. "</li>\n";
                        $sablonaNahrazeni .= "\t<li>Teplota vzduchu:&#160;<strong>" .$teplota. "</strong>&#160;°C</li>\n";
  if (isset($oblaky_1)) $sablonaNahrazeni .= "\t<li>" .$oblaky_1. "</li>\n";
   if (isset($burky_1)) $sablonaNahrazeni .= "\t<li>" .$znamienko_burky. $burky_1. "</li>\n";   // ak nie su tak nic
      if (isset($hmla)) $sablonaNahrazeni .= "\t<li>" .$hmla. "</li>\n";                        // ak nie su tak nic
  if (isset($zrazky_1)) $sablonaNahrazeni .= "\t<li>" .$znamienko_zrazky. $zrazky_1. "</li>\n"; // ak nie su tak nic
                        $sablonaNahrazeni .= "\t<li><img src=\"$obrazok\" alt=\"$alt\" title=\"$alt\" /></li>\n";
                        $sablonaNahrazeni .= "</ul>\n";

} // koniec else kontrola ci je $retazec

 if (@$problem == TRUE){
   $sablonaNahrazeni = "<h3>" .$nadpis. "</h3>\n";
   $sablonaNahrazeni .= "<ul class=\"no\" id=\"white\">\n";
   $sablonaNahrazeni .= "\t<li>Nepodarilo sa načítať údaje o počasí!!!</li>\n";
   $sablonaNahrazeni .= "\t<li>Alebo si zadal zlú skratku!!!</li>\n";
   $sablonaNahrazeni .= "</ul>\n";
 }
   
return "$sablonaNahrazeni"; // výstup pre Etomite!
..:: Etomite CMS → Rulezzz !.!.!. ::..
enzo
Amateur
Amateur
Príspevky: 13
Dátum registrácie: Št Okt 23, 2008 3:21 pm

Re: Pocasie na web

Príspevok od používateľa enzo »

cavte,

ked sa pozries na stranku http://weather.noaa.gov/weather/SK_cc.html
co je zdroj udajov pre snippet Pocasie zistis ze funguju aj nasledovne miesta, ktore ziskavaju udaje o pocasi okrem uvedenych styroch:

Prievidza (LZPE) 48-45-59N 018-35-18E
Sliač (LZSL) 48-38-17N 019-08-03E
Dolný Hričov (LZZI) 49-14N 018-36-49E
Lučenec (LZLU) 48-20N 019-44E
Kamenica nad Cirochou (LZKC) 48-56N 022-00E

V zatvorke je skratka, ktoru das do snippetu (to je nazov zdrojoveho suboru) a natiahne ti udaje podla aktualnej hodiny..
Mne funguje Sliac spolahlivo...
V zatvorke su priblizne suradnice miesta merania (vsetko letiska)..mimochodom suradnice slaicu su presne stred pristavacej drahy :-)

-enzo-
enzo
Amateur
Amateur
Príspevky: 13
Dátum registrácie: Št Okt 23, 2008 3:21 pm

Re: Pocasie na web

Príspevok od používateľa enzo »

ahoj, ale ty vlastne zhanas predpoved pocasia a nie
aktualne pocasie...

-e-
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa _rasel^ »

Uff, nj (prehliadol som to), tak sa skúsim neskôr pozrieť na XML Googlu, to vyzerá byť najnevhodnejšia cesta...
..:: Etomite CMS → Rulezzz !.!.!. ::..
enzo
Amateur
Amateur
Príspevky: 13
Dátum registrácie: Št Okt 23, 2008 3:21 pm

Re: Pocasie na web

Príspevok od používateľa enzo »

Na tom Google nie sú vždy aktuálne dáta.. npr.dnes sú tam zo soboty 21.3 o 16.00..

enzo
Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa Marek Adamec »

sak google dava aj atkualny stav pocasia aj pocasie na dalsie dni... http://www.google.com/search?hl=en&lr=& ... tnG=Search

Len neviem ako to mam spravit aby som mohol cerpat to pocasie na svoj web...
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa _rasel^ »

Ak sa chceš do toho pustiť, tak ako inšpirácia ti môže slúžiť WebAPI Team script z WhatPulse, ktorý vie čítať XML. Tento script je potrebné upraviť na XML Googlu.

Originál script:

Kód: Vybrať všetko

<pre>
<?
	/*
	 *	readTeamStats(teamid)
	 *		-	Read WhatPulse team statistics from the webapi into an array.
	 *
	 *	Author: wasted@whatpulse.org
	 *  Based on script for www.sogamed.com
	 */
	function readTeamStats($teamid, $team_stats, $members)
	{
		// 
		$statistics_tags = array("TeamName", "TeamDescription", "TeamMembers", "TeamClicks", 
								 "TeamKeys", "TeamRank", "TeamDateFormed", "TeamFounder");
								 
		$member_tags 	 = array("MemberName", "MemberUserID", "MemberKeys", "MemberClicks", 
								 "MemberLastpulse", "MemberManager", "MemberCountry");
	
		// init xml parser and read xml file
		$data   = implode("", file("http://whatpulse.org/api/team.php?TeamID=".$teamid));
		$parser = xml_parser_create();
		xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
		xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
		xml_parse_into_struct($parser, $data, $values, $index);
		xml_parser_free($parser);
		
		for ($x = 0; $x < sizeof($statistics_tags); $x++) 
		{
			$team_stats[$statistics_tags[$x]] = $values[$index[$statistics_tags[$x]][0]]['value'];
		}		
		
		for ($x = 0; $x < sizeof($index['Member']); $x++) 
		{
			for ($y = 0; $y < sizeof($member_tags); $y++) 
			{
				if ($values[$index[$member_tags[$y]][$x]]['level'] == 5)
				{
					$members[$x][$member_tags[$y]] = $values[$index[$member_tags[$y]][$x]]['value'];
				}
			}
		}
	}
	
	$team_stats = array();
	$members    = array();
	
	readTeamStats(3, &$team_stats, &$members);
	
	print_r($team_stats);
	print_r($members);
?>
</pre>
Tento script som upravil pre potreby Etomite, číta XML z adresy: http://whatpulse.org/api/teams/8757.xml a snippet vyzerá takto:

Kód: Vybrať všetko

function readTeamStats($teamid, $team_stats, $members)
	{
		// 
		$statistics_tags = array("TeamName", "TeamDescription", "TeamMembers", "TeamClicks", 
								 "TeamKeys", "TeamRank", "TeamDateFormed", "TeamFounder", "GeneratedTime");
								 
		$member_tags 	 = array("MemberName", "MemberUserID", "MemberKeys", "MemberClicks", 
								 "MemberLastPulse", "MemberManager", "MemberCountry");
	
		// init xml parser and read xml file
		$data   = implode("", file("http://whatpulse.org/api/teams/".$teamid.".xml"));
		$parser = xml_parser_create();
		xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
		xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
		xml_parse_into_struct($parser, $data, $values, $index);
		xml_parser_free($parser);
		
		for ($x = 0; $x < sizeof($statistics_tags); $x++) 
		{
			$team_stats[$statistics_tags[$x]] = $values[$index[$statistics_tags[$x]][0]]['value'];
		}		
		
		for ($x = 0; $x < sizeof($index['Member']); $x++) 
		{
			for ($y = 0; $y < sizeof($member_tags); $y++) 
			{
				if ($values[$index[$member_tags[$y]][$x]]['level'] == 5)
				{
					$members[$x][$member_tags[$y]] = $values[$index[$member_tags[$y]][$x]]['value'];
				}
			}
		}
	}
	
	$team_stats = array();
	$members    = array();
	
	readTeamStats(8757, &$team_stats, &$members);
$eto_team = ("<table style='text-align: center;'>
<tr><th>Meno tímu</th><td><strong>".$team_stats['TeamName']."</strong><br /><em>".$team_stats['TeamDescription']."</em></td></tr>
<tr><th>Členov</th><td>".$team_stats['TeamMembers']."</td></tr>
<tr><th>Klávesy v tíme</th><td>".number_format ($team_stats['TeamKeys'], 0, ',', ' ')."</td></tr>
<tr><th>Kliknut v tíme</th><td>".number_format ($team_stats['TeamClicks'], 0, ',', ' ')."</td></tr>
<tr><th>Poradie tímu vo svete</th><td>".number_format ($team_stats['TeamRank'], 0, ',', ' ')."</td></tr>
<tr><th>Dátum založenia</th><td>".$team_stats['TeamDateFormed']."</td></tr>
<tr><th>Posledný update štatistík</th><td>".$team_stats['GeneratedTime']."</td></tr></table>");
$eto_members = "<p>(F) = Zakladateľ<br />(M) = Manažér</p><p><strong>Zoznam členov: </strong>: ";
for ($x = 0; $x < $team_stats['TeamMembers']; $x++) 
  {
  $rank = $x+1;
  $founder = ($team_stats['TeamFounder'] == $members[$x]['MemberName'])?$founder = " (F)":$founder = "";
$manager = ($members[$x]['MemberManager'] == "Yes")?$manager = " (M)":$manager = "";
  $eto_members .= "<em>".$members[$x]['MemberName'].$founder.$manager."</em>";
  if(($x+1) < $team_stats['TeamMembers']) {$eto_members .= ", ";} else {$eto_members .= ".</p>";}
  }
$eto_members .= "<table style='width: 100%; text-align: center;'>";
$eto_members .= "<tr><th>Rank</th><th>Nick</th><th>Klávesy</th><th>Kliknutia</th><th>Posledné pulznutie</th><th>Štát</th></tr>";
for ($x = 0; $x < $team_stats['TeamMembers']; $x++) 
  {
  $rank = $x+1;
  $member_percentage_key = $members[$x]['MemberKeys'] / $members[0]['MemberKeys'] * 100;
  $founder = ($team_stats['TeamFounder'] == $members[$x]['MemberName'])?$founder = " (F)":$founder = "";
$manager = ($members[$x]['MemberManager'] == "Yes")?$manager = " (M)":$manager = "";
  $eto_members .= "<tr><td>".$rank.". [".number_format ($member_percentage_key, 3, '.', ' ')." %]</td><td><a href='http://whatpulse.org/stats/users/".$members[$x]['MemberUserID']."/'>".$members[$x]['MemberName']."</a>".$founder.$manager."</td><td>".number_format ($members[$x]['MemberKeys'], 0, ',', ' ')."</td><td>".number_format ($members[$x]['MemberClicks'], 0, ',', ' ')."</td><td>".$members[$x]['MemberLastPulse']."</td><td>".$members[$x]['MemberCountry']."</td></tr>";
  }
$eto_members .= "</table>";
return $eto_team.$eto_members;
Ak sa tomu trocha budeš venovať, tak myslím, žeby nebol problém upraviť funkciu pre potreby Googlu.
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa Marek Adamec »

dostal som sa k tymto informaciam o pocasi z google:

Predpoved pocasia (Google)

Autor: stenley
Popis:
Nasledujuca trieda sluzi na ziskanie údajov o pocasi z Google API pre zadane mesto na niekolko dni. Informacie sa ukladaju do pola, ktoreho struktura je popisana v prikladoch pouzitia. Je to len ukazka, v reali by bolo asi vhodnejsie xml-ko najskor stiahnut, ulozit na disk (napr. cron) a nasledne s nim pracovat. V pripade, ze je zadane mesto, ktore Google nepozna, vracia sa prazdne pole.

kod:

Kód: Vybrať všetko

<?php 
/** 
 * GoogleWeather 
 * 
 * Predpoved pocasia (google) 
 * 
 * @author   stenley <stenley@webdev.sk> 
 * @version   1.0 
 * @license   http://opensource.org/licenses/gpl-license.php GNU Public License 
 */ 

class GoogleWeather { 
   var $lang = "sk"; 
   var $country = "Slovakia"; 
   var $charset = "utf-8"; 
    
   function getWeatherObj($city) { 
      $data = @file_get_contents("http://www.google.com/ig/api?weather=".$city.",".$this->country."&hl=".$this->lang); 
      if(!$data) { 
         return false; 
      } 
      $data = iconv("ISO-8859-2",$this->charset,$data); 
      return new SimpleXMLElement($data); 
   } 
    
   function getWeatherInfo($city) { 
      $weather = array(); 
      $obj = $this->getWeatherObj($city); 
       
      $data = $obj->xpath("/xml_api_reply/weather/current_conditions"); 
      if(!empty($data)) { 
         $weather[] = array( 
            "condition"      => $this->getAttr($data[0]->xpath("condition")), 
            "temp_f"         => $this->getAttr($data[0]->xpath("temp_f")), 
            "temp_c"         => $this->getAttr($data[0]->xpath("temp_c")), 
            "humidity"      => $this->getAttr($data[0]->xpath("humidity")), 
            "icon"         => $this->getAttr($data[0]->xpath("icon")), 
            "wind_condition"   => $this->getAttr($data[0]->xpath("wind_condition")) 
         ); 
      } 
                
      $data = $obj->xpath("/xml_api_reply/weather/forecast_conditions"); 
      if(!empty($data)) { 
         foreach($data as $value) { 
            $weather[] = array( 
               "day_of_week"   => $this->getAttr($value->xpath("day_of_week")), 
               "low"      => $this->getAttr($value->xpath("low")), 
               "high"      => $this->getAttr($value->xpath("high")), 
               "icon"      => $this->getAttr($value->xpath("icon")), 
               "condition"   => $this->getAttr($value->xpath("condition")) 
            ); 
         } 
      } 
       
      return $weather; 
   } 
    
   function getAttr($obj) { 
      $attr = $obj[0]->attributes(); 
      return (string)$attr['data']; 
   } 
} 
?>
Priklad pouzitia:

kod:

Kód: Vybrať všetko

$gw = new GoogleWeather(); 
$weather = $gw->getWeatherInfo("Bratislava");   //pocasie pre Bratislavu 
print_r($weather); 
//$weather = $gw->getWeatherInfo("Kosice");   //pocasie pre Kosice 
//print_r($weather);
Vysledok:

kod:

Kód: Vybrať všetko

Array 
( 
    [0] => Array 
        ( 
            [condition] => Prevažne oblačno 
            [temp_f] => 45 
            [temp_c] => 7 
            [humidity] => Vlhkosť: 61% 
            [icon] => /images/weather/mostly_cloudy.gif 
            [wind_condition] => Vietor: J s rýchlosťou 0 km/h 
        ) 

    [1] => Array 
        ( 
            [day_of_week] => Ut 
            [low] => -2 
            [high] => 8 
            [icon] => /images/weather/chance_of_rain.gif 
            [condition] => Občasný dážď 
        ) 

    [2] => Array 
        ( 
            [day_of_week] => St 
            [low] => 2 
            [high] => 5 
            [icon] => /images/weather/chance_of_snow.gif 
            [condition] => Občasné sneženie 
        ) 

    [3] => Array 
        ( 
            [day_of_week] => Št 
            [low] => 1 
            [high] => 8 
            [icon] => /images/weather/chance_of_rain.gif 
            [condition] => Občasný dážď 
        ) 

    [4] => Array 
        ( 
            [day_of_week] => Pi 
            [low] => 0 
            [high] => 10 
            [icon] => /images/weather/chance_of_rain.gif 
            [condition] => Občasný dážď 
        ) 

)
Vysvetlivky:
[0] - pole s aktualnym pocasim
[1] - pole s pocasim na dnes
[2] - pole s pocasim na zajtra
[3] - pole s pocasim na pozajtra
[4] - pole s pocasim na popozajtra
[condition] - slovny popis pocasia
[temp_f] - teplota vo F
[temp_c] - teplota v C
[humidity] - vlhkost vzduchu
[icon] - obrazok (slnko, dazd, ...)
[wind_condition] - veterne podmienky
[day_of_week] - skratka nazvu dna
[low] - najnizsia teplota
[high] - najvyssia teplota
Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa Marek Adamec »

priblizna predstava vzhladu:
(toto je zo zoznam.sk)

Obrázok
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa _rasel^ »

Snippet [[gWeather]][/s-code] bude vyzerať takto:

Kód: Vybrať všetko

    /**
    * GoogleWeather
    *
    * Predpoved pocasia (google)
    *
    * @author   stenley <stenley@webdev.sk>
    * @version   1.0
    * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
    */

    class GoogleWeather {
       var $lang = "sk";
       var $country = "Slovakia";
       var $charset = "utf-8";
       
       function getWeatherObj($city) {
          $data = @file_get_contents("http://www.google.com/ig/api?weather=".$city.",".$this->country."&hl=".$this->lang);
          if(!$data) {
             return false;
          }
          $data = iconv("ISO-8859-2",$this->charset,$data);
          return new SimpleXMLElement($data);
       }
       
       function getWeatherInfo($city) {
          $weather = array();
          $obj = $this->getWeatherObj($city);
           
          $data = $obj->xpath("/xml_api_reply/weather/current_conditions");
          if(!empty($data)) {
             $weather[] = array(
                "condition"      => $this->getAttr($data[0]->xpath("condition")),
                "temp_f"         => $this->getAttr($data[0]->xpath("temp_f")),
                "temp_c"         => $this->getAttr($data[0]->xpath("temp_c")),
                "humidity"      => $this->getAttr($data[0]->xpath("humidity")),
                "icon"         => $this->getAttr($data[0]->xpath("icon")),
                "wind_condition"   => $this->getAttr($data[0]->xpath("wind_condition"))
             );
          }
                   
          $data = $obj->xpath("/xml_api_reply/weather/forecast_conditions");
          if(!empty($data)) {
             foreach($data as $value) {
                $weather[] = array(
                   "day_of_week"   => $this->getAttr($value->xpath("day_of_week")),
                   "low"      => $this->getAttr($value->xpath("low")),
                   "high"      => $this->getAttr($value->xpath("high")),
                   "icon"      => $this->getAttr($value->xpath("icon")),
                   "condition"   => $this->getAttr($value->xpath("condition"))
                );
             }
          }
           
          return $weather;
       }
       
       function getAttr($obj) {
          $attr = $obj[0]->attributes();
          return (string)$attr['data'];
       }
    }

    $predpovedBratislava = new GoogleWeather();
    $pocasieBratislava = $predpovedBratislava->getWeatherInfo("Bratislava");

    $predpovedKosice = new GoogleWeather();
    $pocasieKosice = $predpovedKosice->getWeatherInfo("Kosice");

    $output = ""; // inicializacia

    // pocasie [1] na dnes Bratislava
    $output .= '<p>Bratislava<br />';
    $output .= $pocasieBratislava[1]['low'].'&deg;C/'; // najnizsia teplota
    $output .= $pocasieBratislava[1]['high'].'&deg;C<br />'; // najvyssia teplota
    $output .= '<img src="http://www.google.com/ig'.$pocasieBratislava[1]['icon'].'" alt="Bratislava: predpoveď na dnes" /><br />'; // ikonka
    $output .= $pocasieBratislava[1]['condition'].'</p>'; // slovny popis pocasia

    // pocasie [1] na dnes Košice
    $output .= '<p>Košice<br />';
    $output .= $pocasieKosice[1]['low'].'&deg;C/'; // najnizsia teplota
    $output .= $pocasieKosice[1]['high'].'&deg;C<br />'; // najvyssia teplota
    $output .= '<img src="http://www.google.com/ig'.$pocasieKosice[1]['icon'].'" alt="Košice: predpoveď na dnes" /><br />'; // ikonka
    $output .= $pocasieKosice[1]['condition'].'</p>'; // slovny popis pocasia

    return $output;
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa Marek Adamec »

v snippete sa nedaju pouzivat tabulky? lebo ked som skusal tak to rozhodilo cely web a vypisalo error...

skusal som toto ale neslo to:

Kód: Vybrať všetko

<table border="150">
<tbody>
<tr>
<td> 
$output .= '<img src="http://www.google.com/ig'.$pocasieBratislava[1]['icon'].'" alt="Bratislava: predpove&#271; na dnes" /><br />'; // ikonka 
</td>
<td> 
    $output .= '<p><strong>Bratislava</strong><br />';
    $output .= $pocasieBratislava[1]['low'].'&deg;C/'; // najnizsia teplota
    $output .= $pocasieBratislava[1]['high'].'&deg;C<br />'; // najvyssia teplota
</td>
</tr>
</tbody>
</table>
</p>
chcel by som aby to vypadalo takto (a aby ked ukazes na obrazok dalo textovi popis pocasia... :D ):
Obrázok
Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa Marek Adamec »

tu je moj upraveny snippet: (ale je tam este jedna mala chyba a to ze medzi jednotlivimi mestami je odskok 3 volnych riadkov, nemozem najst kde to je zadeklarovane... (a pri condition je zle kodovanie namiesto slov su tam haky baky..., a dalsia nevyhoda je ze ked je dlhsi popis tak to presiahne cez 150 pixelov... preto by som to chcel potom zadaklarovat do nazvu pri ukazani na ikonku predpovede... ) )

Kód: Vybrať všetko

/**
    * GoogleWeather
    *
    * Predpoved pocasia (google)
    *
    * @author   stenley <stenley@webdev.sk>
    * @version   1.0
    * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
    */

    class GoogleWeather {
       var $lang = "sk";
       var $country = "Slovakia";
       var $charset = "utf-8";
       
       function getWeatherObj($city) {
          $data = @file_get_contents("http://www.google.com/ig/api?weather=".$city.",".$this->country."&hl=".$this->lang);
          if(!$data) {
             return false;
          }
          $data = iconv("ISO-8859-2",$this->charset,$data);
          return new SimpleXMLElement($data);
       }
       
       function getWeatherInfo($city) {
          $weather = array();
          $obj = $this->getWeatherObj($city);
           
          $data = $obj->xpath("/xml_api_reply/weather/current_conditions");
          if(!empty($data)) {
             $weather[] = array(
                "condition"      => $this->getAttr($data[0]->xpath("condition")),
                "temp_f"         => $this->getAttr($data[0]->xpath("temp_f")),
                "temp_c"         => $this->getAttr($data[0]->xpath("temp_c")),
                "humidity"      => $this->getAttr($data[0]->xpath("humidity")),
                "icon"         => $this->getAttr($data[0]->xpath("icon")),
                "wind_condition"   => $this->getAttr($data[0]->xpath("wind_condition"))
             );
          }
                   
          $data = $obj->xpath("/xml_api_reply/weather/forecast_conditions");
          if(!empty($data)) {
             foreach($data as $value) {
                $weather[] = array(
                   "day_of_week"   => $this->getAttr($value->xpath("day_of_week")),
                   "low"      => $this->getAttr($value->xpath("low")),
                   "high"      => $this->getAttr($value->xpath("high")),
                   "icon"      => $this->getAttr($value->xpath("icon")),
                   "condition"   => $this->getAttr($value->xpath("condition"))
                );
             }
          }
           
          return $weather;
       }
       
       function getAttr($obj) {
          $attr = $obj[0]->attributes();
          return (string)$attr['data'];
       }
    }

    $predpovedBratislava = new GoogleWeather();
    $pocasieBratislava = $predpovedBratislava->getWeatherInfo("Bratislava");

    $predpovedNitra = new GoogleWeather();
    $pocasieNitra = $predpovedNitra->getWeatherInfo("Nitra");

    $predpovedTrnava = new GoogleWeather();
    $pocasieTrnava = $predpovedTrnava->getWeatherInfo("Trnava");

    $predpovedTrencin = new GoogleWeather();
    $pocasieTrencin = $predpovedTrencin->getWeatherInfo("Trencin");

    $predpovedZilina = new GoogleWeather();
    $pocasieZilina = $predpovedZilina->getWeatherInfo("Zilina");

    $predpovedPoprad = new GoogleWeather();
    $pocasiePoprad = $predpovedPoprad->getWeatherInfo("Poprad");

    $predpovedPresov = new GoogleWeather();
    $pocasiePresov = $predpovedPresov->getWeatherInfo("Presov");

    $predpovedKosice = new GoogleWeather();
    $pocasieKosice = $predpovedKosice->getWeatherInfo("Kosice");

    $output = ""; // inicializacia




    // pocasie [2] na dnes Bratislava
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieBratislava[2]['icon'].'" alt="Bratislava: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Bratislava</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieBratislava[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieBratislava[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';


    // pocasie [2] na zajtra Nitra
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieNitra[2]['icon'].'" alt="Nitra: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Nitra</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieNitra[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieNitra[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Trnava
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieTrnava[2]['icon'].'" alt="Trnava: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Trnava</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieTrnava[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieTrnava[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';


    // pocasie [2] na zajtra Trencin
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieTrencin[2]['icon'].'" alt="Trencin: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Tren&#269;ín</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieTrencin[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieTrencin[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Zilina
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieZilina[2]['icon'].'" alt="Žilina: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Žilina</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieZilina[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieZilina[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Poprad
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasiePoprad[2]['icon'].'" alt="Poprad: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Poprad</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasiePoprad[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasiePoprad[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Presov
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasiePresov[2]['icon'].'" alt="Prešov: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Prešov</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasiePresov[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasiePresov[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na dnes Kosice
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieKosice[2]['icon'].'" alt="Košice: predpove&#271; na zajtra" /> </td> <br />';   // ikonka
    $output .= '<td width="120"><p><strong>Košice</strong></td><br />';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieKosice[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieKosice[2]['low'].'&deg;C </td> <br />';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    return $output
;

takto to vypada v realy http://www.navrchol.sk/index.php?id=426 ale v IE to je ok a v opere je to poporuvane sak ked kuknete uvidite...
Používateľov profilový obrázok
_rasel^
ETOMITE Admin
ETOMITE Admin
Príspevky: 1122
Dátum registrácie: Ut Sep 20, 2005 1:03 am
Bydlisko: Košice (SR)
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa _rasel^ »

Tabuľky nemám veľmi rád... a čo takto:

Kód: Vybrať všetko

<div class="pocasie">
  <span class="ikonka"><img src="http://www.google.com/ig/images/weather/chance_of_rain.gif" alt="Bratislava: predpoveď na zajtra"></span>
  <span class="mesto">Bratislava</span><br />
  <span class="teploty">11°C / 2°C</span>
</div>

Kód: Vybrať všetko

.pocasie {
	display: block;
}
.ikonka, .mesto, .teploty {
	float: left;
}
.ikonka {
	padding-right: 3px;
}
..:: Etomite CMS → Rulezzz !.!.!. ::..
Používateľov profilový obrázok
Marek Adamec
Medium Star
Medium Star
Príspevky: 246
Dátum registrácie: Pi Dec 28, 2007 7:58 pm
Bydlisko: Dubnica nad Váhom
Kontaktovať používateľa:

Re: Pocasie na web

Príspevok od používateľa Marek Adamec »

tu je moj posledny funkcny kod na predpoved pocasia z googlu, ale uz nefunguje lebo nechce zobrazovat vobec obrazky pocasia... ale neviem preco, dlhsie som to nepouzival a teraz ked som to chcel spravadzkovat tak to uz blbne...:

Kód: Vybrať všetko

/**
    * GoogleWeather
    *
    * Predpoved pocasia (google)
    *
    * @author   stenley <stenley@webdev.sk>
    * @version   1.0
    * @license   http://opensource.org/licenses/gpl-license.php GNU Public License
    */

    class GoogleWeather {
       var $lang = "sk";
       var $country = "Slovakia";
       var $charset = "utf-8";
       
       function getWeatherObj($city) {
          $data = @file_get_contents("http://www.google.com/ig/api?weather=".$city.",".$this->country."&hl=".$this->lang);
          if(!$data) {
             return false;
          }
          $data = iconv("ISO-8859-2",$this->charset,$data);
          return new SimpleXMLElement($data);
       }
       
       function getWeatherInfo($city) {
          $weather = array();
          $obj = $this->getWeatherObj($city);
           
          $data = $obj->xpath("/xml_api_reply/weather/current_conditions");
          if(!empty($data)) {
             $weather[] = array(
                "condition"      => $this->getAttr($data[0]->xpath("condition")),
                "temp_f"         => $this->getAttr($data[0]->xpath("temp_f")),
                "temp_c"         => $this->getAttr($data[0]->xpath("temp_c")),
                "humidity"      => $this->getAttr($data[0]->xpath("humidity")),
                "icon"         => $this->getAttr($data[0]->xpath("icon")),
                "wind_condition"   => $this->getAttr($data[0]->xpath("wind_condition"))
             );
          }
                   
          $data = $obj->xpath("/xml_api_reply/weather/forecast_conditions");
          if(!empty($data)) {
             foreach($data as $value) {
                $weather[] = array(
                   "day_of_week"   => $this->getAttr($value->xpath("day_of_week")),
                   "low"      => $this->getAttr($value->xpath("low")),
                   "high"      => $this->getAttr($value->xpath("high")),
                   "icon"      => $this->getAttr($value->xpath("icon")),
                   "condition"   => $this->getAttr($value->xpath("condition"))
                );
             }
          }
           
          return $weather;
       }
       
       function getAttr($obj) {
          $attr = $obj[0]->attributes();
          return (string)$attr['data'];
       }
    }

    $predpovedBratislava = new GoogleWeather();
    $pocasieBratislava = $predpovedBratislava->getWeatherInfo("Bratislava");

    $predpovedNitra = new GoogleWeather();
    $pocasieNitra = $predpovedNitra->getWeatherInfo("Nitra");

    $predpovedTrnava = new GoogleWeather();
    $pocasieTrnava = $predpovedTrnava->getWeatherInfo("Trnava");

    $predpovedTrencin = new GoogleWeather();
    $pocasieTrencin = $predpovedTrencin->getWeatherInfo("Trencin");

    $predpovedZilina = new GoogleWeather();
    $pocasieZilina = $predpovedZilina->getWeatherInfo("Zilina");

    $predpovedPoprad = new GoogleWeather();
    $pocasiePoprad = $predpovedPoprad->getWeatherInfo("Poprad");

    $predpovedPresov = new GoogleWeather();
    $pocasiePresov = $predpovedPresov->getWeatherInfo("Presov");

    $predpovedKosice = new GoogleWeather();
    $pocasieKosice = $predpovedKosice->getWeatherInfo("Kosice");

    $output = ""; // inicializacia




    // pocasie [2] na dnes Bratislava
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieBratislava[2]['icon'].'" alt="Bratislava: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="100"><strong>Bratislava</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieBratislava[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieBratislava[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';


    // pocasie [2] na zajtra Nitra
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieNitra[2]['icon'].'" alt="Nitra: predpove&#271; na zajtra" /> </td> ';   // ikonka
    $output .= '<td width="120"><strong>Nitra</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieNitra[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieNitra[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Trnava
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieTrnava[2]['icon'].'" alt="Trnava: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="120"><strong>Trnava</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieTrnava[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieTrnava[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';


    // pocasie [2] na zajtra Trencin
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieTrencin[2]['icon'].'" alt="Trencin: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="120"><strong>Tren&#269;ín</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieTrencin[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieTrencin[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Zilina
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieZilina[2]['icon'].'" alt="Žilina: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="120"><strong>Žilina</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieZilina[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieZilina[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Poprad
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasiePoprad[2]['icon'].'" alt="Poprad: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="120"><strong>Poprad</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasiePoprad[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasiePoprad[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na zajtra Presov
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasiePresov[2]['icon'].'" alt="Prešov: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="120"><strong>Prešov</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasiePresov[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasiePresov[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';

    // pocasie [2] na dnes Kosice
    $output .= '<table>';
    $output .= '<tr>';
    $output .= '<td rowspan="2"><img src="http://www.google.com/ig'.$pocasieKosice[2]['icon'].'" alt="Košice: predpove&#271; na zajtra" /> </td>';   // ikonka
    $output .= '<td width="120"><strong>Košice</strong></td>';
    $output .= '</tr><tr>';
    $output .= '<td colspan="2">'.  $pocasieKosice[2]['high'].'&deg;C / ';                                     // najvyssia teplota
    $output .=                                 $pocasieKosice[2]['low'].'&deg;C </td>';                // najnizsia teplota
    $output .= '</tr>'; 
    $output .= '</table>';



    return $output;
Napísať odpoveď