复选框数组返回NULL

时间:2014-06-03 09:22:13

标签: php html

我想在我正在开发的结算系统中使用批量删除功能,但是当var_dump编辑时,复选框会在检查时产生NULL值

这是我的标记(已编辑)

<form method="post" name="form-countries-del">
<div id="deleteBox">
    <span class="middleAlign"><b>No. of Records:</b> <span class="red"><?= $qtotal; ?></span></span>
    <span class="rightAlign">
        <input type="submit" value="Delete" name="submit-countries-del" class="del-submit" />
    </span>
</div>
<table border="1" id="src-table">
    <tr class="header">
        <td><input type="checkbox" id="toggleChecks"></td>
        <td class="_hide">CountryID</td>
        <td>Country Code</td>
        <td>Country Name</td>
        <td>Telco Rate</td>
    </tr>
    <?php while($row = $pdo->fetch()) : ?>
    <tr class="<?=($c++%2==1) ? 'even' : 'odd' ?>" title="Double click to edit">
        <td><input type="checkbox" name="toDelete[]" id="toDelete[]" class="toDelete" value="<?= $row['CountryID']; ?>" /></td>
        <td class="_hide"><?= $row['CountryID']; ?></td>
        <td><?= highlight($_POST['search'], $row['CountryCode']); ?></td>
        <td><?= highlight($_POST['search'], $row['CountryName']); ?></td>
        <td><?= $row['Trate']; ?></td>
    </tr>
    <?php endwhile; ?>
</table>
</form>

生成的表单(Google Chrome)是这样的: Form generation code

遗憾的是它只会产生NULL。我不知道我错过了什么。我一直在扫描很多关于我的问题的类似文章,但迄今为止都没有。

我希望大家能帮助我! 干杯!

4 个答案:

答案 0 :(得分:0)

在您选中复选框之前,您将获得值为NULL,选中复选框并尝试使用post方法后,您将检索该值。

答案 1 :(得分:0)

你的HTML很糟糕。

<form method="post" name="form-countries-del">移至<div id="deleteBox">

之前

答案 2 :(得分:0)

您的form关闭(</form>)未正确定义。

您的html代码将生成如下<span> <form> ......(without ending form) </span>

Html解析如果任何未关闭的标签出现,它将自动在中间添加结束标记。

像这样,

<span >
    <form>
        <!-- Submit button -->
    </form>    <!-- added automatically -->

</span>

<!-- Check box elements goes here -->

答案 3 :(得分:0)

一些MVC框架乱用请求变量,如POST。你可能会遇到这种情况。由于您的提交按钮发布正常,这可能只是POST数组的问题。试试这个以解决这个问题。

<input type="checkbox" name="toDelete-<?= $row['CountryID']; ?>" id="toDelete[]" class="toDelete" value="<?= $row['CountryID']; ?>" /></td>
        <td class="_hide"><?= $row['CountryID']; ?>

您可以像这样访问值:

$toDelete = array();
foreach($_POST as $p){
    $ex = explode('-',$p);
    if($ex[0]=='toDelete'){
        $toDelete[] = $ex[1];
    }
}