0

フォームを送信して処理するたびに、このエラー タイプのエラーが発生します。

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")

行は実際には正常に挿入されますが、送信時にこのエラーの複数のインスタンスが出力され、ページが別のページにリダイレクトされなくなります。ループが繰り返されるたびにエラーが出力されると思います。

どうすればこれを修正できますか? すべての挿入を実行した後にページをリダイレクトしたいだけですが、この「通知」がそれを防ぎます。

4

2 に答える 2

0

チェックボックスの名前は次のようにする必要がありますtshirttick[]

<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick1' value='Yes' />
<input class='main' type='checkbox' name='tshirttick[]' id='tshirttick2' value='Yes' />
于 2013-08-29T06:46:02.770 に答える
0

入力は、キーの文字列を含む配列を作成しています。PHP は文字列キーに関連付けられた値を見つけることができず、文字列を数値に変換できることを認識するため、文字列を数値に変換して通知をスローします。

キーなしでフィールド名を設定でき、それらは自動的に配列に入力されます。name='tshirttick[]'. foreach ループで文字列へのキャストを入力 することもできます。$i$i = (string) $i;

于 2013-08-29T14:44:56.497 に答える