2013-08-15 3 views
0

두 개의 선택 필드 (하나는 지역을 나타내는 필드, 다른 하나는 도시/마을/등)가있는 양식이 있습니다. 나는 다음과 같은 형태로 모든 항목이 데이터베이스가 : 나는 그래서 당신이 다른 옵션을 선택하지만 JS로 만들어졌다 수 있습니다 여기에 스크립트를 발견했습니다다른 선택 옵션에 따라 DB의 피드 선택 옵션

id (int 11, ai) 
region (varchar 50) 
city(varchar 50) 

을 난에 적응하는 방법을 모르고에게이 없다 내 필요. 13.000 이상의 항목이 있고 실제로 코드에 수동으로 입력하는 것이 좋지 않기 때문에 데이터베이스가 필요합니다. 다음은 내가 읽은 주제에 대한 링크입니다. 해결책은 주석 중 하나입니다.

how to change a selections options based on another select option selected?.

다운 받기 전에 내 게시물을 편집해야하는지 알려주십시오. 미리 감사드립니다!

+0

이것은 상당히 자주 묻는 질문이다. Pls는 먼저 검색하기가 더 욱 까다 롭습니다 – mplungjan

+0

테이블과 도시의 영역을 다른 테이블에 저장할 수 있습니다. 도시로 select_city를 채우고 지역으로 select_region을 채 웁니다. select_city에서 도시를 변경하면 ajax를 사용하여 php 스크립트로 도시 ID를 보내고 php 스크립트에서는 city_id를 가져 와서 지역 테이블을 쿼리하여 관련 지역을 찾고 regions_select를 채 웁니다. – FirmView

+0

@mplungjan 잠시 동안 수색했지만 couldn 내가 생각하기에 충분히 유사하고 이해할 수있는 상황을 찾지 못한다. 나는 JS 관련 일들에 관해서는 완전히 멍청하다. – SporeDev

답변

1

단지 하나의 선택 변경이 서버에서 다른 선택을 제공하기 위해 데이터를 가져올 때이를 위해 아약스를 사용합니다.

<select class="select_one"> 
<?php /* render first select ?> 
</select> 
<select class="select_two"></select> 
<script> 
$(function() { 

    $('.select_one').change(function() { 
     var select = $('.select_two').empty(); 
     $.get('script.php', {region: $(this).val()}, function(result) { 
      $.each(result, function(i, item) { 
       $('<option value="' + item.value + '">' + item.name + '</option>'). 
        appendTo(select); 
      }); 
     }); 
    }); 
}); 
</script> 

하고 script.php은 DB에서 JSON을 반환해야합니다 :

if (isset($_GET['region'])) { 
    $sql = new mysqli('localhost','username','password','database'); 
    $region = mysqli_real_escape_string($sql,$_GET['region']); 
    $query = "SELECT * FROM cities WHERE region = $region"; 
    $ret = $sql->query($query); 
    $result = array(); 
    while ($row = $ret->fetch_assoc()) { 
     $result[] = array(
      'value' => $row['id'], 
      'name' => $row['city'] 
     ); 
    } 
    echo json_encode($result); 
} 
+0

확인. 이걸 사용하기 위해서는 선택 이름에 따라 select_one과 select_two를 변경해야한다고 생각합니다. 또한이 코드는 스크립트 태그 안의 문서 머리 부분에 있어야합니다. 맞습니까? 내가 맞으면 내가 시험해볼거야! – SporeDev

+0

JS에서 전체 초심자이기 때문에 구현할 수 없습니다. 추가 세부 사항을 제공 할 수 있습니까? 당신의 설명이 충분히 명확하지 않은 것은 아닙니다, 그것은 나뿐입니다. 감사! – SporeDev

+0

@SporeDev가 코드를 업데이트했습니다. – jcubic

관련 문제