İl - İlçe - Semt - Mahalle Veritabanları ve Uygulaması
Yazılımlarınızda gerekli olur diyerek böyle bir yazı yazayım dedim. Hem çeşitli tipteki veritabanlarını hem de ASP.NET uygulamasını bu yazıda bulabileceksiniz.
Önce çeşitli tiplerdeki veritabanlarını paylaşayım:
MySQL:
- Ayrı ayrı indirmek isteyebilirsiniz: İller, ilçeler, semtler, mahalleler.
- İl-ilçe-Semt-Mahalle-PostaKodu / Latin1
- İl-ilçe-Semt-Mahalle-PostaKodu / Latin5
- İl-ilçe-Semt-Mahalle-PostaKodu / UTF8
Access:
Excel:
XML:
SQL Server:
- İl-ilçe-Semt-Mahalle-PostaKodu (Script dosyası, .sql)
- İl-ilçe-Semt-Mahalle-PostaKodu (SQL Server dosyası, .mdf)
Şimdi de sizlerle uygulama örneğini paylaşayım:
Uygulamamız ASP.NET ortamında C# ile hazırlandı.
Örnek ekran görüntüleri:





Sayfa tasarımı kodları:
<div>
<asp:DropDownList ID="ddlIller" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlIller_SelectedIndexChanged" />
<br />
<asp:DropDownList ID="ddlIlceler" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlIlceler_SelectedIndexChanged"
Enabled="false" />
<br />
<asp:DropDownList ID="ddlSemtler" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlSemtler_SelectedIndexChanged"
Enabled="false" />
<br />
<asp:DropDownList ID="ddlMahalleler" runat="server" AutoPostBack="true" OnSelectedIndexChanged="ddlMahalleler_SelectedIndexChanged"
Enabled="false" />
<br />
<asp:Button ID="btnBilgileriGetir" runat="server" Text="Bilgileri Getir" OnClick="btnBilgileriGetir_Click"
Enabled="false" />
<asp:Label ID="lblBilgiler" runat="server" Visible="false" />
</div>
Bilgilerin okunması ile ilgili kodlar:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
HelperDB helperDB = new HelperDB();
string sql = "select IL_ID, IL_ADI from il order by IL_ADI";
ddlIller.DataSource = helperDB.ExecuteDataTable(sql);
ddlIller.DataTextField = "IL_ADI";
ddlIller.DataValueField = "IL_ID";
ddlIller.DataBind();
ddlIller.Items.Insert(0, new ListItem("(Seçiniz)", "0"));
}
}
protected void ddlIller_SelectedIndexChanged(object sender, EventArgs e)
{
ddlIlceler.Items.Clear();
ddlSemtler.Items.Clear();
ddlMahalleler.Items.Clear();
ddlSemtler.Enabled = false;
ddlMahalleler.Enabled = false;
btnBilgileriGetir.Enabled = false;
lblBilgiler.Visible = false;
int id = ddlIller.SelectedValue.ToInt32();
if (id == 0)
{
ddlIlceler.Enabled = false;
return;
}
HelperDB helperDB = new HelperDB();
string sql = "select ILCE_ID, ILCE_ADI from ilce where IL_ID=?il order by ILCE_ADI";
MySqlParameter p = new MySqlParameter("?il", MySqlDbType.Int32);
p.Value = id;
ddlIlceler.DataSource = helperDB.ExecuteDataTable(sql, p);
ddlIlceler.DataTextField = "ILCE_ADI";
ddlIlceler.DataValueField = "ILCE_ID";
ddlIlceler.DataBind();
ddlIlceler.Items.Insert(0, new ListItem("(Seçiniz)", "0"));
ddlIlceler.Enabled = true;
}
protected void ddlIlceler_SelectedIndexChanged(object sender, EventArgs e)
{
ddlSemtler.Items.Clear();
ddlMahalleler.Items.Clear();
ddlMahalleler.Enabled = false;
btnBilgileriGetir.Enabled = false;
lblBilgiler.Visible = false;
int id = ddlIlceler.SelectedValue.ToInt32();
if (id == 0)
{
ddlSemtler.Enabled = false;
return;
}
HelperDB helperDB = new HelperDB();
string sql = "select SEMT_ID, SEMT_ADI from semt where ILCE_ID=?ilce order by SEMT_ADI";
MySqlParameter p = new MySqlParameter("?ilce", MySqlDbType.Int32);
p.Value = id;
ddlSemtler.DataSource = helperDB.ExecuteDataTable(sql, p);
ddlSemtler.DataTextField = "SEMT_ADI";
ddlSemtler.DataValueField = "SEMT_ID";
ddlSemtler.DataBind();
ddlSemtler.Items.Insert(0, new ListItem("(Seçiniz)", "0"));
ddlSemtler.Enabled = true;
}
protected void ddlSemtler_SelectedIndexChanged(object sender, EventArgs e)
{
ddlMahalleler.Items.Clear();
btnBilgileriGetir.Enabled = false;
lblBilgiler.Visible = false;
int id = ddlSemtler.SelectedValue.ToInt32();
if (id == 0)
{
ddlMahalleler.Enabled = false;
return;
}
HelperDB helperDB = new HelperDB();
string sql = "select MAH_ID, MAHALLE_ADI from mahalle_koy where SEMT_ID=?semt order by MAHALLE_ADI";
MySqlParameter p = new MySqlParameter("?semt", MySqlDbType.Int32);
p.Value = id;
ddlMahalleler.DataSource = helperDB.ExecuteDataTable(sql, p);
ddlMahalleler.DataTextField = "MAHALLE_ADI";
ddlMahalleler.DataValueField = "MAH_ID";
ddlMahalleler.DataBind();
ddlMahalleler.Items.Insert(0, new ListItem("(Seçiniz)", "0"));
ddlMahalleler.Enabled = true;
}
protected void ddlMahalleler_SelectedIndexChanged(object sender, EventArgs e)
{
lblBilgiler.Visible = false;
int id = ddlSemtler.SelectedValue.ToInt32();
if (id == 0)
{
btnBilgileriGetir.Enabled = false;
return;
}
btnBilgileriGetir.Enabled = true;
}
protected void btnBilgileriGetir_Click(object sender, EventArgs e)
{
lblBilgiler.Text = string.Format(
@"
<br/>
<br/>
İl: {0} - {1}
<br/>
İlçe: {2} - {3}
<br/>
Semt: {4} - {5}
<br/>
Mahalle - Köy: {6} - {7}
",
ddlIller.SelectedValue, ddlIller.SelectedItem.Text,
ddlIlceler.SelectedValue, ddlIlceler.SelectedItem.Text,
ddlSemtler.SelectedValue, ddlSemtler.SelectedItem.Text,
ddlMahalleler.SelectedValue, ddlMahalleler.SelectedItem.Text);
lblBilgiler.Visible = true;
}
Programda, HelperDB, birkaç genişletme metodu, ve MySQL dll leri kullanılmıştır.
Program kodlarını buradan indirebilirsiniz.
Notlar:
- Yukarıdaki kodlar Default.aspx'teki kodlardır. Ayrıca aynı örneğin UpdatePanel kullanılarak gerçekleştirilmiş hali de Default2.aspx'tedir.
- MySQL ConnectionString bilgisini web.config ten değiştirebilirsiniz.
- Örnek MySQL DB'si ni de örnek uygulama klasöründe bulabilirsiniz.
Herkese kolay gelsin.
#MySQL #il #ilçe #mahalle #semt #posta-kodu #access #excel #sql-server #xml #latin1 #latin5 #utf8