根据数据库表中的第一个下拉列表而不使用javascript

时间:2018-07-11 08:57:56

标签: php mysql html5

我正在尝试为电子商务网站的管理员创建一个表单,该管理员应该能够创建类别并添加新产品。 我的数据库中有两个表,我想从中填充下拉列表。我希望在选择第一个下拉值时填充第二个下拉菜单,但是我必须在没有提交按钮的情况下进行操作。

这是带有两个下拉菜单的表单代码:-

    <form method="post" action="add_category.php">
                <h4>Choose the root level:</h4>
                <select name="rootLevel">
                     <?php
                     $conn = mysqli_connect("localhost","root","","store")
                     or die("Error in Connection on add_category");

                     $query = "SELECT * FROM root_category";
                     $result = mysqli_query($conn,$query) or die("Query failed add_category");
                     $id=1;
                     //echo $id;
                     //echo "Hello";
                        while($row = mysqli_fetch_assoc($result)){
                            global $id;
                            //echo "<h1>$id</h1>";
                            $id = $row['id'];
                            echo "<option name='rootLevel' value=$id>".$row['Name']."</option>";
                            //echo "<option>$id</option>";
                            }

                        ?>
                </select>
                <br><br>
                <h4>Choose the Level 1 Category:</h4>

                <select name="level1">
                    <?php
                    global $id;
                    //echo "<option>".$_POST['rootLevel']."</option>";
                    $query_level1 = "Select * from level1_category Where P_id = $id";
                    $result1 = mysqli_query($conn,$query_level1) or die("Query failed level 1");
                    while($row = mysqli_fetch_assoc($result1)){
                        $id1 = $row['P_id'];
                        echo "<option name='level1' value=$id1>".$row['Name']."</option>";
                    }
                    ?>
                </select>

我已经成功填充了第一个下拉菜单,现在我想在没有提交按钮的情况下在'resultValue'中获取$ id。

2 个答案:

答案 0 :(得分:3)

您只能使用PHP来做到这一点。您必须使用jquery或Ajax来做到这一点。 请检查此示例页面。这可能对您有帮助

https://www.tutorialrepublic.com/faq/populate-state-dropdown-based-on-selection-in-country-dropdown-using-jquery.php

OR

https://www.codexworld.com/dynamic-dependent-select-box-using-jquery-ajax-php/

答案 1 :(得分:0)

<head>
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
  <script>
  $(document).ready(function(){
      $("select.country").change(function(){
          var selectedCountry = $(".country option:selected").val();
          $.ajax({
              type: "POST",
              url: "states.php",
              data: { country : selectedCountry } 
          }).done(function(data){
              $("#states").html(data);
          });
      });
  });
  </script>
</head>
<body>
   <div class="form-group">
                        <label for="country" class="input__label">Country</label>
                        <select id="country" onchange="states(this.value);" name="country" class="country form-control login_text_field_bg input-style">
                            <option selected>Choose...</option>
                            <?php
                              $sql= $cnn->prepare("SELECT key_iso_code FROM country");
                              $sql->execute();
                              while($i = $sql-> fetch($cnn::FETCH_ASSOC)){
                                      extract($i);
                                      ?>
                                      <option><?php echo $key_iso_code ?></option>
                                      <?php     
                              }
                            ?>
                            
                        </select>
                    </div>
<div class="form-group col-md-4">
                        <label for="inputState" class="input__label">State/Province</label>
                        <select id="states" name="state" class="form-control input-style">
                            <option selected>Choose...</option>
                        </select>
                    </div>
</body>
<?php
    include("PDOConnection.php");

    if(isset($_POST["country"])){
        // Capture selected country
        $country = $_POST["country"];
         
        // Display city dropdown based on country name
        if($country !== 'Shoose...'){
            
            $sql= $cnn->prepare("SELECT state.key_name FROM country INNER JOIN state ON country.key_id = state.key_country_id WHERE country.key_iso_code like '$country'");                       
            $sql->execute();
            while($i = $sql-> fetch($cnn::FETCH_ASSOC)){
                    extract($i);
                    echo "<option>". $key_name . "</option>";
                        
            }
        } 
    }
?>