我正在尝试创建广告资源跟踪器。我的问题是,库存可以是从1项到1公制的任何地方(包括或拿走)物品。基本形式是:
eq.issue.php
<form name="form" method="post" action ="issue.e.php">
<?
$kit_query = mysql_query("SELECT * FROM eq_kit");
while($fetch_kits = mysql_fetch_array($kit_query){
$kitId = $fetch_kits['kit_id'];
$kitSn = $fetch_kits['kit_sn'];
$kitQty = $fetch_kits['kit_qty'];
?>
<tr>
<td>
<input type="checkbox" name="kit_row[]" value="<?=$kitId?>" id="<?=$kitId?>">
</td>
<td>
<input name="qty[]" type="text" id="<?=$kitQty?>" value="<?=$kitQty?>">
</td>
<td>
<input name="sn[]" type="hidden" id="<?=$kitSn?>" value="<?=$kitSn?>"
</td>
</tr>
<? } ?>
<input type="submit" name="Submit" id="Submit" value="Submit">
</form>
在接收方:
issue.e.php
<? // all the database crap
if(is_array($kit_row)){
foreach($_POST['kitrow'] as $key=>$val){
$sn=$_POST['sn'];
$serial = $sn[$val];
$qty = $_POST['qty'];
$quant = $qty[$val];
mysql_query("INSERT INTO eq_issue SET issue_sn = '$serial', issue_qty = '$quant'")or die(mysql_error());
这适用于单个项目以及连续项目。
以我的eq.issue.php形式为例:
|Check | Qty | SN |
====================
| X | 100 |12345|
| | 1 |23456|
| | 1 |98765|
| X | 999 |19283|
====================
|Submit|
我的问题是,如果我选择第一个和第四个选项,那么数组现在看起来像这样:
kit_row => Array
0 => 4
1 => 3
qty => Array
0 => 100
1 => 1
2 => 1
3 => 999
sn => Array
0 => 12345
1 => 23456
2 => 98765
3 => 19283
因此,当我的剧本播出时,我得到第4个选项的值为kit_row =&gt; 3 qty =&gt; 1 sn =&gt; 23456,我希望它显示kit_row =&gt; 3 qty =&gt; 999 sn =&gt; 19283
有关如何使这项工作的任何建议?为了获得更好的可视化参考,我试图使用复选框来实现与PHPMyAdmin的多值插入页面相同的概念,以说明我想要插入哪些记录组(或行)。
答案 0 :(得分:1)
您可以通过$_POST['qty']
或$_POST['sn']
代替$_POST['kit_row']
预告。
或者使用kit_id作为表单字段的索引,这样可以在服务器端知道什么是:
<input type="checkbox" name="kit_row[<?=$kitId?>]" value="1">
<input name="qty[<?=$kitId?>]" type="text" id="<?=$kitQty?>" value="<?=$kitQty?>">
<input name="sn[<?=$kitId?>]" type="hidden" id="<?=$kitSn?>" value="<?=$kitSn?>">
通过这种方式,您可以使用数据库中的ID访问服务器上的发布数据,而不是使用0,1,2 ......如下所示:
if (is_array($_POST['kit_row']))
{
foreach ($_POST['kit_row'] as $kitId => $val)
{
$sn=$_POST['sn'];
$serial = $sn[$kitId];
$qty = $_POST['qty'];
$quant = $qty[$kitId];
也可以在每个复选框前添加一个名称相同且值为0的隐藏字段。你必须用真正的索引替换kit_row []:
<input type="hidden" name="kit_row[<?php echo $i; ?>]" value="0">
<input type="checkbox" name="kit_row[<?php echo $i++; ?>]" value="1">
这样,在两种情况下都会提交值,勾选和未勾选。