İ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:

Access:

Excel:

XML:

SQL Server:


Ş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:

  1. Yukarıdaki kodlar Default.aspx'teki kodlardır. Ayrıca aynı örneğin UpdatePanel kullanılarak gerçekleştirilmiş hali de Default2.aspx'tedir.
  2. MySQL ConnectionString bilgisini web.config ten değiştirebilirsiniz.
  3. Örnek MySQL DB'si ni de örnek uygulama klasöründe bulabilirsiniz.

Herkese kolay gelsin.