我正在尝试从前一个选择字段(在同一页面上)填充选择下拉列表
第一个选择,显示来自MYSQL数据库的表名。 第二个选择应显示所选表格中的列名称
这是我的代码
page.php文件
<label class="">Select a Database Table</label>
<select class="full-width" data-placeholder="Select Table" data-init-plugin="select2" onchange="showColumn(this.value);">
<optgroup label="Table">
<?php
$table_count = mysql_query("SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'cl49-vclients'");
$tables = array();
while($row = mysql_fetch_array($table_count))
{ ?>
<option value="<?php echo $row["TABLE_NAME"]; ?>"><?php echo $row["TABLE_NAME"]; ?></option>
<?php
}
?>
<!-- </optgroup>-->
</select>
<script>
function showColumn(tablename)
{
if(tablename !='')
{
$.ajax({
type:"POST",
url :"ajax.php";
data:{tablename:tablename},
success:function(data){
alert(data); //This will alert column name comma separated
}
});
}
}
</script>
ajax.php
<?php
//make database connection
$column_count = mysql_query("SHOW COLUMNS FROM '".$_POST['tablename']."'");
$columns = array();
while($columnRow = mysql_fetch_array($column_count))
{
$columns[] = $columnRow['Field'];
}
echo implode(',',$columns); //This will return column name comma separated
?>
<label class="">Table</label>
<select class="full-width" data-placeholder="Select Table" data-init-plugin="select2" onchange="showColumn(this.value);">
<optgroup label="Table">
<?php
$table_count = mysql_query("SELECT TABLE_NAME FROM information_schema.tables WHERE table_schema = 'cl49-vclients'");
$tables = array();
while($row = mysql_fetch_array($table_count))
{
?>
<option value="<?php echo $row["TABLE_NAME"]; ?>"><?php echo $row["TABLE_NAME"]; ?></option>
<?php
}
?>
</optgroup>
</select>
第一个选择似乎显示表名很好,但是当我选择另一个选择字段应该出现但它没有,任何人都可以帮忙吗?
答案 0 :(得分:0)
在第二个查询中,您没有选择任何数据库。你需要
mysqli_select_db($con,"information_schema");
SHOW COLUMNS FROM '".$_POST['tablename']."'
或者,替换您的第二个查询
SELECT COLUMN_NAME FROM information_schema.columns
WHERE table_schema = 'cl49-vclients' AND TABLE_NAME = '".$_POST['tablename']."';
答案 1 :(得分:0)
您的ajax.php应该只返回CSV中的列名或HTML下拉选项,无法理解为什么它还包含表名下拉列表的HTML。 showColumn()
应将返回的数据放在当前页面的HTML中。
您的 page.php JS功能应为:
function showColumn(tablename)
{
if(tablename !='')
{
$.ajax({
type:"POST",
url :"ajax.php";
data:{tablename:tablename},
success:function(data){
$('#selColumns').html(data); // Assign the HTML returned by ajax.php to the second dropdown
}
});
}
}
并且对于列的第二个下拉列表也应该有以下HTML:
<select id="selColumns" data-placeholder="Select Column">
</select>
<强> ajax.php 强>
<?php
//make database connection
$column_count = mysql_query("SHOW COLUMNS FROM '".$_POST['tablename']."'");
while($columnRow = mysql_fetch_array($column_count))
echo "<option value='" . $columnRow['Field'] . "'>" . $columnRow['Field'] . "</option>";
?>