php ve jquery ile şehirlere göre msn hava durumu gösterimi
Kendi projem olan hangifirma.net'de arama sonuçları sonucunda gideceğiniz şehrin 5 günlük hava durumunu görebileceğiniz bir modül uygulamaya koydum. Bu uygulamanın çalışma prensibini ve kodlarını blogumda yayınlamayı düşündüm ve ayrı bir uygulama haline getirdim. Umarım işinize yarar.
Uygulamanın demosunu görmek için burayı, dosyaları indirmek için ise burayı tıklayınız.
İlk olarak msn.com'un şehirlere göre hava durumu bilgisini xml çıktı olarak verdiği bu linkten düzenli olarak çekebilir ve veritabanına kaydedebilirsiniz. İşlemi yapan msn_hava_fetch.php sayfasının içeriği aşağıdaki gibidir:
<?php
include_once("functions.php");
baglan();
//ilgili tablodaki şehirlerin hava durumu bilgilerini temizliyoruz
mysql_query("DELETE FROM hava_durumu");
$sql = mysql_query("SELECT Id, Adi, MsnHavaKod FROM iller2");
while ($r = mysql_fetch_assoc($sql)){
$str = file_get_contents("http://tr.msn.com/ajax/weatherdata.aspx?wealocations=wc:{$r["MsnHavaKod"]}&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;weadegreetype=C");
$str=str_replace(" ","",$str);
if ($str !=""){
$meta_bugun = '#<currenttemperature="(.*?)"skycode="(.*?)"skytext="(.*?)"date="(.*?)"day="(.*?)"shortday="(.*?)"observationtime="(.*?)"observationpoint="(.*?)"feelslike="(.*?)"humidity="(.*?)"windspeed="(.*?)"winddisplay="(.*?)"/>#';
preg_match_all($meta_bugun,$str,$veriler);
$sql_ekle = "INSERT INTO hava_durumu SET IlId='".$r['Id']."', ";
echo "<b>$r[Adi]</b>";
echo "<br>";
echo "Su anki hava sicakligi: ".$veriler[1][0];
echo "<br>";
echo "Resim kodu: ".$veriler[2][0];
echo "<br>";
echo "Hava durumu text: ".$veriler[3][0];
echo "<br>";
echo "Tarih: ".$veriler[4][0];
echo "<br>";
echo "Gun: ".$veriler[5][0];
echo "<br>";
echo "Gun kisa sekil: ".$veriler[6][0];
echo "<br>";
echo "Gozlem zamani: ".$veriler[7][0];
echo "<br>";
echo "Gozlem noktasi: ".$veriler[8][0];
echo "<br>";
echo "Hissedilen sicaklik: ".$veriler[9][0];
echo "<br>";
echo "Nem: ".$veriler[10][0];
echo "<br>";
echo "Ruzgar hizi: ".$veriler[11][0];
echo "<br>";
echo "Ruzgar gostergesi(?): ".$veriler[12][0];
echo "<br>";
echo "<hr />";
$sql_ekle.=" BugunSicaklik='".$veriler[1][0]."', BugunResimKodu='".$veriler[2][0]."', BugunHavaText='".$veriler[3][0]."', BugunTarih='".$veriler[4][0]."', BugunGun='".$veriler[5][0]."', BugunGunKisa='".$veriler[6][0]."' ";
$meta_sonraki_gunler = '#<forecastlow="(.*?)"high="(.*?)"skycodeday="(.*?)"skytextday="(.*?)"date="(.*?)"day="(.*?)"shortday="(.*?)"precip="(.*?)"/>#';
preg_match_all($meta_sonraki_gunler,$str,$veriler_sonraki_gunler);
for($i=0;$i<=4;$i++)
{
$gun = $i+1;
echo "<b>Sonraki gun $gun</b><br/>";
echo "En dusuk: ".$veriler_sonraki_gunler[1][$i];
echo "<br>";
echo "En yuksek: ".$veriler_sonraki_gunler[2][$i];
echo "<br>";
echo "Resim kodu: ".$veriler_sonraki_gunler[3][$i];
echo "<br>";
echo "Hava durumu text: ".$veriler_sonraki_gunler[4][$i];
echo "<br>";
echo "Tarih: ".$veriler_sonraki_gunler[5][$i];
echo "<br>";
echo "Gun: ".$veriler_sonraki_gunler[6][$i];
echo "<br>";
echo "Gun kisa sekil: ".$veriler_sonraki_gunler[7][$i];
echo "<br>";
echo "<hr />";
$sql_ekle.=" ,Sonraki{$gun}EnDusuk='".$veriler_sonraki_gunler[1][$i]."', Sonraki{$gun}EnYuksek='".$veriler_sonraki_gunler[2][$i]."',Sonraki{$gun}ResimKodu='".$veriler_sonraki_gunler[3][$i]."', Sonraki{$gun}HavaText='".$veriler_sonraki_gunler[4][$i]."', Sonraki{$gun}Tarih='".$veriler_sonraki_gunler[5][$i]."', Sonraki{$gun}Gun='".$veriler_sonraki_gunler[6][$i]."', Sonraki{$gun}GunKisa='".$veriler_sonraki_gunler[7][$i]."' ";
}
echo "<br>";
}
// echo $sql_ekle;exit;
mysql_query($sql_ekle);
}
?>
Şehirlerin listelendiği, ajax requestin yapan javascript kodunun ve işlem sonucunun gösterildiği <strong>index.php</strong> dosyasının içeriği aşağıdaki gibidir:
<?php
include_once 'functions.php';
baglan();
$sehir_liste = func_sehir_liste();
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>msn hava durumu</title>
<script type="text/javascript" src="js/jquery-1.3.1.min.js"></script>
<script type="text/javascript">
function hava_durumu_getir(sehir_id)
{
$.ajax({
type: 'POST',
dataType: 'html',
data: 'sehir_id='+sehir_id,
url: 'ajax_hava_durumu.php',
success: function(ret) {
$('#sonuc').text('');
$('#sonuc').append(ret);
}
});
}
</script>
</head>
<body>
<form>
<table>
<tr>
<td>Şehir seçiniz</td>
<td>
<select name="sehir" id="sehir" onchange="hava_durumu_getir($('#sehir').val())">
<option value="0">Şehir seçiniz...</option>
<?php $i=0; foreach($sehir_liste as $sehir) { ?>
<option value="<?=$sehir['id']?>"><?=$sehir['adi']?></option>
<?php $i++; } ?>
</select>
</td>
</tr>
</table>
</form>
<div id="sonuc">
</div>
</body>
</html>
ajax request işleminin yapıldığı ajax_hava_durumu.php sayfasının içeriği ise şöyle:
<?php
include_once 'functions.php';
baglan();
$sehir_id = mysql_real_escape_string($_POST['sehir_id']);
$sql = mysql_query("SELECT * FROM hava_durumu WHERE IlId='$sehir_id'");
$r[] = mysql_fetch_assoc($sql);
$html = "<table border='1'>";
$html.="<tr>";
$html.="<td colspan='5'>".sehir_adi($sehir_id)."</td>";
$html.="</tr>";
$html.="<tr>";
$html.="<td>".$r[0]['Sonraki1Gun']."</td>";
$html.="<td>".$r[0]['Sonraki2Gun']."</td>";
$html.="<td>".$r[0]['Sonraki3Gun']."</td>";
$html.="<td>".$r[0]['Sonraki4Gun']."</td>";
$html.="<td>".$r[0]['Sonraki5Gun']."</td>";
$html.="<tr>";
$html.="<tr>";
$html.="<td><img src='images/".$r[0]['Sonraki1ResimKodu'].".gif' alt='".$r[0]['Sonraki1HavaText']."' alt='".$r[0]['Sonraki1HavaText']."' /></td>";
$html.="<td><img src='images/".$r[0]['Sonraki2ResimKodu'].".gif' alt='".$r[0]['Sonraki2HavaText']."' alt='".$r[0]['Sonraki2HavaText']."' /></td>";
$html.="<td><img src='images/".$r[0]['Sonraki3ResimKodu'].".gif' alt='".$r[0]['Sonraki3HavaText']."' alt='".$r[0]['Sonraki3HavaText']."' /></td>";
$html.="<td><img src='images/".$r[0]['Sonraki4ResimKodu'].".gif' alt='".$r[0]['Sonraki4HavaText']."' alt='".$r[0]['Sonraki4HavaText']."' /></td>";
$html.="<td><img src='images/".$r[0]['Sonraki5ResimKodu'].".gif' alt='".$r[0]['Sonraki5HavaText']."' alt='".$r[0]['Sonraki5HavaText']."' /></td>";
$html.="<tr>";
$html.="<tr>";
$html.="<td>".$r[0]['Sonraki1HavaText']."</td>";
$html.="<td>".$r[0]['Sonraki2HavaText']."</td>";
$html.="<td>".$r[0]['Sonraki3HavaText']."</td>";
$html.="<td>".$r[0]['Sonraki4HavaText']."</td>";
$html.="<td>".$r[0]['Sonraki5HavaText']."</td>";
$html.="<tr>";
$html.="</table>";
echo $html;
?>
Son olarak ise her 3 php sayfanın başında include ettiğimiz, database connection ve diğer gerekli fonksiyonları barındıran functions.php dosyasının içeriği ise şöyledir:
<?php
function baglan()
{
mysql_connect("localhost","root","root");
mysql_select_db("msn_hava");
mysql_query("SET NAMES utf8");
}
function func_sehir_liste()
{
$sql = mysql_query("SELECT Id,Adi FROM iller2 ORDER BY Adi ASC");
$i=0;
while(list($v_id,$v_adi)=mysql_fetch_array($sql))
{
$data[$i]['id'] = $v_id;
$data[$i]['adi'] = $v_adi;
$i++;
}
return $data;
}
function sehir_adi($sehir_id)
{
$sql = mysql_query("SELECT Adi FROM iller2 WHERE Id='$sehir_id'");
$r = mysql_fetch_row($sql);
return $r[0];
}
?>
Uygulamanın demosunu görmek için burayı, dosyaları indirmek için ise burayı tıklayınız.
Comments(0)