1

HTML でコーディングされたチェックボックスがあり、これまでのところすべてが機能していますが、チェックボックスの name 属性に配列を渡す必要があります。変数を name 属性に渡すと、簡単に実行できることはわかっています。しかし、配列の場合、それはトリッキーであることが証明されています。

これが私のコードです:

   <?php // spit out rest of the list
       $permiCheck = array();
       foreach($pList as $value){
        //go into array, get what is needed to pass into the name attribute
        echo '<tr>';

        echo '<td>';
        echo $value['PName'];
        echo '</td>';
        //pass an array in
        $permiCheck['Id'] = $value['Id'];
        $permiCheck['ItemId'] = $value['ItemId'];
        if($value['Id']!=null) {



        ?>
        <td style="text-align:center;"> <input type="checkbox" checked="yes" name="<?php $permiCheck;?>" value="" id="change"></td>

これを行った後、フォーム検証のために POST メソッドを介して配列にあったものを取得するつもりです。

どうすればそれができるか、どうもありがとう。

4

3 に答える 3

1

変数の場合:

<input type="checkbox" name="myVariable" />

配列の場合:

<input type="checkbox" name="myArray[]" />
<input type="checkbox" name="myArray[]" />
<input type="checkbox" name="myArray[]" />

これでミステリーが解決することを願っています;)

于 2012-05-25T16:15:07.330 に答える
1

チェックボックス要素の名前は文字列でなければなりませんが、チェックボックスを配列として使用できます。すなわち

<input type="checkbox" name="checkboxName[]" value="1"/>
<input type="checkbox" name="checkboxName[]" value="2"/>

戻ります

var_dump($_POST)

array
  'checkboxName' => 
    array
      0 => int 1
      1 => int 2

あなたが何をしようとしているのかはわかりませんが、おそらくこの方法でそれを行うことができます

<td style="text-align:center;">
    <input type="checkbox" checked="yes" name="<?=$permiCheck['ItemId']?>[]" value="<?=$permiCheck['Id']?>" id="change">
</td>
于 2012-05-25T16:16:47.347 に答える
0

実際には、配列を値として渡すことができ、それらは多次元にすることさえできます:

<?
$testarray = array('id'=> 1, 'value'=>"fifteen");
var_dump($_POST);
?>
<form method="post">
<input type="checkbox" checked="yes" name="permicheck[id1]" value="<?php print_r($testarray)?>" id="change">
<input type="checkbox" checked="yes" name="permicheck[id2]" value="<?php print_r($testarray)?>" id="change">
<input type="submit">
</form>

次のような HTML 出力が生成されます。

<form method="post">
<input type="checkbox" checked="yes" name="permicheck[id1]" value="Array
(
    [id] => 1
    [value] => fifteen
)
" id="change">
<input type="checkbox" checked="yes" name="permicheck[id2]" value="Array
(
    [id] => 1
    [value] => fifteen
)
" id="change">
<input type="submit">
</form>

$_POST は次のようになります。

Array ( 
    [permicheck] => 
        Array ( 
        [id1] =>
            Array ( [id] => 1 [value] => fifteen ) 
        [id2] => 
            Array ( [id] => 1 [value] => fifteen ) 
        )
     )

ただし、これを行うと、情報が部外者に公開されます。これは、Web 攻撃にさらされる可能性があるため、一般的に悪いことです。この配列を $_SESSION に保存し、それらのチェックボックスで簡単なチェックを使用することをお勧めします。それが不可能な場合は、serialize() といくつかの暗号化を使用し、$_POST を受け取った後に復号化 + unserialize() することを検討してください。より多くの作業が必要ですが、はるかに安全です。

于 2012-05-25T17:30:51.220 に答える