我有一个下拉菜单,其列名与数据库表中的列名相同。我在下拉菜单的选项标签中插入了每个列名。这些列在数据库中有行数。 之后,我有另一个下拉菜单。我想在上一个下拉菜单中显示所选列的所有数据行。 例如。我在第一个下拉列表中有列名为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>
问题是;我没有在第二个下拉菜单中获取列行。
答案 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