无法获取复选框值

时间:2018-07-27 13:55:46

标签: php json checkbox

我有以下代码。我只想获取选定的复选框值,但只获取最后一个复选框值。看看我的代码有什么问题。

<div class="box-body table-responsive no-padding">
                            <h4>Select Jobwork</h4>

                               <table id="data-table" class="table table-hover jobworks-table table-responsive">
                                    <thead>
                                        <tr style="background-color: #DDDD; color:firebrick;">
                                            <th><input type='checkbox' value="1" name="select_all" /></th>
                                            <th>JobWork Name</th>
                                            <th>Description</th>
                                            <th>Price</th>
                                        </tr>
                                    </thead>
                                   <tbody>
                                <?php foreach ($item as $key=>$value){
                                $decoded = json_decode($value['jobWorkJsonString']); ?>
                                       <?php foreach($decoded as $row){ ?>
                                            <tr class="odd gradeX">
                                                <td><input type='checkbox' name="<?php echo $row->jobwork; ?>" /></td>
                                                <td style="padding-left:0px;"><?php echo $row->jobwork; ?><input type="hidden" name="jobwork_name" value="<?php echo $row->jobwork; ?>"></td>
                                                <td style="padding-left:0px;"><?php echo $row->description; ?><input type="hidden" name="jobwork_description" value="<?php echo $row->description; ?>"></td>
                                                <td style="padding-left:0px;"><?php echo $row->jobPrice; ?><input type="hidden" name="price" value="<?php echo $row->jobPrice; ?>"></td>        
                                                <?php } ?>
                                            </tr>
                                    <?php } ?>
                                    </tbody>
                                </table>
                            <br>
                        </div>

2 个答案:

答案 0 :(得分:1)

如果您提交多个具有相同名称的字段,则PHP只会将最后一个字段放入$_POST / $_GET中。

例外情况是,您以[]结尾的名称会产生一个数组。

但是,复选框仅在被选中时才是成功的控件,因此仅在名称中添加[]将会导致每组日期之间的关联丢失。

不要提交有关每个工作的所有数据(您不会尝试对其进行更改,否则,您将不会使用隐藏的输入!),将< em>全部您需要 进入复选框输入的数据。在服务器上查找其余数据。

<td><input type='checkbox' name="jobwork[]" value="<?= htmlspecialchars($row->id); ?>"/></td>

我以$row->id为例。我不知道您的数据在服务器上的结构。

您将可以执行以下操作:

foreach ($_POST['jobwork'] as $jobwork_id) {
    $row = look_up_jobwork_by_id($jobwork_id);
}

…只有选中的复选框值将出现在该数组中。

答案 1 :(得分:0)

您在第一个复选框代码中有问题。 名称作为值给出,复选框的两个名称应相同, 并以数组的形式获取请求

<?php foreach ($item as $key=>$value){
                                    $decoded = json_decode($value['jobWorkJsonString']); ?>
                                           <?php foreach($decoded as $row){ ?>
                                                <tr class="odd gradeX">
                                                    <td><input type='checkbox' name="jobwork"  value="<?php echo $row->jobwork; ?>" /></td>
                                                    <td style="padding-left:0px;"><?php echo $row->jobwork; ?><input type="hidden" name="jobwork_name" value="<?php echo $row->jobwork; ?>"></td>
                                                    <td style="padding-left:0px;"><?php echo $row->description; ?><input type="hidden" name="jobwork_description" value="<?php echo $row->description; ?>"></td>
                                                    <td style="padding-left:0px;"><?php echo $row->jobPrice; ?><input type="hidden" name="price" value="<?php echo $row->jobPrice; ?>"></td>        
                                                    <?php } ?>
                                                </tr>
                                        <?php } ?>

将job_work的值设为array,您将获得所选的job_work