【问题标题】:PHP loop through array of HTML textboxesPHP 循环遍历 HTML 文本框数组
【发布时间】:2011-10-19 07:50:06
【问题描述】:

我有一个带有动态数量的复选框字段的 HTML 表单,所有这些都封装在提交表单中。提交表单后,我想使用 PHP 脚本遍历每个复选框字段的值。同时,我必须保留与复选框字段相关联的某个 ID,以便当我遍历脚本中的每个 ID 时,我可以使用该 ID 更新数据库中的正确行。目前,我有:

<input checked="checked" name="attended_<?php echo($pid); ?>"

我只是不确定如何继续并从我的 PHP 脚本中访问所有参加的 [] 值(同时保留 ID)。我会使用像下面这样的多维数组吗?

<input checked="checked" name="attended[<?php echo($i); ?>][<?php echo($pid); ?>]; ?>"

如果能提供任何帮助,我将不胜感激。谢谢!

【问题讨论】:

标签: php html arrays forms


【解决方案1】:

也许你可以用一个隐藏字段来做到这一点,该字段与名称的复选框“关联”:

<input checked="checked" name="attended_<?php echo($i); ?>"
<input type="hidden" name="attended_<?php echo($i); ?>_reference" value="<?php echo($pid); ?>" />

因此,在提交后处理 POST 数据时,您可以通过一些字符串操作再次将引用放在一起。

【讨论】:

    【解决方案2】:

    通常当我创建复选框时,我会在名称中添加一个索引。这样您就可以遍历提交代码中的每个复选框。

    <input type="checkbox" name="cbGroup[1]" value="y" />
    <input type="checkbox" name="cbGroup[2]" value="y" />
    <input type="checkbox" name="cbGroup[3]" value="y" />
    

    在你的 PHP 中

    foreach($_POST['cbGroup'] as $index=>$checkbox) {}
    

    您需要确保您的 $_POST['cbGroup'] 已设置,因为如果未选中该复选框,则不会设置。

    编辑:对不起,我应该学会完整地阅读这个问题,呵呵 :) 我一直在 PHP 中使用带有 HTML 输入的多维数组,我认为这就是我要走的路。

    【讨论】:

    • 我确实使用多维数组来让它工作。然而,棘手的部分是提交未选中的复选框。为此,我必须在我的 HTML 中添加一个隐藏的复选框字段,其中包含“未选中”的值。这样,我可以在我的 PHP 代码中检查“未检查”或“已检查”。谢谢!
    • 是的,我也觉得这很棘手。通常我的复选框是是或否的标志,所以当我清理我的代码时,我总是会这样做 $_POST['mycheckbox'] = isset($_POST['mycheckbox']) ? 'y' : 'n';避免出现空索引 :) 很高兴我能帮上忙!
    【解决方案3】:

    可以说这是来自表单的数据

    <input checked="checked" name="attended[1]; ?>"
    <input checked="checked" name="attended[2]; ?>"
    
    <input checked="checked" name="attended[3]; ?>"
    <input checked="checked" name="attended[4]; ?>"
    
    <input checked="checked" name="hello[1]; ?>"
    <input checked="checked" name="hello[2]; ?>"
    

    这就是数组的样子。不需要它只是为了展示

    // $k        =>      $v
    $attended[1]='blah blah';
    $attended[2]='blah blah';
    $attended[3]='blah blah';
    $attended[4]='blah blah';
    
    $hello[1]='blah blah';
    $hello[2]='blah blah';
    

    科学位

    foreach($attended as $k=>$v){
    
    $sql = "UPDATE mytable SET attended = '$v', hello = '{$hello[$k]}' where id = '$k'";
    $query = mysql_query($sql) or die("Cannot query the database.<br />" . mysql_error());
    
    }
    

    所有关联的数据都应该有相同的 pid,例如

    <input checked="checked" name="attended[1]; ?>"
    <input checked="checked" name="hello[1]; ?>"
    

    【讨论】:

      猜你喜欢
      • 2011-06-19
      • 1970-01-01
      • 2011-05-23
      • 2012-11-14
      • 2011-04-25
      • 1970-01-01
      • 2019-07-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多