Javascript kısmındaki "districts" dizisini veritabanı kullanarak doldurabilirsiniz, tamamen dinamik kullanılacak biçimde hazırladım şehir, ilçe ve bağlantı belirlemek tamamen size kalmış.
Örnek format:
  var districts = {
    ŞEHİRID: "İLÇE ADI|İLÇEID|İLÇE BAĞLANTI, İLÇE ADI|İLÇEID|İLÇE BAĞLANTI"
  };
Her virgül yeni bir ilçeyi belirtir, her | işareti mevcut ilçe için atanacak verileri belirtir.
Şehirlerin option'ları veritabanından çekilirken value kısmına şehrin ID'si girilmelidir.
JQuery Gerektirir



$(document).ready(function () {
//34 ve 06 ID'li şehirlere 2 'şer ilçe eklendi
  var districts = {
    '34': "Uskudar|341|uskudar.html,Umraniye|342|umraniye.html",
    '06': "Mamak|061|mamak.html,Sincan|062|sincan.html"
  };
  function explodeDistrictItems(string, type) {
    return string.split("|");
    //İlçe verilerini parçaladık;
    //0=İlçe adı
    //1=İlçe ID
    //2=İlçe bağlantı
  }

//Şehir seçilmesi/değiştirilmesi durumunda
  $("#sehir").change(function () {
    $("#link").empty(); //Linkleri sıfırladık
    $("#district").empty(); //İlçeleri sıfırladık
    let district = districts[$(this).val()].split(","); //İlçeleri ',' işaretine göre topladık, İstanbul seçilmesi durumunda artık district[0]=üsküdar olacaktır
    $("#district").append( '<option selected hidden>Lütfen ilçe seçiniz...</option>'); //İlçe listemizi sıfırladık
    $.each(district, function (i, val) { //Verilerimizi döngüye aldık ve ilçeleri yazdırdık
      $("#district").append(
        '<option value="' +
          explodeDistrictItems(val)[1] +
          '" data-link="'+explodeDistrictItems(val)[2]+'">' +
          explodeDistrictItems(val)[0] +
          "</option>"
      );      
    });
  });
  
//İlçe seçilmesi/değiştirilmesi durumunda
    $("#district").change(function () {
    $("#link").empty(); //Linkleri sıfırladık
    $("#link").append('<a href="/'+$('option:selected', this).attr('data-link')+'">'+$('option:selected', this).text()+'</a>'); //Linkimizi verdik
  });
});