每次提交表单并处理它时,我都会收到此错误类型的错误。
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-&gt; db-&gt; insert_id();
错误指向的第81行是:
if ($withtshirt[$i] == "Yes")
实际上已成功插入行,但在提交时会打印此错误的多个实例,从而阻止页面重定向到另一个页面。我想每次循环迭代时都会打印错误。
我该如何解决这个问题?我只是希望页面在执行所有插入后重定向,但是这个“通知”会阻止它。
答案 0 :(得分:0)
您的复选框名称应与tshirttick[]
<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick1' value='Yes' />
<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick2' value='Yes' />
答案 1 :(得分:0)
输入正在创建一个带有键字符串的数组。 PHP无法找到与字符串键关联的值,并意识到它可以将字符串转换为数字,因此它将字符串转换为数字并抛出通知。
您可以设置不带键的字段名称,它们会自动填充数组。 name='tshirttick[]'
。您还可以type cast $i
到foreach循环中的字符串。 $i = (string) $i;