0

チェックボックスを使用してチェックされている行の値を取得しようとしています。そのため、フォームを送信すると、選択した行の値が必要ですが、取得方法がわかりません。誰かが私を助けたり、私を導いたりできますか?

<?php
if(isset($_POST['invite'])){
    // what should I write here to get value of hidden fields name and email which was selected     
}
?>  
<!doctype>
<html><head>
<script type="text/javascript" src="jquery-1.4.2.js"></script>

// performing select all /deselect all checkbox operation  

    <SCRIPT language="javascript">
      $(function(){

        // add multiple select / deselect functionality
        $("#selectall").click(function () {
              $('.case').attr('checked', this.checked);
        });

        // if all checkbox are selected, check the selectall checkbox
        // and viceversa
        $(".case").click(function(){

            if($(".case").length == $(".case:checked").length) {
                $("#selectall").attr("checked", "checked");
            } else {
                $("#selectall").removeAttr("checked");
            }

        });
    });
    </SCRIPT>

</head><body>
    <div class = 'middle' style = 'width : 700px;background-color:beige'>

// creating grid view   

    <form type="post" name ="contacts">
<span><input type="checkbox" id="selectall"/></span>
     <div class = 'middle row'>NAME</div>
     <div class = 'middle row'>E-MAIL</div>
     <div class='line'></div>
     <div class='line'></div>
<?php foreach($email as $e){
echo "<div>
   <span><input type='checkbox' class='case' name='case'/></span>
   <div class='row'>".$e['name']."
       <input name='cname[]' type='hidden' value =".$e['name']."></div>
   <div class='row'>".$e['email']."
       <input name='cemail[]' type='hidden' value =".$e['email']."></div>
   </div><div class='line'></div>";
}
echo"<input type='submit' name='invite' value='invite'>
         </form></div></body></html>";
   }?> 
4

2 に答える 2

3

フォームを送信すると、チェックされたチェックボックスの値が$_POST他のフォーム フィールドと同様に配列に表示されます。あなたの場合、という名前の複数のチェックボックスがありますcase。それらのどれにも特定の値が割り当てられていないため、チェックボックスがオンになっている場合$_POST['case']と同じになるため、これはまったく役に立ちません。on

チェックボックスの名前をに変更し、case[]それぞれに一意の値を割り当てます。送信後に、チェックされたすべてのチェック$_POST['case']ボックスの値の配列が含まれます。たとえば、チェックボックスの属性で隠しフィールドの値を繰り返すことができます。value

チェックボックスがphpでどのように機能するかを理解するのに役立つ小さなphpスクリプトを作成しました。それを実行し、チェックボックスで遊んで、$_POST後で配列を見てください。

<!doctype html>
<html>
<body>
<form method="post">
    <input type="checkbox" name="test[]" value="0"/>
    <input type="checkbox" name="test[]" value="1"/>
    <input type="checkbox" name="test[]" value="2"/>
    <input type="checkbox" name="test[]" value="3"/>
    <input type="checkbox" name="test[]" value="4"/>
    <input type="submit"/>
</form>

<pre><?php var_dump($_POST); ?></pre>
</body>
</html>

非表示のフィールドを保持し、チェックボックス要素で値を繰り返したくない場合は、配列の配列キーをチェックボックスの値として使用することもできます。

<?php
$i = 0;
foreach($email as $e) {
    echo "<div>
        <span><input type='checkbox' class='case' name='case[]' value='".$i."'/></span>
        <div class='row'>".$e['name']."
            <input name='cname['".$i."']' type='hidden' value =".$e['name']."></div>
        <div class='row'>".$e['email']."
            <input name='cemail['".$i."']' type='hidden' value =".$e['email']."></div>
        </div><div class='line'></div>";
    $i++;
}

たとえば、 に値 2、4、および 8 が含まれている場合$_POST['case']、探している電子メールは$_POST['cemail'][2]$_POST['cemail'][4]およびにあり$_POST['cemail'][8]ます。$_POST['cname']もちろん、同じことが当てはまります。

于 2013-02-24T18:21:31.103 に答える
0

まず第一に、formタグの引数に間違いがあります:

<form type="post"

これは読む必要があります

<form method="post"

次に、nameとe-mailをinputs namedcname[]とに格納cemail[]するので、それらはそれぞれ$_POST['cname']$_POST['cemail']変数に渡されます。配列として渡されるように名前を付けていることに注意してください。実際には配列です。これには、入力コントロールの$_POST['cname']キーと値のペアと値属性が含まれています。0したがって、実際には、名前と電子メールは変数に $_POST['cname'][0]なり$_POST['cemail'][0]ます。

PHPマニュアルの「フォームの処理」セクションを分析して読んでください。

于 2013-02-24T17:45:40.893 に答える