【问题标题】:How to name a two dimension checkbox?如何命名二维复选框?
【发布时间】:2014-09-14 19:41:35
【问题描述】:

这个页面有一个星期列表,用户可以查看不同星期的不同日期

<input type="checkbox" name="week[]" value="Sun"/>
Sun
<input type="checkbox" name="week[]" value="Mon"/>
Mon
<input type="checkbox" name="week[]" value="Tue"/>
Tue
<input type="checkbox" name="week[]" value="Wed"/>
Wed
<input type="checkbox" name="week[]" value="Thu"/>
Thu
<input type="checkbox" name="week[]" value="Fri"/>
Fri
<input type="checkbox" name="week[]" value="Sat"/>
Sat
<br/>
<br/>


<input type="checkbox" name="week[]" value="Sun"/>
Sun
<input type="checkbox" name="week[]" value="Mon"/>
Mon
<input type="checkbox" name="week[]" value="Tue"/>
Tue
<input type="checkbox" name="week[]" value="Wed"/>
Wed
<input type="checkbox" name="week[]" value="Thu"/>
Thu
<input type="checkbox" name="week[]" value="Fri"/>
Fri
<input type="checkbox" name="week[]" value="Sat"/>
Sat
<br/>
<br/>
.
.
.
<!-- can dynamically add more by javascript -->

但是提交后,整天会合并成一维数组

所以我将 week[] 更改为 week[][]

但它仍然将所有值组合在一维数组中,并且该数组的每个元素都是一个数组

如何提交二维复选框?

我希望我可以使用它来循环所有周和天,我不想将序列号硬编码为周。

            foreach ($week as $oneWeek)
            {
                echo 'week<br>';
                foreach ($oneWeek as $day)
                {
                    echo $day.'<br>';
                }
            }

【问题讨论】:

  • 你能解释一下你的问题吗?最后的输出是什么?如果只进入一维,你将如何区分它是哪一周
  • 在这个 HTML 中,你可以看到两个两周的复选框列表,如果用户同时选中了 Sun,我怎么知道哪一周是哪个 Sun?
  • 是的,这就是我的意思,你不能像那样对它们进行分组 (1D),因为两个星期天都属于各自的星期没有标识符

标签: php html checkbox form-submit


【解决方案1】:

我建议你这样分组:

if(isset($_POST['submit'])) {
    $weeks = $_POST['week'];
    // in this way, you could identify the week for each day you checked
}


?>

<form method="POST">
    <label><input type="checkbox" name="week[1][]" value="Sun"/>Sun</label>
    <label><input type="checkbox" name="week[1][]" value="Mon"/>Mon</label>
    <label><input type="checkbox" name="week[1][]" value="Tue"/>Tue</label>
    <label><input type="checkbox" name="week[1][]" value="Wed"/>Wed</label>
    <label><input type="checkbox" name="week[1][]" value="Thu"/>Thu</label>
    <label><input type="checkbox" name="week[1][]" value="Fri"/>Fri</label>
    <label><input type="checkbox" name="week[1][]" value="Sat"/>Sat</label>

    <br/><br/>

    <label><input type="checkbox" name="week[2][]" value="Sun"/>Sun</label>
    <label><input type="checkbox" name="week[2][]" value="Mon"/>Mon</label>
    <label><input type="checkbox" name="week[2][]" value="Tue"/>Tue</label>
    <label><input type="checkbox" name="week[2][]" value="Wed"/>Wed</label>
    <label><input type="checkbox" name="week[2][]" value="Thu"/>Thu</label>
    <label><input type="checkbox" name="week[2][]" value="Fri"/>Fri</label>
    <label><input type="checkbox" name="week[2][]" value="Sat"/>Sat</label>

    <br/>

    <input type="submit" name="submit" />
</form>

或者这个:

$days = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat');
?>

<form method="POST">
    <?php for($i = 1; $i <= 3; $i++): ?> <!-- print week 1 to week 3 -->
        <?php foreach($days as $day): ?>
            <label><input type="checkbox" name="week[<?php echo $i; ?>][]" value="<?php echo $day; ?>"/><?php echo $day; ?></label>
        <?php endforeach; ?>
        <br/><br/>
    <?php endfor; ?>

    <br/>

    <input type="submit" name="submit" />
</form>

【讨论】:

  • 提交后如何找回?具体从帖子?需要再次循环并获取所有内容吗?
  • @DevC 只访问帖子值,您选择的值应该在其中。它是一个数组,因此您很可能会使用循环访问它
【解决方案2】:

您需要在第一个索引中添加一个数字。

第一周:

<input type="checkbox" name="week[1]" value="Sun"/>

第二周

<input type="checkbox" name="week[2]" value="Sun"/>

【讨论】:

    猜你喜欢
    • 2017-08-12
    • 2021-01-30
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 2012-05-09
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    相关资源
    最近更新 更多