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>
スポンサーリンク
コメント