gpt4 book ai didi

javascript - 如何将数据库的多个表值提取到动态选择框中

转载 作者:行者123 更新时间:2023-12-03 07:38:09 24 4
gpt4 key购买 nike

这里我试图从有 10 个表的数据库中将数据提取到组合框中。我有两个组合框,在第一个框中我从数据库中调用了选项,这将是第一个表和像 a、b、c、d 这样的选项。现在,当我在第一个框中选择“a”时,它应该通过 php 调用相应的值,并且该值将来自另一个表,并且这两个表中没有任何公共(public)键。与选择“b”时相同,它将调用第三个表中的另一个值。

所以在这里我尝试使用 if else 条件,但我能够得到输出。有人请改进jquery错误,我应该以哪种方式匹配它的条件。

这是我的代码 html 页面

    <html>
<body>
<select id="a1_title">
</select>
<select id="a2_title">
</select>
<script src="jquery-2.0.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.getJSON("drpdwn.php", success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
items +="<option value='"+ data[i].toLowerCase() +"'>" + data[i] +"</option>";
}
$("#a1_title").append(items);
$("#a1_title").change();
});
$("#a1_title").change(function(){
if( data.length == 1) // here i have tried to match the condition from ID but it doesn't work
{
alert("b");
$.getJSON("lulc_db.php",success = function(data){
alert("okay");
var items="";
for(var i = 0; i< data.length; i++){
items+="<option value='"+data[i].toLowerCase()+"'>"+data[i]+"</option>";
}
else if( data.length == 2)
{
alert("b");
$.getJSON("soil_db.php",success = function(data){
alert("okay");
var items="";
for(var i = 0; i< data.length; i++){
items+="<option value='"+data[i].toLowerCase()+"'>"+data[i]+"</option>";
}
$("#a2_title").append(items);

});
}
});

});
</script>
</body></html>

这是 drpdown.php 页面。此页面值将成功进入第一个选择框。

<?php
$host = "localhost";
$user = "postgres";
$pass = "admin";
$db = "Querybuilderdb";

$con = pg_connect("host=$host dbname=$db user=$user password=$pass")
or die ("Could not connect to server\n");
$query = "SELECT id, name FROM tab";
$result = pg_query($con, $query);
if(pg_num_rows($result)){

$data=array();
while($row=pg_fetch_array($result))
{ array_push($data, $row["name"]);

}

echo json_encode($data);
}
?>

这里是 lulc_db.php 。这个页面值应该出现在第二个选择框中。与此相同,我有 8 个其他 php 页面,我已将其显示在第二个组合框中。

    <?php 
require "config.php";
$query = "SELECT distinct level_1 FROM pachgaon_LULC";
$result = pg_query($con, $query);
if(pg_num_rows($result)){
$data=array();
while($row=pg_fetch_array($result))
{ array_push($data, $row["level_1"]);
}
echo json_encode($data);
}
?>

提前致谢:)

最佳答案

考虑一些更改:

  1. 运行嵌套的 for 循环,因为一个子级 json(键/值对)变成了多维 JavaScript 数组
  2. 捕获第一个框的选定值:#a1_title
  3. 有条件地关联动态输出的框
  4. 添加新项目之前先删除现有项目

虽然如果没有数据和表关系,我无法重新创建您的示例。下面是一个使用编程语言尝试维护初始代码的通用示例。根据您的实际脚本进行调整。请参阅 jsfiddle 上的演示(但这使用带有点击事件的嵌入式 json 字符串):

PHP 脚本 (重现 json 数据)

// DynamicOptions1.php
<?php
$languages = [];

$languages[][1] = "general purpose";
$languages[][2] = "special purpose";

echo json_encode($languages);
?>

// DynamicOptions2.php
<?php
$general = [];

$general[][1] = "Java";
$general[][2] = "PHP";
$general[][3] = "Perl";

echo json_encode($general);
?>

// DynamicOptions3.php
<?php
$special = [];

$special[][1] = "SQL";
$special[][2] = "XSLT";

echo json_encode($special);
?>

HTML/JQuery

<html>
<body>
<select id="a1_title">
</select>
<select id="a2_title">
</select>

<script src="jquery-2.0.3.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$.getJSON("DynamicOptions1.php", success = function(data){
var items="";

for(var i = 0; i< data.length; i++){
for (var item in data[i]) {
// RETAIN JSON KEY AS OPTION VALUE, JSON VALUE AS OPTION TEXT
items +="<option value='"+item+"'>" + data[i][item].toLowerCase() +"</option>";
}
}
$("#a1_title").append(items);
$("#a1_title").change();
});

$("#a1_title").change(function(){
// OBTAIN SELECTED VALUE
var selectedValue = $(this).find(":selected").val();

if( selectedValue == "1") {
$.getJSON("DynamicOptions2.php",success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
for (var item in data[i]) {
items+="<option value='"+data[i][item]+"'>" + data[i][item].toLowerCase() +"</option>";
}
}
// REMOVE PREVIOUS ITEMS
var myNode = document.getElementById("a2_title");
while (myNode.firstChild) {
myNode.removeChild(myNode.firstChild);
}
// ADD NEW ITEMS
$("#a2_title").append(items);
});
}
else if( selectedValue == "2") {
$.getJSON("DynamicOptions3.php",success = function(data){
var items="";
for(var i = 0; i< data.length; i++){
for (var item in data[i]) {
items+="<option value='"+data[i][item].toLowerCase()+"'>"+data[i][item].toLowerCase()+"</option>";
}
}
// REMOVE PREVIOUS ITEMS
var myNode = document.getElementById("a2_title");
while (myNode.firstChild) {
myNode.removeChild(myNode.firstChild);
}
// ADD NEW ITEMS
$("#a2_title").append(items);
});
}
});

});
</script>

</body>
</html>

关于javascript - 如何将数据库的多个表值提取到动态选择框中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35526738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com