繁体   English   中英

在PHP中使用标签选择操作

[英]Operations with tag select in PHP

怎么样,我尝试执行一个简单的操作(加,减或乘)。 99 + 5 = 104表格

<select> + <input> = result

在输入标签之间没有问题,问题是当我有一个要从BD中选择的数字列表时。

在BD中,以下数据可用。 如您所见,折扣与您的ID不符。

Id discount
1   100
2   99
3   98
4   96
5   95

如果要执行操作,在列出折扣时,标签

<option value = "<? PHP echo ''. $ row ['id'];?>"> <? PHP echo ''. $ row ['discount'];?> </ option>

该操作通过id而不是折扣完成。 一个总和的示例,我们选择99的折扣,然后将5的金额插入正确的结果= 104。

问题在于,在操作时,而不是99时,其ID的值= 2,因此2 + 5 = 7。

我在执行操作时的问题是,我可以使用折扣值而不是ID。

<html>
<head>
<script language='javascript'>
function fadd(){
 n1=document.f1.cveDiscount.value;
 n2=document.f1.amount.value;
res=document.f1.resul.value;
res=parseInt(n1)+parseInt(n2);
document.f1.resul.value=res;

}
</script>
</head>
<body>
  <form name='f1' action="" method=POST>
  <label name=lblnum1>Num 1:</label>
  <select name="cveDiscount" class="form-control ">
    <?PHP

    if ($resultado = $mysqli->query("SELECT id,discount FROM discount  order by id desc", MYSQLI_USE_RESULT)) {

      while ($row = mysqli_fetch_array($resultado)){
        ?>
        <tr>
          <option value="<?PHP echo ''.$row['id'];?>"><?PHP echo ''.$row['discount'];?></option>
        </tr>
        <?PHP
      }
    }
    ?>
    <option value="#" selected>Select discount</option>
  </select>

  <label name=lblnum2>Num 2:</label>
  <input type=text name='amount'/>

  <input type=button value="   =   " onclick="fadd()">

  <input type=text name='resul'/>

</form>
</body>
</html>

您可以使用:

selectedOptions :...包含当前选中的元素中包含的元素的列表。 所选选项的列表是一个HTMLCollection对象,每个当前所选选项都有一个条目。

因此,您可以从以下位置进行更改:

n1=document.f1.cveDiscount.value;

至:

n1 = document.f1.cveDiscount.selectedOptions[0].textContent;

无论如何,我建议在dom ready时使用.addEventListener()而不是内联事件处理程序。

片段:

 document.addEventListener('DOMContentLoaded', function(e) { document.querySelector('[type=button]').addEventListener('click', function(e) { n1 = document.f1.cveDiscount.selectedOptions[0].textContent; n2 = document.f1.amount.value; res = document.f1.resul.value; res = parseInt(n1) + parseInt(n2); document.f1.resul.value = res; }) }) 
 <form name='f1' action="" method=POST> <label name=lblnum1>Num 1:</label> <select name="cveDiscount" class="form-control "> <option value="1">100</option> <option value="2">99</option> <option value="3">98</option> <option value="4">96</option> <option value="5">95</option> <option value="#" selected>Select discount</option> </select> <label name=lblnum2>Num 2:</label> <input type=text name='amount'/> <input type=button value=" = "> <input type=text name='resul'/> </form> 

只需更改带有discount option内的价值

<option value="<?PHP echo ''.$row['discount'];?>"><?PHP echo ''.$row['discount'];?></option>

这样,您可以轻松地将discount作为值而不是其id传递

如果出于某种原因需要将这些id值保留在其中,则稍微更改javascript还可以让您使用select标记选项中的文本:

var sel = document.f1.cveDiscount;
var n1 = sel.options[sel.selectedIndex].text;

这将返回预期的结果。

当前,您正在UI中显示Discount的值,但实际上是传递id作为添加值。 只需从查询中获取折扣并将其作为值放入您的选项标签中,如下所示:

<select name="cveDiscount" class="form-control ">
    <?PHP

    if ($resultado = $mysqli->query("SELECT discount FROM discount  order by id desc", MYSQLI_USE_RESULT)) {

      while ($row = mysqli_fetch_array($resultado)){
        ?>
        <tr>
          <option value="<?PHP echo ''.$row['discount'];?>"><?PHP echo ''.$row['discount'];?></option>
        </tr>
        <?PHP
      }
    }
    ?>
    <option value="#" selected>Select discount</option>
  </select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM