PHP İl - ilçe listeleme nasıl yapılır?

yussfxc

Centipat
Katılım
28 Ekim 2022
Mesajlar
57
Çözümler
2
Daha fazla  
Cinsiyet
Erkek
Merhaba arkadaşlar. Bir sistem kodluyorum ve adres ekleme sayfası yaptım. İstediğim şey il seçtikten sonra ilçelerin gözükmesini istiyorum yani İstanbul'un ilçeleri vb. Yardım ederseniz çok mutlu olurum iyi akşamlar :) <3


PHP:
<link rel="stylesheet" href="assets/sweetalert2.css">
<link rel="stylesheet" href="assets/css/adres-sayfasi.css">
<script src="assets/main.js"></script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

<div class="card shadow mb-4">
    <div class="card-header py-3">
        <h6 class="m-0 font-weight-bold text-primary"><a href="/">Ana Sayfa</a> > <a href="/adres">Adres İşlemleri</a></h6>
    </div>

    <div class="card-body">
        <form onsubmit="adres_ekle(event)">
            <input type="hidden" name="id" value="<?php echo $user->id ?>">
            <div class="form-group">
                <label for="baslik">Adres Başlığı:</label>
                <input type="text" class="form-control" id="baslik" name="baslik" required>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for="il">İl:</label>
                    <select onchange="getIlce(event)" class="form-control" id="il" name="il" required>
                        <option value="">İl Seçin</option>
                        <?php
                        $iller = DB::get("SELECT * FROM iller");
                        if (!empty($iller)) {
                            foreach ($iller as $il) {
                                echo "<option value='" . $il->id . "'>" . $il->sehiradi . "</option>";
                            }
                        }
                        ?>
                    </select>
                </div>
                <div class="form-group col-md-6">
                    <label for="ilce">İlçe:</label>
                    <select class="form-control" id="ilce" name="ilce" required>
                        <option value="">İlçe Seçin</option>
                    </select>
                </div>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for "mahalle">Mahalle:</label>
                    <select class="form-control" id="mahalle" name="mahalle" required>
                        <option value="">Mahalle Seçin</option>
                    </select>
                </div>
                <div class="form-group col-md-6">
                    <label for="sokak">Sokak:</label>
                    <input type="text" class="form-control" id="sokak" name="sokak" required>
                </div>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for="kat">Kat:</label>
                    <input type="text" class="form-control" id="kat" name="kat">
                </div>
                <div class="form-group col-md-6">
                    <label for="kapi_no">Kapı No:</label>
                    <input type="text" class="form-control" id="kapi_no" name="kapi_no" required>
                </div>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for="daire">Daire:</label>
                    <input type="text" class="form-control" id="daire" name="daire">
                </div>
                <div class="form-group col-md-6">
                    <label for="aciklama">Ek Açıklama:</label>
                    <textarea class="form-control" id="aciklama" name="aciklama"></textarea>
                </div>
            </div>
            <br>

            <div class="text-right">
                <input type="submit" class="btn btn-primary" value="Adresi Kaydet">
            </div>
        </form>
    </div>
</div>

<script>
    const getIlce = (event) => {
        console.log(event.currentTarget.value);
    }
</script>
 
Merhaba arkadaşlar. Bir sistem kodluyorum ve adres ekleme sayfası yaptım. İstediğim şey il seçtikten sonra ilçelerin gözükmesini istiyorum yani İstanbul'un ilçeleri vb. Yardım ederseniz çok mutlu olurum iyi akşamlar :) <3


PHP:
<link rel="stylesheet" href="assets/sweetalert2.css">
<link rel="stylesheet" href="assets/css/adres-sayfasi.css">
<script src="assets/main.js"></script>

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css">

<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/[email protected]/dist/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>

<div class="card shadow mb-4">
    <div class="card-header py-3">
        <h6 class="m-0 font-weight-bold text-primary"><a href="/">Ana Sayfa</a> > <a href="/adres">Adres İşlemleri</a></h6>
    </div>

    <div class="card-body">
        <form onsubmit="adres_ekle(event)">
            <input type="hidden" name="id" value="<?php echo $user->id ?>">
            <div class="form-group">
                <label for="baslik">Adres Başlığı:</label>
                <input type="text" class="form-control" id="baslik" name="baslik" required>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for="il">İl:</label>
                    <select onchange="getIlce(event)" class="form-control" id="il" name="il" required>
                        <option value="">İl Seçin</option>
                        <?php
                        $iller = DB::get("SELECT * FROM iller");
                        if (!empty($iller)) {
                            foreach ($iller as $il) {
                                echo "<option value='" . $il->id . "'>" . $il->sehiradi . "</option>";
                            }
                        }
                        ?>
                    </select>
                </div>
                <div class="form-group col-md-6">
                    <label for="ilce">İlçe:</label>
                    <select class="form-control" id="ilce" name="ilce" required>
                        <option value="">İlçe Seçin</option>
                    </select>
                </div>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for "mahalle">Mahalle:</label>
                    <select class="form-control" id="mahalle" name="mahalle" required>
                        <option value="">Mahalle Seçin</option>
                    </select>
                </div>
                <div class="form-group col-md-6">
                    <label for="sokak">Sokak:</label>
                    <input type="text" class="form-control" id="sokak" name="sokak" required>
                </div>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for="kat">Kat:</label>
                    <input type="text" class="form-control" id="kat" name="kat">
                </div>
                <div class="form-group col-md-6">
                    <label for="kapi_no">Kapı No:</label>
                    <input type="text" class="form-control" id="kapi_no" name="kapi_no" required>
                </div>
            </div>
            <br>

            <div class="form-row">
                <div class="form-group col-md-6">
                    <label for="daire">Daire:</label>
                    <input type="text" class="form-control" id="daire" name="daire">
                </div>
                <div class="form-group col-md-6">
                    <label for="aciklama">Ek Açıklama:</label>
                    <textarea class="form-control" id="aciklama" name="aciklama"></textarea>
                </div>
            </div>
            <br>

            <div class="text-right">
                <input type="submit" class="btn btn-primary" value="Adresi Kaydet">
            </div>
        </form>
    </div>
</div>

<script>
    const getIlce = (event) => {
        console.log(event.currentTarget.value);
    }
</script>
PHP bilmiyorum fakat elinizdeki databaseye bağlı olarak ilçelerin yanına şehir entryleri de girilmişse SQL ile filtrelersin.
 
Sadece PHP ile mümkün değil hocam Ajax kullanman gerekiyor kullanıcı "il" seçtiğinde change durumunda çalışan bir fonksiyon ile "ilce" selectine Ajax ile o ilin ilçelerini getirecek bir sorgu çalıştırıp yine o fonksiyon aracılığıyla select içerisine option olarak ekleyebilirsin.

Anlatmak isterdim ama video izlemen daha yararına olur.
 
Bu içeriği görüntülemek için üçüncü taraf çerezlerini yerleştirmek için izninize ihtiyacımız olacak.
Daha detaylı bilgi için, çerezler sayfamıza bakınız.

İnternetten bulduğum bir kaynağı bir kaç düzenleme yaptıktan sonra paylaştım. Kendi projene göre düzenleyip çalıştırabilirsin. Kolay gelsin.

Veritabanı Dosyası : ilveilceler.sql

index.php:
PHP:
<html>
<head>
    <title>İl ilçe PDO</title>
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css">
</head>

<body>


<div class="container">
    <div class="row">
        <div class="col-md-12"><h1>PHP PDO ve MySQL ile il ilçe seçme</h1><hr></div>


        <div class="col-md-3">
            <label for="il">İl</label>
            <select name="il" id="il" class="form-control" >
                <option value="">Seçin...</option>
            </select>
        </div>

        <div class="col-md-3">
            <label for="ilce">İlçe</label>
            <select name="ilce" id="ilce" class="form-control" disabled="disabled">
                <option value="">Seçin...</option>
            </select>
        </div>
    </div>
</div>

<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js"></script>

<script>
    $(document).ready(function(){
        ajaxFunc("il", "0", "#il");


        $("#il").on("change", function(){

            $("#ilce").attr("disabled", false).html("<option value=''>Seçin..</option>");
            console.log($(this).val());
            ajaxFunc("ilce", $(this).val(), "#ilce");

        });

        function ajaxFunc(action, name, id ){
            $.ajax({
                url: "ajax.php",
                type: "POST",
                data: {action:action, name:name},
                success: function(sonuc){
                    $.each($.parseJSON(sonuc), function(index, value){
                        var row="";
                        row +='<option value="'+value+'">'+value+'</option>';
                        $(id).append(row);
                    });
                }});
        }
    });
</script>
</body>
</html>

ajax.php:
PHP:
<?php
include ("dbConn.php");

$action=$_POST["action"];

switch ($action)
{

    case "il":
        $db=new dbConn();
        $bolge=$_POST["name"];
        return $db->getIlList($bolge);
        break;

    case "ilce":
        $db=new dbConn();
        $il=$_POST["name"];
        return $db->getIlceList($il);
        break;
}

dbConn.php:
PHP:
<?php
class dbConn
{
    protected static $db;


    //veritabanına bağlanan fonksiyon
    public function __construct()
    {
        try{
            self::$db = new PDO("mysql:host=localhost;dbname=ililce;charset=utf8", "root", "");
        }
        catch (PDOException $exception)
        {
            print $exception->getMessage();
        }
    }


    //İlleri getiren fonksiyon
    public function getIlList($bolge){
        $data=array();
        $query = self::$db->prepare("SELECT DISTINCT il FROM ilveilceler WHERE bolge=:bolge");
        $query->execute(array(":bolge"=>$bolge));
        if($query->rowCount())
        {
            foreach ($query as $row)
            {
                $data[]=$row["il"];
            }
        }
        echo json_encode($data);
    }


    //İlçeleri getiren fonksiyon
    public function getIlceList($il){
        $data=array();
        $query = self::$db->prepare("SELECT DISTINCT ilce FROM ilveilceler WHERE il=:il");
        $query->execute(array(":il"=>$il));
        if($query->rowCount())
        {
            foreach ($query as $row)
            {
                $data[]=$row["ilce"];
            }
        }
        echo json_encode($data);
    }
}
 

Yeni konular

Geri
Yukarı