javascript - 如何在 html5 中从数据库中填充 2 个组合框
问题描述
我需要一些关于我的代码的帮助 电子商店的网络本地系统中的代码
- 我在 phpmyadmin 数据库中有一个 stoke 表
- -stoke 表(id、名称、价格、stoketype)
- - stoketype必须有这种数据(电话、电脑、配件等....)
- 我在 html5 中有2 个组合框和 1 个文本框
- 第一个是显示 stoke 表中的所有stoke 类型(完美运行)
- 第二个是显示stoke表中的所有电子设备(名称) ,我在第一个组合框中选择了stoketype
- 文本框用于显示我在第二个组合框中选择的电子(名称)的价格,我的目标是得到这样的结果
- 电话 - iphone 6s - 300 美元
- 电话 - iphone 7 - 400 美元
- 电脑 - 惠普笔记本 15a - 600 美元
问题是我不知道根据第一个组合框中的选定值填充第二个组合框和文本框,因为我需要连接和组织数据任何帮助:(
第一个组合框
<select class="form-control" name="transt" size="1" id="input3" placeholder="stoke type">
<?php
$q = "select distinct stoketype from stoke";
$r = @mysqli_query($db, $q);
$num = mysqli_num_rows($r);
if($num > 0) {
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$stkn= $row['stoketype'] ;
echo"<option value='".$stkn."' >".$stkn."</option>";
}
mysqli_free_result ($r);
} ?>
</select>
第二个组合框
<select class="form-control" id="select1" name="stokn" size="1" value="stok">
<?php
$q = "select * from stoke where stoketype=??? ";
$r = @mysqli_query($db, $q);
$num = mysqli_num_rows($r);
if($num > 0) {
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$stkname= $row['name'] ;
$price=$row['price'] ;
echo"<option value='".$stkname."'>".$stkname.'"</option>";
}}
?>
</select>
文本框代码
<input type="text" name="stprice" value=<?php ?> class="form-control" id="input9" placeholder="price" >
好吧,它现在可以在没有页面刷新的情况下使用此代码,我必须制作 3 个数组才能将所有数据作为新数据库吃掉
<script>
var arr = [];
var arr2 = [];
var arr3 = [];
</script>
<?php
$q = "select * from stoke ";
$r = @mysqli_query($db, $q);
$num = mysqli_num_rows($r);
if($num > 0) {
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
?>
<script> arr.push("<?php echo$row['name'];?>");</script>
<script> arr2.push("<?php echo$row['stoketype'];?>");</script>
<script> arr3.push("<?php echo$row['price'];?>");</script>
<?php
然后创建一个函数来读取数组数据并在新选项(节点)中处理我想要的数据当然我每次都需要清除该选项,因为它只会重复
function f3(){
var x1 = document.getElementById("input3").value;
var i;
var select = document.getElementById("select1");
var length = select.options.length;
for (i = length-1; i >= 0; i--) {
select.options[i] = null;
}
for(i=0; i < arr.length; i++)
{
if(x1==arr2[i]){
var sel = document.getElementById('select1');
var opt = document.createElement('option');
// create text node to add to option element (opt)
opt.appendChild( document.createTextNode(arr[i]) );
// set value property of opt
opt.value = arr[i];
// add opt to end of select box (sel)
sel.appendChild(opt);
}}}
解决方案
首先,您需要提交您在组合框中选择的值,不能仅通过从第一个组合框中选择一个值来填充第二个组合框和文本框。
这是第一个组合框,我将保持您的代码不变,但我会添加一些我的代码。
<?php
$q = "select distinct stoketype from stoke";
$r = @mysqli_query($db, $q);
$num = mysqli_num_rows($r);
if($num > 0) {
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$stkn= $row['stoketype'] ;
`echo"<option value='".$stkn."' >".$stkn."</option>";
}
mysqli_free_result ($r);
} ?>
</select>
<input type="submit" value="Select value from first combobox" name="submit">
<?php
//second comboxbox depending on value of first comboxbox
if(isset($_POST["submit"]) && isset($_POST["transt"])){
$transt=$_POST["transt"]
$q = "select * from stoke where stoketype='$trasnt' ";
$r = @mysqli_query($db, $q);
$num = mysqli_num_rows($r);
echo "<select>"
if($num > 0) {
while($row = mysqli_fetch_array($r, MYSQLI_ASSOC)) {
$stkname= $row['name'] ;
$price=$row['price'] ;
echo"<option value='".$stkname."'>".$stkname.'"</option>";
}}
echo "</select>";
}
?>
我们在这里所做的是,在我们提交了第一个组合框中的值之后,我们在第二个组合框中显示了值。不要忘记创建一个表单。
<form method="POST" action="<?php echo $_SERVER['PHP_SELF'];"?>
希望这有帮助。
推荐阅读
- php - Google Invisible reCaptcha 未按预期工作
- python - swagger.json 预测模型的示例 json 似乎没有返回预测
- xcode - 为什么我的 RN 61 IOS 无法在 AppCenter 中构建?
- c - 将 unsigned char 转换为表示以 2 为底的数字的字符串
- angular - 如何在 Angular 7 中绑定复选框?
- ios - UIViewController 存在和关闭
- c++ - C++ 中的反斜杠
- d3.js - 扩展 D3 图表以添加缩放功能
- python - 如何在 display_details 中显示句子?
- build - NativeScript Angular,Google Play:此版本不符合 Google Play 64 位要求