我有这个动态创建的复选框,我想从中提取一些数据,这样我就可以将其放入我的DB中。我刚刚发现,复选框似乎不起作用,因为我抓住了错误的复选框或其他什么。
复选框如下:
<td align="center">
<input name="e10[]" type="checkbox" <?php echo $checked = $foo['e10'] == '1' ? "checked='"checked'"" : "";?> onclick="document.getElementsByName('e11[]')[<?php echo $tæller-1;?>].value = this.checked ? '<?php echo date('d-m-Y');?>' : '';" value="0" />
<input type="text" class="listform" style="width:60px;" name="e11[]" value="<?php echo sqltoalmdatetom($foo['e11']); ?>">
在我的提交页面上,我尝试过这个:
echo "0=>".$_POST['e10'][0]."|";
echo "1=>".$_POST['e10'][1]."|";
echo "2=>".$_POST['e10'][2]."|";
问题是,当我只检查了e10[1]时,它将显示为e10[0]。如果我同时检查它们,我会得到正确的结果。当第一个元素没有被选中时,我能做些什么来获得正确的值?
---------更新---------所以现在我可以得到这个值了,但是如何在mysql更新语句中使用它呢?
我正在浏览我的行($etape),因为每个复选框都在一行上。当我需要更新的字段时,我希望我可以使用$_POST[e10],但我现在不能这样做了,是吗?。每一行都有一个动态编号,在本例中从0开始,因此复选框将命名为$_POST[e10[i*行号*]]
for ($j=0; $j<=count($etape); $j++) {
//Vi går kun videre hvis etapenavnet er udfyldt.
//Sikre at der ikke oprettes en tom etape, og at man ikke kommer til at slette etapenavnet
if ($_POST['e1'][$j] != "") {//e1 == etapebeskrivelsesfeltet
//Så længe vi ikke er kommet til den nye etape/række, så opdatere vi bare de gamle
if ($j < count($etape)) {
foreach ($keys as $feltnavn) {
//echo $feltnavn;
$værdi = $_POST[$feltnavn][$j];
$querys[] = "`".$feltnavn."` = '"".addslashes($værdi)."'"";
if ($feltnavn == "e25") {
$test_e25 = $værdi;
}
if ($feltnavn == "e3") {
$test_e3 = $værdi;
}
}
if ($test_e3 && $test_e25) {
echo $tmp = 'UPDATE `etape` SET '.implode(', ', $querys).' WHERE id = '.$etape[$j].' AND ordre_id = '.$tilbudsnummer;
echo "<br><br>";
unset($querys);
//mysql_query($tmp) or die(mysql_error());
}
}
}
}
提交表单时,只会同时提交选中的复选框值。这意味着您不能将数字索引与复选框数组一起使用来确定选中了哪个复选框。请改用具有字符串键值的数组。示例
HTML:
<input name="e10[i0]" type="checkbox" value="0" />
<input name="e10[i1]" type="checkbox" value="1" />
<input name="e10[i2]" type="checkbox" value="2" />
PHP:
if (is_array($_POST['e10']) {
foreach($_POST['e10'] as $key => $value) {
$numeric_key = intval(ltrim($key, 'i'));
echo "$numeric_key => $value |";
}
}