获取另一个下拉列表更改的下拉数据

时间:2018-05-03 05:47:33

标签: php html mysql

我有一个下拉菜单,其列名与数据库表中的列名相同。我在下拉菜单的选项标签中插入了每个列名。这些列在数据库中有行数。 之后,我有另一个下拉菜单。我想在上一个下拉菜单中显示所选列的所有数据行。 例如。我在第一个下拉列表中有列名为a,b,c,d,每列都有数据库表中的数据。所以,如果我在第一次下拉中选择A;它显示下一个下拉列表中A的所有数据行。这是代码:

<select name="first">

  <option selected="true" disabled="disabled">Select an Option</option> 
  <option value="select_all">Select All</option>
  <option value="a">a</option>   
  <option value="b">b</option>
  <option value="c">c</option>
  <option value="d">c</option>
</select>
<?php
if(isset($_POST['first'])){
$first=$_POST['first'];
}
?>
<select name="firstres" id="firstres"><option style="display:none;" selected; value="">---Select an option---</option><?php  

@mysql_connect('localhost', 'root', '');
@mysql_select_db('db');
$first=$_POST['first'];
$sql = "SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'db' AND TABLE_NAME = 'tbl' AND COLUMN_NAME LIKE '" . $_POST["first"] . "'";
$result = @mysql_query($sql);
while ($row = mysql_fetch_array($result)) {
	
	echo "<option  value=' " . $row['first'] ."'>" . $row['first'] ."</option>";
    }
?>
</select>

问题是;我没有在第二个下拉菜单中获取列行。

2 个答案:

答案 0 :(得分:0)

你需要在这个问题上使用Ajax,这里我的代码也许你可以用在你的项目上。

查看代码

<select id="category">
     <option value="1">Category</option>
     <option value="2">Category 2</option>
     <option value="3">Category 3</option>
</select>
<select id="sub_category">
     <option>Chose Category</option>
</select>

Ajax代码

$(document).ready(function(){
     $('#category').on('change',function(){
     var category_id = $(this).val();
         if(category_id){
             $.ajax({
                 type:'POST',
                 url:'sub_category.php',
                 data: {
                     category_id : category_id
                 },
                 success:function(html){
                     $('#sub_category').html(html);
                 }
             });

        }else{
            $('#sub_category').html('<option>Pilih Sub category Kelas</option>');
        }
    });
});

sub_category.php

<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";

$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} 

$category_id = $_POST['category_id'];
$sql = "SELECT id,sub_category FROM category where category_id = $category_id";
$result = $conn->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "<option value='".$row["id"]."'>".$row["sub_category"]."</option>";
    }
} else {
    echo "<option>Empty Sub Category</option>";
}

$conn->close();
?>

答案 1 :(得分:0)

首先,我建议保留php以获取整个代码。 - &GT;让事情变得更加轻松......

示例:

$output = <<< EOD
<option>Select an Option</option>
etc.
EOD;       
echo $output;

第二,你是否一步一步地完成了代码? $ first和$ _POST [&#39; first&#39;]的输出是什么? ? 他们是对的吗? SQL语句是否正确? 表和列名....

第三,我理解,您希望从第一个下拉列表中选择,而不是数据库的输出应该出现。 这不会以这种方式工作。 HTML是无状态的。这意味着已发送给客户端的所有内容都不再可用于服务器。

因此,您需要使用一些代码来重新发送此信息:例如JSON(AJAX)或通过HTML(不太好)。看这里: https://www.w3schools.com/js/js_ajax_intro.asp