2016-09-18 2 views
0

SQL 테이블은 다음과 같습니다. 동일한 테이블의 두 개의 서로 다른 열에서 DISTINCT 값을 선택하십시오.

id  name  cname 
1  Ash  abc  
2  Ash  abc 
3  Ashu  abc 
4  Ashu  xyz 
5  Yash  xyzz 
6  Ash  xyyy 

은 내가 먼저 DISTINCT 이름 값과 작업 벌금을 표시 드롭 다운 목록 선택에서 사용자가 값을 선택합니다.

1 선택 :

<select id="select1" required="required" class="custom-select standard"> 
<option value="0" selected="selected">Choose Category</option> 
<?php 
    $resultd = mysqli_query($mysqli,"SELECT DISTINCT name FROM advertise"); 
    if ($resultd) 
     { 
       while($tier = mysqli_fetch_array($resultd)) 
       { 
        echo '<option value="' .$tier['name'] . '">' . $tier['name'] . '</option>'; 
       } 
     } 
?> 
</select> 

지금은 내가 처음에 따라 다운 상자 두 번째 선택 드롭의 값을 보여주고 싶어요. 내가 이것을 사용하고 JQuery와는 다음과 같습니다

<script> 
    $(function(){ 
    var conditionalSelect = $("#select2"), 
    // Save possible options 
    options = conditionalSelect.children(".conditional").clone(); 

    $("#select1").change(function(){ 
    var value = $(this).val();     
    conditionalSelect.children(".conditional").remove(); 
    options.clone().filter("."+value).appendTo(conditionalSelect); 
}).trigger("change"); 
}); 
</script> 

2 선택 상자

<select id="select2" required="required" class="custom-select standard"> 
<option value="0" selected="selected">Choose Location</option> 
<option class="conditional name" value="">cname</option> 
</select> 

내가 알고 싶은 모든 처음을 기준으로 2 차 선택 상자의 값을 얻기 위해 사용해야한다 무엇 PHP 쿼리입니다. 솔루션을 찾기 위해 많은 노력했지만 데이터베이스에서 값을 가져 오는 솔루션을 찾지 못했습니다 ... 미리 감사드립니다 ...

+1

가능성 또는 다른 많은 PHP 계단식의 질문을 선택 http://stackoverflow.com/questions/9901061/cascading-select – mplungjan

+0

당신은 내가 대한 의미 첫 번째 드롭 다운리스트의 selelection에 얻을 원하는 작업의 중복 두번째? –

+0

@ AT-2016 사용자가 첫 번째 드롭 다운 목록에서 애쉬를 선택하면 abc 및 xyyy가 필요합니다. 그/그녀가 아슈 다음 xyz 및 야쉬 xyzz의 경우에 선택하면 ... – Ashish

답변

0

두 번째 쿼리와 모든 복잡한 작업이 필요하지 않을 수도 있습니다. 사물을 조금 다르게. 즉, 단일 쿼리를 사용하여 목표를 달성 할 수 있습니다. 아래 코드는 방법을 보여줍니다. 참고 :이 솔루션은 JQuery를 사용하여 작업을 단순화합니다.

테스트하려면;코드그대로을 복사하여 원하는대로 작동하는지 확인하십시오.

cheers & GOOD-LUCK !!!

<?php 

    // USE YOUR CONNECTION DATA... PDO WOULD BE HIGHLY RECOMMENDED. 
    // INTENTIONALLY USING mysqli (NOT RECOMMENDED) TO MATCH YOUR ORIGINAL POST. 
    $conn  = mysqli_connect("localhost", "root", 'root', "test"); 
    if (mysqli_connect_errno()){ 
     die("Failed to connect to MySQL: " . mysqli_connect_error()); 
    } 

    $resourceID = mysqli_query($conn, "SELECT * FROM advertise"); 
    $all  = mysqli_fetch_all($resourceID, MYSQLI_ASSOC); 
    $uniques = []; 
    $options1 = ""; 

    if(!empty($all)){ 
     foreach($all as $intKey=>$advertiseData) { 
      $key = $advertiseData['name']; 
      $cName = getCNameForName($all, $key); 
      if (!array_key_exists($key, $uniques)) { 
       $uniques[$key] = $advertiseData; 
       $options1 .= "<option value='{$key}' data-cname='{$cName}'>"; 
       $options1 .= $key . "</option>"; 
      } 
     } 
    } 

    function getCNameForName($all, $name){ 
     $result = []; 
     foreach($all as $iKey=>$data){ 
      if($data["name"] == $name){ 
       $result[] = $data['cname']; 
      } 
     } 
     return $result ? implode(", ", array_unique($result)) : ""; 
    } 
?> 

<html> 
<body> 
<div> 
    <select id="select1" required="required" class="custom-select standard"> 
     <option value="0" selected="selected">Choose Category</option> 
     <?php echo $options1; ?> 
    </select> 
    <select id="select2" required="required" class="custom-select standard"> 
     <option value="0" selected="selected">Choose Location</option> 
    </select> 
</div> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> 
<script type="text/javascript"> 

    (function($) { 
     $(document).ready(function(){ 
      var firstSelect  = $("#select1"); 
      var secondSelect = $("#select2"); 

      firstSelect.on("change", function(){ 
       var main  = $(this); 
       var mainName = main.val(); 
       var mainCName = main.children('option:selected').attr("data-cname"); 
       var arrCName = mainCName.split(", "); 
       var options2 = "<option value='0' selected >Choose Location</option>"; 

       for(var i in arrCName){ 
        options2 += "<option value='" + arrCName[i] + "' "; 
        options2 += "data-name='" + mainName + "'>" + arrCName[i] + "</option>\n"; 
       } 

       secondSelect.html(options2); 
      }); 

     }); 
    })(jQuery); 
</script> 

</body> 
</html> 
+0

나는 클래스 기반에서 일하고있다 내가 드롭 다운 목록에서 두 번째 드롭 다운 옵션 클래스 및 값의 이름 열에서 값을 표시하는 MySQL 쿼리를 찾을 수 없습니다 두 번째 드롭 다운 옵션 값 필드의 cname 열에서 .. – Ashish

+0

@Ashish 작동해야하는 업데이트 된 코드를 확인하십시오. – Poiz

관련 문제