Page 1 of 1

HowTo: Wetterdaten einbinden

Posted: Wed Jul 28, 2010 11:52 am
by skibby
Hi zusammen,

ich möchte euch mal ein kleines Howto vorstellen wie ihr Wetterdaten nach euren wünschen auf die Seite einbinden könntet.

Schritt 1:
Ihr erstellt euch einen neueen "Benutzerdefinierten Tag". Nun kopiert ihr euch folgenden Code rein:
//Wetter in Langenfeld
$url = "http://rss.wunderground.com/auto/rss_fu ... /10400.xml";
$content = implode("", file($url));

preg_match_all("/\(.*?)\/si", $content, $results);
preg_match("/\(.*?)\/si", $results[1][0], $desc);

$arr = explode(" | ",$desc[1]);

/*
* echo '' . print_r($arr, true) . '';
*  
* Array
* (
*     [0] => Temperature: 86°F / 30°C
*     [1] => Humidity: 74%
*     [2] => Pressure: 29.83in / 1010hPa
*     [3] => Conditions: Partly Cloudy
*     [4] => Wind Direction: ESE
*     [5] => Wind Speed: 5mph / 7km/h
*     [6] => Updated: 10:00 PM PHT
* )
*/
//Temperatur  
preg_match("/Temperature: (.*?)F \/ (.*?)C/si", $arr[0], $str);
$wetter['temp'] = $str['2'];


//Wetterbedingung
preg_match("/Conditions: (.*)/si", $arr[3], $str);
$wetter['verh'] = $str['1'];

//Übersetze Wetterbedingung ins Deutsche
switch($wetter['verh'])  
{  
   case 'Partly Cloudy':  
       $wetter['verh'] = 'Teils wolkig';  
   break;  
     
    case 'Mostly Cloudy':  
       $wetter['verh'] = 'Überwiegend wolkig';  
   break;
     
   case 'Scattered Clouds':  
       $wetter['verh'] = 'Teils wolkig';  
   break;  
     
   case 'Overcast':  
       $wetter['verh'] = 'Bewölkt';  
   break;  
   
   case 'Clear':  
       $wetter['verh'] = 'Heiter';  
   break;  
     
    case 'Fog':  
       $wetter['verh'] = 'Nebel';  
   break;  
     
    case 'Heavy Fog':  
       $wetter['verh'] = 'Starker Nebel';  
   break;  
     
    case 'Light Fog':  
       $wetter['verh'] = 'Leichter Nebel';  
   break;  
   
   case 'Thunderstorm':  
       $wetter['verh'] = 'Gewitter';  
   break;  
   
   case 'Light Thunderstorm':  
       $wetter['verh'] = 'Leichte Gewitter';  
   break;  
   
   case 'Heavy Thunderstorm':  
       $wetter['verh'] = 'Starke Gewitter';  
   break;  
     
    case 'Thunderstorms and Rain':  
       $wetter['verh'] = 'Gewitter mit Regen';  
   break;  
     
    case 'Light Thunderstorms and Rain':  
       $wetter['verh'] = 'Leichte Gewitter mit Regen';  
   break;  
     
    case 'Light Rain Showers':  
       $wetter['verh'] = 'Leichte Regenschauer';  
   break;  
   
    case 'Heavy Rain Showers':  
       $wetter['verh'] = 'Starke Regenschauer';  
   break;  
   
    case 'Light Rain':  
       $wetter['verh'] = 'Leichter Regen';  
   break;  
   
    case 'Haze':  
       $wetter['verh'] = 'Trübe';  
   break;  
     
     case 'Patches of Fog':  
       $wetter['verh'] = 'Nebelfelder';  
   break;  
   
     case 'Unknown Percipitation':  
       $wetter['verh'] = 'Ung. Niederschläge';  
   break;  
   
   case 'Light Drizzle':  
       $wetter['verh'] = 'Leichter Sprühregen';  
   break;  
   
   case 'Mist':  
       $wetter['verh'] = 'Leichter Nebel';  
   break;
   
   case 'Light Rain Mist':  
       $wetter['verh'] = 'Leichter Nebel';  
   break;

    case 'Rain': 
        $wetter['verh'] = 'Regen'; 
    break;
     
   default:  
       $wetter['verh'] = $wetter['verh'];  
   break;  
}  

//Luftfeuchtigkeit
preg_match("/Humidity: (.*)/si", $arr[1], $str);
$wetter['feuchte'] = $str['1'];


//Windrichtung
preg_match("/Wind Direction: (.*)/si", $arr[4], $str);
$wetter['windr'] = $str['1'];


//Übersetze Windrichtung ins Deutsche
switch($wetter['windr'])  
{  
   case 'North':  
       $wetter['windr'] = 'Nord';  
   break;  
   
   case 'East':  
       $wetter['windr'] = 'Ost';  
   break;
   
   case 'South':  
       $wetter['windr'] = 'Süd';  
   break;  

    case 'West':  
       $wetter['windr'] = 'West';  
   break;
   
   case 'SE':  
       $wetter['windr'] = 'SO';  
   break;  
   
   case 'SSE':  
       $wetter['windr'] = 'SSO';  
   break;
   
   case 'NE':  
       $wetter['windr'] = 'NO';  
   break;
   
   case 'ESE':  
       $wetter['windr'] = 'OSO';  
   break;  
   
   case 'NNE':  
       $wetter['windr'] = 'NNO';  
   break;  
   
   case 'ENE':  
       $wetter['windr'] = 'ONO';  
   break;  
   
   case 'Calm':  
       $wetter['windr'] = 'Windstill';  
   break;  
   
   default:  
       $wetter['windr'] = $wetter['windr'];  
   break;
}

//Windgeschwindigkeit
preg_match("/Wind Speed: (.*?)mph \/ (.*?)km\/h/si", $arr[5], $str);
$wetter['windg'] = $str['2'];


//echo $wetter['temp'];
//echo $wetter['verh'];
//echo $wetter['windr'];
//echo $wetter['windg'];
//echo '' . print_r($wetter, true) . '';

echo "Aktuelles Wetter ";
echo "";
echo "Temperatur: ";
echo  $wetter['temp']."\n";

echo "";
echo "Himmel: ";
echo  $wetter['verh']."\n";

echo "";
echo "Windgeschwindigkeit: ";
echo  $wetter['windg']." Km/h\n";

echo "";
echo "Windrichtung: ";
echo  $wetter['windr']."\n";

echo "";
echo "Luftfeuchtigkeit: ";
echo  $wetter['feuchte']."\n";
Nun habt ihr schon mal das ganze "drum herum" jedoch wahrscheinlich die falsche Stadt, es sei denn ihr wohnt in Langenfeld.

Schritt 2: Ihr geht auf diese Seite: http://deutsch.wunderground.com/global/DL.html
Unten ist nen Eingabefeld und gebt dort eure Stadt ein (am besten den Namen, mit PLZ kommt der nicht zurecht) und klickt auf schnellvorhersage. Wenn Ihr eure Stadt habt, findet ihr Rechts oben nen Link mit "RSS".
Du brauchst nur den RSS Link!

Schritt 3: Du editierst folgende Zeile:
Da trägst du logischerweise deinen Link ein. Achtung: Der link endet mit .xml. Das was hinter .xml kommt löscht ihr raus (oftmals steht da noch uncut=metric)

Schritt 4: Nur noch dem ganzen einen Namen geben, abspeichern und in bekannter Form in das Template oder Seite oder wo auch immer einfügen.

//Edit: ich hab mal ein paar Rechtschreibfehler korrigiert die bei der Übersetzung aufgetreten waren. Zudem hab ich noch ein Case mit "Regen" hinzugefügt.

Re: HowTo: Wetterdaten einbinden

Posted: Fri Jul 30, 2010 5:29 pm
by nicmare
wollte das gerade mal für Kassel ausprobieren und kriege:

Code: Select all

Warning: file() [function.file]: URL file-access is disabled in the server configuration in /home/www/url.de/htdocs/lib/content.functions.php(771) : eval()'d code on line 3

Warning: file(http://rss.wunderground.com/auto/rss_full/global/stations/10438.xml) [function.file]: failed to open stream: no suitable wrapper could be found in /home/www/url.de/htdocs/lib/content.functions.php(771) : eval()'d code on line 3

Warning: implode() [function.implode]: Bad arguments. in /home/www/url.de/htdocs/lib/content.functions.php(771) : eval()'d code on line 3
wäre schön wenn das klappen würde :)

Re: HowTo: Wetterdaten einbinden

Posted: Fri Jul 30, 2010 5:53 pm
by NaN
"URL file-access is disabled in the server configuration" sagt doch schon alles.
Eine bestimmte Option ist bei Deinem Server deaktviert.
Das wird die gleiche sein, die man für den ModuleManager braucht.
Ich wette der geht bei Dir auch nicht, oder?

Re: HowTo: Wetterdaten einbinden

Posted: Fri Jul 30, 2010 6:14 pm
by nicmare
doch der geht problemlos

Re: HowTo: Wetterdaten einbinden

Posted: Sun Aug 01, 2010 2:26 pm
by NaN
Das ändert aber nichts daran, dass Dein Provider die Verwendung von URLs bei der php-Funktion file() deaktiviert zu haben scheint.
Der ModuleManager verwendet andere Funktionen, um Daten vom CMSms herunterzuladen.

Versuch mal in der dritten Zeile des UDTs anstelle von

Code: Select all


$content = implode("", file($url)); 

das hier:

Code: Select all


$content = file_get_contents($url);

Oder so:

Code: Select all


$content = '';
if ($fp = @fopen($url, 'r')) {
	while ($data = fread($fp)) {
		$content .= $data;
	} 
	fclose($fp);
}
else
	return;

Noch besser wäre natürlich, gleich das SOAP Modul dazu zu verwenden (dazu ist es ja schließlich da), aber damit kenne ich mich noch nicht aus.

Re: HowTo: Wetterdaten einbinden

Posted: Wed Aug 04, 2010 10:14 am
by cyberman
Danke für dein HowTo - überlege gerade, wie man es etwas besser "konservieren" könnte. In den Untiefen des Forums geht es so schnell verloren ...

Re: HowTo: Wetterdaten einbinden

Posted: Wed Aug 04, 2010 10:22 am
by nicmare
@NaN, erste Methode hat auch Fehler ergeben und bei der zweiten wurde garnichts vom Tag ausgegeben?! Aber ist auch nicht so schlimm! Bei diesem server kann ich auch nen anderes Script verwenden.

Re: HowTo: Wetterdaten einbinden

Posted: Wed Aug 18, 2010 12:25 pm
by skibby
Wie wäre es denn mit einem eigenen Foren Eintrag? HowTo-Do's oder ähnliches.

Jedes HowTo mit nem Sticky zu versehen, macht vielleicht nicht so viel Sinn.

Re: HowTo: Wetterdaten einbinden

Posted: Wed Aug 18, 2010 12:30 pm
by nockenfell
skibby wrote: Wie wäre es denn mit einem eigenen Foren Eintrag? HowTo-Do's oder ähnliches.

Jedes HowTo mit nem Sticky zu versehen, macht vielleicht nicht so viel Sinn.
Gute Idee

Re: HowTo: Wetterdaten einbinden

Posted: Sat Aug 21, 2010 10:36 pm
by cyberman
skibby wrote: Jedes HowTo mit nem Sticky zu versehen, macht vielleicht nicht so viel Sinn.
Meine Meinung ;) - ich versuchs mal mit 'nem neuen Board (in der Hoffnung, das es dort etwas übersichtlicher bleibt).

Re: HowTo: Wetterdaten einbinden

Posted: Mon Apr 04, 2011 10:01 am
by rolwalca
Hallo zusammen,

ich habe versucht die Wetterdaten bei einer Seite einzubinden. Ich scheitere leider schon beim Versuch den benutzdefenierten Tag zu erstellen. Es kommt die Fehlermeldung:

Code: Select all

 Es wurde fehlerhafter Code eingegeben.
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /home/www/web193/html/admin/adduserplugin.php(100) : eval()'d code on line 221 
Was mache ich falsch ??? ?