2012-03-12 18 views
0

フォームの中にチェックボックスがあり、配列の代わりに文字列を返します。誰か私のコードに間違っていることを教えてもらえますか?ここでなぜ私はチェックボックスから配列の代わりに文字列を取得していますか?

は、ビューからのコードです:。

<?php echo form_open('backOfficeUsers/deleteMoreUsers');?> 
      <table border="0" cellpadding="4" cellspacing="1" bgcolor="#02659E" width="500"> 
       <tr bgcolor="#E9E8ED"> 
        <td align="center"> 
         <b>User ID</b> 
        </td> 
        <td align="center"> 
         <b>User Name</b> 
        </td> 
        <td align="center"> 
         <b>Password</b> 
        </td> 
        <td align="center"> 
         <b>Select for delete</b> 
        </td> 
        <td align="center"> 
         <b>Delete</b> 
        </td> 
       </tr> 

<?php 

    foreach ($users as $key => $user) 
    { 
     echo form_open('backOfficeUsers/deleteUser'); 
     echo form_hidden('dpage', 'backOfficeUsers/displayAllUsers'); 
     echo form_hidden('rid', $user['id']); 
     echo"<tr bgcolor='#E9E8ED'>"; 
     echo "<td>" . anchor("backOfficeUsers/displayEditUserForm/$user[id]/", $user['id']) . "</td>"; 
     echo "<td>" . $user['username'] . "</td> "; 
     echo "<td>" . $user['password'] . "</td> "; 
     echo "<td>" . form_checkbox('userdelete[]', $user['id']) . "</td> "; 
     $confirm = "onclick='return confirmSubmit();'"; 
     echo"<td>"; 
     echo form_submit('submit', 'Delete', $confirm); 
     echo"</td></tr>"; 
     echo form_close(); 
    } 
?> 
      </table> 
      <?php echo form_submit('submit', 'Delete All Selected Users');?> 
      <?php echo form_close();?> 
     </div> 

そして、私は私のコントローラからのvarダンプを作るとき200は、行IDである一方で、私は(3)「200」(文字列を取得しています

ここ

は、コントローラのコードである:。

foreach ($this->input->post('userdelete') as $row){ 
    $deleteWhat = $row; 
    var_dump($deleteWhat); 
    die(); 
} 

この印字文字列(3)と第1行のID

+0

あなたは '$ deleteWhat'に割り当てられたものを表示していません...どのようなものが含まれているべきかをどのように知っていますか? –

+0

間違えて申し訳ありません... – Zoran

+0

foreach($ this-> input-> post( 'userdelete')を$行として){ $ deleteWhat = $ row; } – Zoran

答えて

1

編集:私はちょうどこれをキャッチしました:

無効な、予期しない動作が発生する傾向がある<form>タグがネストされている、あなたは最初に(高い優先度)を修正する必要があります。私はあなたのアプリケーションを知らないので、削除する必要があるものはわかりませんが、foreachの中にあるもののようには見えません。そうしないと、値の配列をポストする必要はありません。

とにかく、これはあなたのコードの場合


...場合ではなかったと仮定:

foreach ($this->input->post('userdelete') as $row){ 
    $deleteWhat = $row; 
} 

次に、各反復における$deleteWhatが投稿された文字列が含まれ、そのチェックボックスのvalueにあったものは何でも。

この配列です:

$this->input->post('userdelete') 

それはあなたのコードが正常に動作しているform_checkbox('userdelete[]', $user['id'])

から投稿されたすべてのものが含まれています。

  • <input name="somename[]">が原因括弧の値の配列として掲載します:

    ちょうどいくつかのことを覚えておいてください。 <input name="somename[hello]">

  • <input name="somename[hello][]">のアレイをポストする:値は(最初は未定義の変数通知を生成し、第二リターンFALSE
  • 設定されていないときのようなキーを指定することができる以外は
  • $_POST['somename']は、$this->input->post('somename')に等しいです。配列など
  • チェックボックスはチェックされていなければ何も投稿しません。
+0

'コード' $ deleteWhat = $ this-> input-> post( 'userdelete'); var_dump($ deleteWhat); die(); 'code'これを生成します:array(1){[0] => string(3) "200"} – Zoran

+0

これは私には間違っているかどうかわかりませんが、 200 "となる。私は、あなたがコメントを理解できないところにあなたのコードを置くのではなく、あなたの投稿を編集することをお勧めします。入れ子になった '

'タグに気付きましたか? –

+0

私はフォーム内にフォームがあることを知っています...最初は選択したすべてのユーザーを削除し、2番目は1人のユーザーしか削除しません。そして私は両方が必要なので、ユーザーは1つ以上のレコードを削除することができます。私のコードの問題は、3つ以上のチェックボックスをチェックしても、チェックされたチェックボックスのうちの最初のチェックボックスだけが表示され、残りのチェックボックスは表示されません。 – Zoran

関連する問題