2016-09-18 9 views
0

私はこのようなSQLテーブルを持っています。同じテーブルの2つの異なるCOLUMNSからDISTINCT値を選択

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

最初の選択ドロップダウンリストから値を選択して、DISTINCTの名前の値とその有効な値を表示します。

第一選択:

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

今私が最初に基づいてダウンボックス第2の選択ドロップの値を表示したいです。私はこのために使用しています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> 

第二選択ボックス

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

私が知りたいすべてが、私が最初に基づいて第二選択ボックス内の値を取得するために使用する必要があるべきphpのクエリです。私は解決策を見つけるために多くを試みたが、私はデータベースからその値を得る解決策を見つけられなかった...事前にありがとう...

+1

多分http://stackoverflow.com/questions/9901061/cascading-selectの重複や他の多くのPHPのいずれかが選択質問をカスケード接続する – mplungjan

+0

あなたが最初のDropDownList selelectionに取得したいん私は何のために意味二番目? –

+0

@ AT-2016最初のドロップダウンリストからAshを選択した場合は、abcとxyyyが必要です。あなたがAshu、次にxyzを選択した場合、Yash xyzzの場合... – Ashish

答えて

0

あなたは2番目のクエリと、物事は少し違う。つまり、1つのクエリを使用して目標を達成することができます。以下のコードは、どのようにその方法を示しています。 注:このソリューションでは、JQueryを使用して簡単に処理できます。

これをテストするには、新しいファイルにコードASをコピーして貼り付けて、期待通りに動作するかどうかを確認してください。

チーズ& 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

私はクラスベースで作業しています。リストをドロップダウンすると、2番目のドロップダウンオプションのクラスと値のname列の値を表示するmysqlクエリを見つけることができません。 2番目のドロップダウンオプション値フィールドのcname列から。 – Ashish

+0

@Ashish動作するはずの更新されたコードを確認してください.... – Poiz

関連する問題