首页 > 解决方案 > 如何在 html5 中从数据库中填充 2 个组合框

问题描述

我需要一些关于我的代码的帮助 电子商店的网络本地系统中的代码

  1. 我在 phpmyadmin 数据库中有一个 stoke 表
  2. -stoke 表(id​​、名称、价格、stoketype
  3. - stoketype必须有这种数据(电话、电脑、配件等....)
  4. 我在 html5 中有2 个组合框和 1 个文本框
  5. 第一个是显示 stoke 表中的所有stoke 类型完美运行
  6. 第二个是显示stoke表中的所有电子设备(名称) ,我在第一个组合框中选择了stoketype
  7. 文本框用于显示我在第二个组合框中选择的电子(名称)的价格,我的目标是得到这样的结果
  8. 电话 - iphone 6s - 300 美元
  9. 电话 - iphone 7 - 400 美元
  10. 电脑 - 惠普笔记本 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); 
        
    }}}

标签: javascriptphphtmlmysql

解决方案


首先,您需要提交您在组合框中选择的值,不能仅通过从第一个组合框中选择一个值来填充第二个组合框和文本框。

这是第一个组合框,我将保持您的代码不变,但我会添加一些我的代码。

    <?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'];"?>

希望这有帮助。


推荐阅读