【问题标题】:Codeigniter error: Undefined offset: 1 when processing checkbox from formCodeigniter 错误:未定义的偏移量:从表单处理复选框时为 1
【发布时间】:2013-09-01 08:25:40
【问题描述】:

我每次提交表单并处理它时都会收到这种错误类型的错误。

A PHP Error was encountered

Severity: Notice

Message: Undefined offset: 1

Filename: controllers/register_grp.php

Line Number: 81

我有这个表单,其中包含动态创建的复选框,其数量由用户确定。

<input class='main' type='checkbox' name='tshirttick[1]' id='tshirttick1' value='Yes' />
<input class='main' type='checkbox' name='tshirttick[2]' id='tshirttick2' value='Yes' />
...

提交后,我使用以下代码对其进行处理:

$withtshirt = $this->security->xss_clean($this->input->post('tshirttick'));
for ($i = 0; $i < $num_of_members; $i++)
{
     if ($withtshirt[$i] == "Yes")
     {
          $include_shirt = 'Y';
          $ticketcost += 150;
          $tshirtsize[$i] = $this->db->escape($tshirtsize[$i]);
     }
     else
     {
          $include_shirt = 'N';
          $tshirtsize[$i] = "-";
          $tshirtsize[$i] = $this->db->escape($tshirtsize[$i]);
     }
     $id = $this->register_model->addParticipant($i, $tshirtsize[$i], $include_shirt);
}

模型addParticipant基本上是在数据库中插入一行返回$this->db->insert_id();

错误指向的第81行是这一行:

if ($withtshirt[$i] == "Yes")

这些行实际上已成功插入,但在提交时会打印多个此错误实例,从而阻止页面重定向到另一个页面。我猜每次循环迭代时都会打印错误。

我将如何解决这个问题?我只是希望页面在执行所有插入后重定向,但是这个“通知”阻止了它。

【问题讨论】:

  • 每次都是未定义的偏移量1还是数字增加?
  • 数字递增。错误打印多次。

标签: php forms codeigniter undefined offset


【解决方案1】:

您的复选框名称应类似于 tshirttick[]

<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick1' value='Yes' />
<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick2' value='Yes' />

【讨论】:

  • 感谢您的回复。我试过了。不将索引放入复选框数组的问题是,当某些框被选中而有些没有被选中时,只会收到选中的框。例如: tshirttick1 = 已检查 tshirttick2 = 未检查 tshirttick3 = 已检查 tshirttick4 = 未检查 数组看起来像 tshirttick[1] = 'Yes' tshirttick[2] = 'Yes' tshirttick[3] = '' tshirttick[4] = ''
【解决方案2】:

输入正在创建一个数组,其中包含一个字符串作为键。 PHP 找不到与字符串键关联的值,并意识到它可以将字符串转换为数字,因此将字符串转换为数字并抛出通知。

您可以设置不带键的字段名称,它们将自动填充数组。 name='tshirttick[]'。您还可以将type cast $i 转换为foreach 循环中的字符串。 $i = (string) $i;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-02
    • 2011-07-22
    • 2011-03-13
    相关资源
    最近更新 更多