livedoor天気APIの 全国の地点定義表(RSS)を使い地域を取得して表示するセレクトボックスを作成しました。ついでに設定した地域を表示する天気予報PHPプログラムも作成しました。
下の画像が、天気予報の表示例です。

<?php //天気予報表示
if( isset($_POST['city']) ) {
$city = $_POST['city'];
} else {
$city = '140010';
}
$base_url = "http://weather.livedoor.com/forecast/webservice/json/v1?city=$city";
$json = file_get_contents($base_url);
$json = mb_convert_encoding($json, 'UTF-8');
$obj = json_decode($json, true);
?>
<table border="1" cellspacing="0" cellpadding="5">
<tbody>
<tr>
<td colspan="3">
<?php echo $obj['location']['city'] . 'の天気'; ?>
</td>
</tr>
<tr>
<?php foreach($obj['forecasts'] as $fc) { ?>
<td>
<?php
echo $fc['dateLabel'] . '<br />';
echo $fc['telop'] . '<br />';
echo '<img src="' . $fc['image']['url'] . '"/><br />';
echo $fc['temperature']['max']['celsius'] . '℃/' . $fc['temperature']['min']['celsius'] . '℃';
?>
</td>
<?php } ?>
</tr>
</tbody>
</table>
<?php //地域の表示とIDの設定
$area_url = "http://weather.livedoor.com/forecast/rss/primary_area.xml";
$xml = simplexml_load_file($area_url);
$xml = $xml->channel->children('ldWeather', true)->source->children();
?>
<form method="post" action="">
<select name="city">
<?php
foreach( $xml as $pref ) {
foreach( $pref->children() as $pchild ) {
if( $pchild->getName() == 'city' ) {
?>
<option value="<?php echo $pchild->attributes()->id; ?>"<?php if( $city == $pchild->attributes()->id ){ echo 'selected'; } ?>><?php echo $pchild->attributes()->title; ?></option>';
<?php
}
}
}
?>
</select>
<input type="submit" value="送信" />
</form>
スポンサーリンク

コメント