我正在循環一堆數組類型字段。我有兩個複選框,名稱爲「taxable []」和「ship []」在php中循環檢查框,意外的結果
我正在將這些複選框輸入到mysql中,並注意到表單中的其他所有字段都正確提交,除了這些。
如果我有6行復選框,我取消選中第一行。最後一行復選框會受到影響。
同樣,如果我取消選中前兩行,最後兩行會受到影響。
我把它分解成了下面的簡單php ..並循環了我的複選框,我看到循環的最後一個迭代是沒有設置複選框,而不是第一個循環。任何想法這裏發生了什麼。我還檢查了數組的大小,並且它匹配每種類型的字段數。
echo sizeof($post["prodID"]);
for($i = 0; $i<sizeof($post["prodID"]); $i++){
echo $i.' taxable '.$post["taxable"][$i].' '.$i.' ship '.$post["ship"][$i].' <br />';
continue;
}
HTML表單:
<? foreach($products as $prod): ?>
<tr class="<?= $prod["activeText"] ?>">
<td><?= $prod["productid"] ?></td>
<td><input type="text" name="name[]" value="<?= $prod["itemname"] ?>"/></td>
<td><textarea name="description[]"><?= $prod["description"] ?></textarea></td>
<td><input type="text" name="cost[]" value="<?= $prod["cost"] ?>"/></td>
<td><input type="text" name="price[]" value="<?= $prod["price"] ?>"/></td>
<?php $checked = ($prod["taxable"] == 1) ? "checked='checked'" : ""; ?>
<td style="padding:0px;"><input style="position:relative; right:-10px;"type="checkbox" name="taxable[]" <?= $checked ?>/></td>
<td>
<select name="tax[]">
<?php foreach($taxes as $tax){
$selected = ($prod["inventoryTaxRateID"] == $tax["inventoryTaxRateID"]) ? 'selected="selected"' : '';
?>
<option <?= $selected ?> value="<?= $tax["inventoryTaxRateID"] ?>"><?= $tax["name"] ?></option>
<?php } ?>
</select>
</td>
<?php $ship = ($prod["ship"] == 1) ? 'checked' : '' ?>
<td><input type="checkbox" name="ship[]" <?= $ship ?> /></td>
<td><input type="text" name="sandh[]" value="<?= $prod["shipping_handling"] ?>"/></td>
<td><?= $prod["activeText"] ?></td>
<td>
<? if($prod["inactive"] !== null): ?>
<input type="button" name="changeStatus" value="<?= $prod["buttonText"] ?>" onclick="window.location='<?= base_url() ?>management/productManager/activate/<?= $prod["inventoryItemID"] ?>/<?= $prod["activeStatus"] ?>/<?= $category ?>'" />
<? endif; ?>
<input type="hidden" name="prodID[]" value="<?= $prod["inventoryItemID"] ?>" />
<input type="hidden" name="cat[]" value="<?= $prod["cat"] ?>" />
</td>
</tr>
<? endforeach; ?>
請張貼表單的HTML。 – dotancohen 2011-12-29 19:40:43
注意:'continue;'在循環結束時不需要:) – piotrekkr 2011-12-29 19:45:19
在我的循環底部有額外的代碼,我沒有在示例中包含 – ionfish 2011-12-29 19:47:10