我有一个从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”时发布?
答案 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>