PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Weather Hack


ThomasH
01.09.2002, 18:02
Hallöle,

ich hab soeben den weather Hack eingebaut, er läuft mit kleinen schwierigkeiten soweit auch ganz gut, mehr dazu unten. Ich hätte nun ein paar Fragen:
- Wie kann ich einstellen das die Temperatur in Celcius. die Windgeschwindigkeit in Km/h ect..angezeigt werden ?
- Wie ändere ich die Region von New York auf Malediven--->Male ? ich hab gelesen soweit ich das richtig verstanden habe das ich irgendeinen Wert mit phpmyadmin ändern muss, wie und wo finde ich den ? Muss ich sonst noch irgendwas einstellen ?
- Wenn ich auf Change Settings klicke kommt folgende Meldung

Database error in vBulletin 2.2.6:

Invalid SQL: SELECT accid,city_title FROM weather_city WHERE subdivid= ORDER BY city_title
mysql error: You have an error in your SQL syntax near 'ORDER BY city_title' at line 1

mysql error number: 1064

Date: Sunday 01st of September 2002 05:59:58 PM
Script: http://*******************s=5581c70470439a16e14fe4d83ff05441&action=modifysettings
Referer: http://*************/forum/

Wäre klasse wenn mir jemand Tips geben könnte, danke :D

Gruss

Thomas

Kars10
01.09.2002, 23:05
Hi!
Also du musst den "Accid-Wert" in der Index.php und in der Weather.php ändern.
Such dir den Accid-Wert von der Stadt aus die du als Standart Stadt angezeigt haben willst und schreibe diesen Wert anstelle des New York Accids rein. Findest du aber auch in der Anleitung erklärt. Den Datenbank-Error schiebe ich darauf das du vermutlich nicht alle Tabellen in die Datenbank gelegt hast. Bist du sicher alle Querys ausgeführt zu haben?

Gruss
Karsten

ThomasH
02.09.2002, 19:06
Hi Karsten,

und wo find ich den ACCID-Wert ? Ich blick auf der Seite einfach net durch :(
Zu Datenbank error, folgende Tabellen hab ich mit Hilfe des create-tables dingsbums angelegt :D
weather_city
weather_country
weather_region
weather_subdiv
weather_userdata
weather_usersettings

Ich denke das müssten alle gewesen sein, oder ?

Gruss

Thomas

Kars10
02.09.2002, 21:50
Der Accid-wert ist ein 5-Stelliger Code der quasi für jede Stadt steht.
Beispiel:
Berlin hat den Accid-Code "GMXX0007".
Wenn du Berlin nun als deine Standard Stadt haben möchtest, musst du den Code in deiner Weather.php und in der index.php ändern.

Hier der Code der Index.php:

// ###################### Get Weather #######################
if ($weatherpage!=1 or !isset($weatherpage)) {

$usersettings = $DB_site->query_first("SELECT * FROM weather_usersettings WHERE userid=$bbuserinfo[userid]");
if (!isset($usersettings[userid])) {
$usersettings[accid] = "USNY0996";
$usersettings[tpc] = "1";
$usersettings[tps] = "1";
$DB_site->query("INSERT INTO weather_usersettings (userid,accid,tpc,tps) VALUES ('$bbuserinfo[userid]','$usersettings[accid]','$usersettings[tpc]','$usersettings[tps]')");
}

$userdata = $DB_site->query_first("SELECT * FROM weather_userdata WHERE userid=$bbuserinfo[userid]");
$datecut = $userdata[time];
if ((time()-7200)>$datecut or $forceupdate=="yes") {
$rawdata = fsockopen("www.msnbc.com",80,$num_error,$str_error,30);
if(!$rawdata) {
$weather[error_num] = $num_error;
$weather[error_str] = $str_error;
} else {
fputs($rawdata,"GET /m/chnk/d/weather_d_src.asp?acid=$usersettings[accid] HTTP/1.0\n\n");

while (!feof($rawdata)) {
$getbit = fgets($rawdata,4096);
$getbit = trim($getbit)."\n";
if (substr($getbit,7,4) == "City") {
$weather[city] = substr($getbit,15,40);
$weather[city] = substr($weather[city],0,strlen($weather[city])-3);
}
if (substr($getbit,7,6) == "SubDiv") {
$weather[subdiv] = substr($getbit,17,20);
$weather[subdiv] = substr($weather[subdiv],0,strlen($weather[subdiv])-3);
}
if (substr($getbit,7,7) == "Country") {
$weather[country] = substr($getbit,18,20);
$weather[country] = substr($weather[country],0,strlen($weather[country])-3);
}
if (substr($getbit,7,5) == "Temp ") {
$weather[temp] = substr($getbit,15,20);
$weather[temp] = substr($weather[temp],0,strlen($weather[temp])-3);
}
if (substr($getbit,7,5) == "CIcon") {
$weather[cicon] = substr($getbit,16,20);
$weather[cicon] = substr($weather[cicon],0,strlen($weather[cicon])-3);
}
if (substr($getbit,7,5) == "WindS") {
$weather[wind_spd] = substr($getbit,16,20);
$weather[wind_spd] = substr($weather[wind_spd],0,strlen($weather[wind_spd])-3);
}
if (substr($getbit,7,5) == "WindD") {
$weather[wind_dir] = substr($getbit,16,20);
$weather[wind_dir] = substr($weather[wind_dir],0,strlen($weather[wind_dir])-3);
}
if (substr($getbit,7,4) == "Baro") {
$weather[barometer] = substr($getbit,15,20);
$weather[barometer] = substr($weather[barometer],0,strlen($weather[barometer])-3);
}
if (substr($getbit,7,5) == "Humid") {
$weather[humidity] = substr($getbit,16,20);
$weather[humidity] = substr($weather[humidity],0,strlen($weather[humidity])-3);
}
if (substr($getbit,7,4) == "Real") {
$weather[realfeel] = substr($getbit,15,20);
$weather[realfeel] = substr($weather[realfeel],0,strlen($weather[realfeel])-3);
}
if (substr($getbit,7,6) == "LastUp") {
$weather[lastup] = substr($getbit,17,25);
$weather[lastup] = substr($weather[lastup],0,strlen($weather[lastup])-3);
}
if (substr($getbit,7,7) == "ConText") {
$weather[context] = substr($getbit,18,25);
$weather[context] = substr($weather[context],0,strlen($weather[context])-3);
}
}

// Location Info
$weatherdata[city] = $weather[city];
$weatherdata[subdiv] = $weather[subdiv];
$weatherdata[country] = $weather[country];

// Current Conditions
$weatherdata[temp] = convert_temp($weather[temp],$usersettings[tpc]);
$weatherdata[cicon] = $weather[cicon];
$weatherdata[wind_dir] = $weather[wind_dir];
$weatherdata[wind_spd] = convert_speed($weather[wind_spd],$usersettings[tps]);
$weatherdata[barometer] = convert_press($weather[barometer],$usersettings[tps]);
$weatherdata[humidity] = $weather[humidity];
$weatherdata[realfeel] = convert_temp($weather[realfeel],$usersettings[tpc]);
$weatherdata[lastup] = $weather[lastup];
$weatherdata[context] = $weather[context];

fclose($rawdata);
}
} else {
$weatherdata = $DB_site->query_first("SELECT city,subdiv,country,temp,cicon,wind_dir,wind_spd,barometer,humidity,realfeel,lastup,context FROM weather_userdata WHERE userid=$bbuserinfo[userid]");
}

if ($weatherdata[subdiv]) {
$weatherdata[showsubdiv] = "$weatherdata[subdiv], ";
} else {
$weatherdata[showsubdiv] = "";
}

$time_lastup = strtotime($weatherdata[lastup]);
$weather[updatedate] = vbdate($dateformat,$time_lastup);
$weather[updatetime] = vbdate($timeformat,$time_lastup);

eval("\$currentweather = \"".gettemplate("forumhome_weather")."\";");
}

Wenn du dir den Code anschaust findest du den Wert "USNY0996".
Dieser Wert steht für die Stadt New York. Also einfach nach diesem Wert suchen und ihn gegen den Wert den du als Standardwert haben möchtest ersetzen.
Die Accid-Codes findest du in der Weather_city.sql.

Wenn du nur die Deutschen Städte in die Datenbank eingetragen hast, erklärt es auch den MySql-Fehler, denn er sucht nach dem "New York" Accid den er in der DB nicht finden kann.

Gruss
Karsten

ThomasH
03.09.2002, 13:18
Klasse, danke für deine ausführliche Antwort :)
Aber noch eine Frage, wo kann ich nachlesen welche Stadt welchen ACCID Wert hat ?

Wenn du nur die Deutschen Städte in die Datenbank eingetragen hast, erklärt es auch den MySql-Fehler, denn er sucht nach dem "New York" Accid den er in der DB nicht finden kann.

Ich hab noch gar keinen Wert eingetragen, ich hab den Hack laut Anleitung installiert, und da ist New York als Standard definiert.

Gruss

Thomas

PsYc
04.09.2002, 14:32
die daten für die countrys regions und cities müssen ja erst alle in die tabelle eingefügt werden

da steht ja sonst noch garnichts drinne

aber auch nach dem einfügen der daten in die mysql datenbank

bekomm ich den gleichen fehler wie thomas

Invalid SQL: SELECT accid,city_title FROM weather_city WHERE subdivid= ORDER BY city_title
mysql error: You have an error in your SQL syntax near 'ORDER BY city_title' at line 1

mysql error number: 1064

schon 3 mal neuinstalliert jedesmal das gleiche...

immer in der weather.php

Maddrax
06.09.2002, 11:54
Der Accid-Code ist in der "weather.php" 2x vorhanden und muss dementsprechend 2x geändert werden.
Zeile 20 und 201
Ebenso muss der Wert im eingefügten Code bei der "index.php" geändert werden.

Um die Werte standartmäßig auf deutsche Werte zu stellen gehe mit phpmyadmin in die Tabelle "weather_usersettings".
Dort sollte jetzt eine ID=0 sein. Dies ist die forenweite Einstellung (alle User die nichts eingestellt haben und Besucher bekommen diese zu sehen).
Bei "accid" sollte die stehen die du in der "weather.php" und den eingefügten code der "index.php" eingegeben hast.
"tpc" und "tps" sind die Grad und metrischen Einstellungen, 0 bedeutet deutsches Format und 1 amerikanisches Format. Die muss per Hand eingestellt werden (amerikanisches Format ist voreingestellt).

EDIT
Ihr müsst alle sql-dateien aus dem Ordner "weatherdata" einlesen. Erst dann funktioniert der Hack korrekt.