2016-04-01 4 views
3

надеюсь, что вы прекрасно и хорошо,выпадающий список на основе другого выпадающего списка

у меня есть выпадающий список, который содержит список категорий следующим образом:

<div class='form-group'> 
    <br/> 
     <label class='control-label col-md-2 'for='id_date'>Category</label> 
      <div class='col-md-2' class='form-group' class='col-md-11'> 
      <select class="form-control " id="sel1" ng-model="category" ng-init="" > 
         <?php 
         mysql_connect('localhost', 'root', ''); 

         mysql_select_db('my'); 

         $sql = "SELECT category FROM categories"; 

         $result = mysql_query($sql); 
         while ($row = mysql_fetch_array($result)) { 
          echo "<option value='" . $row['category'] . "'>" . $row['category'] . "</option>"; 
         } ?> 
         </select> 
         </div> 
        </div> 

ниже этого выберите, у меня есть другой выбор, который выбрать элемент из категории следующим образом:

<div class='form-group'> 
    <br/> 
     label class='control-label col-md-2 ' for='id_date'>element</label> 
      <div class='col-md-2' class='form-group' class='col-md-11'> 
      <select class="form-control" id="sel12" ng-model="elemnt" ng-init="" > 
         <?php 
         mysql_connect('localhost', 'root', ''); 

         mysql_select_db('my'); 

         $sql = "SELECT element FROM elements where category = "; 

         $result = mysql_query($sql); 
         while ($row = mysql_fetch_array($result)) { 
          echo "<option value='" . $row['element'] . "'>" . $row['element'] . "</option>"; 
         } ?> 
         </select> 
         </div> 
        </div> 

, как я могу сделать содержание второго раскрывающегося списка, чтобы быть на основе первого раскрывающегося списка?! например, как я могу поместить ввод первого списка drop во второй оператор SQL?!

Отношения.

+0

Что я понимаю, вам нужно выпадающее окно с зависимым от вас. Для этого вам нужно сделать ajax-вызов об изменении первого dropdwon, а затем заполнить второе раскрывающееся меню с результатом ajax-вызова –

+0

, насколько мы можем видеть, вы используете angularJS? лучше искать примеры привязки данных вместо обычных скриптов php/ajax, например этот: http://stackoverflow.com/questions/26518220/angularjs-dynamic-ng-option-to-link-two-drop-downs – mitkosoft

ответ

1

Вы не можете сделать это только с помощью php.

Вы должны использовать javascript/Jquery и ajax.

Сделайте php-скрипт, который загружает данные из запроса. После изменения вашего первого выбора используйте функцию ajax, которая вызывает ваш php-скрипт с правильным значением и обновляет второй выбор.

<select class="form-control " id="sel1" ng-model="category" ng-init="" > 
         <?php 
        mysql_connect('localhost', 'root', ''); 

        mysql_select_db('my'); 

        $sql = "SELECT category FROM categories"; 

        $result = mysql_query($sql); 
        while ($row = mysql_fetch_array($result)) { 
         echo "<option value='" . $row['category'] . "'>" . $row['category'] . "</option>"; 
        } ?> 
        </select> 

Jquery

$("#sel1").change(function(){ 
$.ajax({ 
    method: "POST", 
    url: "yourscript.php", 
    data: {myval : $(this).val()}; 
}) 
    .done(function(msg) { 
    //Here append your result in your second select 
    }); 

}); 

PHP

<?php 
if(isset($_POST['myval'])) 
{ 
    //SQL query where id=myval 
    echo $result;//result of query 
} 
+0

Спасибо , любой код для этого?! – MSMC

+0

Подождите, я отправлю пример – Alexis

+0

@Alexis никогда не говорит «никогда», это можно сделать с помощью чистой логики PHP. – mitkosoft

0

Использование чистого PHP с промежуточным представить:

<?php 
    if(isset($_POST['submitForm']) && $_POST['submitForm'] == 1){ 
     //form is submitted by button, proceed with DB stuffs 
     echo 'Great, you have submitted the form, will check VALUES and do INSERT.'; 
    } 
?> 
<body> 
    <form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" name="aForm"> 
     <input type="hidden" name="submitForm" id="submitForm"> 
     <select name="category" onchange="this.form.submit();"> 
      <option value="">Choose...</option> 
      <option value="1" <?=($_POST['category']==1 && !$_POST['submitForm'])?'selected':'';?>>Cat 1</option> 
      <option value="2" <?=($_POST['category']==2 && !$_POST['submitForm'])?'selected':'';?>>Cat 2</option> 
      <option value="3" <?=($_POST['category']==3 && !$_POST['submitForm'])?'selected':'';?>>Cat 3</option> 
     </select> 
     <select name="element">     
      <?php 
      if($_POST['category'] && !$_POST['submitForm']){ 
       // SELECT from DB based on passed category ID 
       echo '<option value="">Now choose element...</option>'; 
       echo '<option value="1">Elem 1</option>'; 
       echo '<option value="2">Elem 2</option>'; 
       echo '<option value="3">Elem 3</option>'; 
      }else{ 
       echo '<option value="">Choose category first...</option>'; 
      } 
      ?> 
     </select> 
     <input type="button" name="btnSubmit" value="Submit" onclick="document.getElementById('submitForm').value = 1; this.form.submit();"> 
    </form> 
</body> 

Однако это не лучший или самый эффективный подход, сценарий только демонстрирует, как можно сделать без JS, как запрошено.