如何更改表单,以便仅发布选定的字段

时间:2018-12-05 21:27:21

标签: php post

我有一个从mysql查询自动生成的表单,其中包含所有可供我们书店订购的书籍。问题在于,所有可用书籍的ISBN都会发布,而不是仅发布我们选择的书籍,这会浪费大量内存。

是否可以仅发布我们选择的数据,还是必须发布方括号中的每个输入字段?

这是表格的样子:

<form name="form" action="postdata.php" method="post">
<?php
$k=0;    
while ($books = mysqli_fetch_array($booksq)){
   $bookISBN[$k]=$books['theISBN'];
   echo '<textarea name="'.$bookISBN[$k].'"></textarea>'.$bookISBN[$k].'<br>;
   $k+=1;
   }
?>
</form>

使用该表格,我们选择要订购的图书,然后在文本区域中输入所需数量。

选择了几本书后,$ _ POST数据如下所示:

  [9780872865082]=>
  string(0) ""
  [9780872865198]=>
  string(1) "1"
  [9780872865709]=>
  string(0) ""
  [9780872866294]=>
  string(1) "1"
  [9780912678764]=>
  string(0) ""
  [9780930324872]=>
  string(1) "1"
  [9780941920056]=>
  string(0) ""
  [9780971084636]=>
  string(0) ""
  [9780975571644]=>
  string(0) ""
  [9781553800439]=>
  string(0) ""
  [9781556591075]=>
  string(0) ""
  [9781566892759]=>
  string(0) ""
  [9781570270871]=>
  string(0) ""
  [9781617753121]=>
  string(0) ""

如何更改表单,使数据仅在string(1)为“ 1”时发布?

2 个答案:

答案 0 :(得分:0)

也许是这样的:

while ($books = mysqli_fetch_array($booksq)){
    $bookISBN[$k]=$books['theISBN'];
    if ($Count == 1) {
        echo '<textarea name="'.$bookISBN[$k].'">'.$Count.'</textarea> ';
    }
}

答案 1 :(得分:0)

对此,我的解决方案是使用javascript将我们要订购的ISBN分成一个字段,然后将其发布。

<script type="text/javascript">
    function updatesum() {
      var m=0, ISBN, order, list=[], count=<?php echo $k; ?>-1, quant;
          while (m <= count) {
            tmp = 'n'+m;
            quant = (Number(document.getElementById(tmp).value));
            ISBN = (Number(document.getElementById(tmp).name));
            order = quant+'.'+ISBN;
            if (quant>0) {list.push(order);}
            m++;
          }

      document.getElementById('list').value = list;
    }    

</script>