【问题标题】:how to fill 2 combobox from data base in html5如何在 html5 中从数据库中填充 2 个组合框
【发布时间】:2020-12-02 20:14:05
【问题描述】:

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

  1. 我在 phpmyadmin 数据库中有一个 stoke 表
  2. -stoke table(id,name,price,stoketype)
  3. -stoketype必须有这种数据(电话、电脑、配件等......)
  4. 我在 html5 中有 2 个组合框 和 1 个 文本框
  5. 第一个是显示stoke中的所有stoke types 表(完美运行)
  6. 第二个是显示所有的electronics(name)从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); 
        
    }}}

【问题讨论】:

    标签: javascript php html mysql


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

    • 非常感谢您的帮助 无论如何我知道这个解决方案 问题是我不想刷新页面 我想用另一种方式不请求刷新页面 我还没有尝试但是如果我用 stoke 名称和值在 javascript 中填充 2 个数组,两个数组都有接缝 id,然后我将尝试根据 id 和我想要的值从数组中添加数据你的想法??
    • 我以前从未尝试过这样的事情。但我认为您应该对 php 文件执行 XMLHttpRequest 并获得响应。
    • 我做到了,它工作得很好读取每个数组值并将其与第一个组合框进行比较,如果值匹配,那么我只需将一个新选项(节点)添加到第二个组合框 LOL
    猜你喜欢
    • 1970-01-01
    • 2012-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多