2016-10-10 267 views
0

嗨,这是我的问题,PHP填充下拉列表,onchange根据值填充不同的下拉列表

我有一个数据库包含类别和子类别。 我有两个下拉框(选择)。我希望他们都通过使用PHP/MYSQL填充。

我的类别已经产生:

<select name="prod_cat"> 
    <?php 
     include("php/dbconnect.php"); 

     $sql = "SELECT * FROM categories"; 
     $result = mysqli_query($conn, $sql); 

     if (mysqli_num_rows($result) > 0){ 
      while ($row = mysqli_fetch_array($result)) 
      { 
      echo '<option value="'. $row["cat_name"] .'">'. $row["cat_name"] .'</option>'; 
      } 
     } 
     else{echo "No categories were found!";} 
     mysqli_close($conn); 
    ?> 
</select> 

browser preview of dropdown boxes

我希望在类别已经改变了子类加载。 我的SQL会是这个样子:

SELECT subcat_name FROM subcategories WHERE cat_name = '$prod_cat' 

我需要的价值从下拉列表类并将其存储为一个变量。 在过去,我已经做了类似的东西在javascript:

var subcat=document.forms["form"]['subcat'].value; 

,然后通过调用一个onchange()改变另一个下拉列表的值;功能如:

document.getElementById('subcat').innerHTML='<option value=""></option>'; 

我希望有人能指出我在正确的方向!我应该研究AJAX,JavaScript还是可以使用PHP来完成?

谢谢。

+0

你应该使用jQuery与AJAX结合。你想不能在PHP中完成,因为PHP是服务器端,JavaScript和下拉选择是客户端。然而,你可以使用jQuery为Dropdown做一个“onChange”函数,然后通过AJAX调用PHP脚本来插入东西。希望这可以帮助。 – KikiTheOne

回答

0

在类别中选择框中添加一个id,这样的 -

<select name="prod_cat" id="prod_cat"> 
    <?php 
     include("php/dbconnect.php"); 

     $sql = "SELECT * FROM categories"; 
     $result = mysqli_query($conn, $sql); 

     if (mysqli_num_rows($result) > 0){ 
      while ($row = mysqli_fetch_array($result)) 
      { 
      echo '<option value="'. $row["cat_name"] .'">'. $row["cat_name"] .'</option>'; 
      } 
     } 
     else{echo "No categories were found!";} 
     mysqli_close($conn); 
    ?> 
</select> 

子类别 -

<select id='sub_cat' name='sub_cat'></select> 

写剧本是这样的 -

<script> 
$("#prod_cat").change(function(){ 
    //get category value 
    var cat_val = $("#prod_cat").val(); 
    // put your ajax url here to fetch subcategory 
    var url    = 'www.example/fetch_subcategory.php'; 
    // call subcategory ajax here 
    $.ajax({ 
        type:"POST", 
        url:url, 
        data:{ 
         cat_val : cat_val 
        }, 

        success:function(data) 
        { 
         $("#sub_cat").html(data); 
        } 
       }); 
}); 
</script> 

附加代码阿贾克斯呼叫页面 - 'www.example/fetch_subcategory.php'

<?php 
$prod_cat = $_POST['cat_val']; 

$sql = "SELECT subcat_name FROM subcategories WHERE cat_name = '$prod_cat'"; 
     $result = mysqli_query($conn, $sql); 
$msg =''; 
     if (mysqli_num_rows($result) > 0){ 
      while ($row = mysqli_fetch_array($result)) 
      { 
      $msg =.'<option value="'. $row["sub_cat_name"] .'">'. $row["sub_cat_name"] .'</option>'; 
      } 
     } 
     else{$msg .="No categories were found!";} 
     echo $msg; 
     mysqli_close($conn); 

     ?> 

做这样的事情,并希望它能为你工作。

+0

谢谢你的帮助。我正在尝试你的方法,还没有得到它的工作,我试图找出原因。我需要链接一个AJAX库吗? –

+0

尝试此代码时出现了什么错误? –