チェックボックスの配列を投稿しています。そして、私はそれを動作させることができません。 foreachループに適切な構文を含めなかったため、シンプルに保てます。しかし、それは機能しています。私はチェックボックスの代わりにテキストフィールドで同じことをしようとすることでテストし、それはテキストフィールドで動作しました。
<form method="post">
<?php
foreach{
echo'
<input id="'.$userid.'" value="'.$userid.'" name="invite[]" type="checkbox">
<input type="submit">';
}
?>
</form>
ここが機能していない部分です。配列の代わりに「招待」をエコーします。
<?php
if(isset($_POST['invite'])){
$invite = $_POST['invite'];
echo $invite;
}
$ _POST配列には招待配列が含まれているため、次のように読み取ります
<?php
if(isset($_POST['invite'])){
$invite = $_POST['invite'];
echo $invite;
}
?>
配列なので機能しません。すべての値を取得するには、配列をループする必要があります。
<?php
if(isset($_POST['invite'])){
if (is_array($_POST['invite'])) {
foreach($_POST['invite'] as $value){
echo $value;
}
} else {
$value = $_POST['invite'];
echo $value;
}
}
?>
次のコードを使用しました。
<form method="post">
<input id="user1" value="user1" name="invite[]" type="checkbox">
<input id="user2" value="user2" name="invite[]" type="checkbox">
<input type="submit">
</form>
<?php
if(isset($_POST['invite'])){
$invite = $_POST['invite'];
print_r($invite);
}
?>
両方のボックスをチェックしたとき、出力は次のとおりでした。
Array ( [0] => user1 [1] => user2 )
これはあなたの質問に直接答えるものではありませんが、参考になる実用的な例を提供し、問題の解決に役立つことを願っています。
代替としてimplode()関数をチェックしてください。これにより、配列がリストに変換されます。最初のパラメーターは、アイテムを分離する方法です。ここでは、その後にスペースを入れたコンマを使用しました。
$invite = implode(', ', $_POST['invite']);
echo $invite;
// if you do the input like this
<input id="'.$userid.'" value="'.$userid.'" name="invite['.$userid.']" type="checkbox">
// you can access the value directly like this:
$invite = $_POST['invite'][$userid];
あなたの<form>
要素はforeachループ内にあり、複数のフォームを生成しています。 1つのフォームに複数のチェックボックスが必要だと思います。
これを試して...
<form method="post">
foreach{
<?php echo'
<input id="'.$userid.'" value="'.$userid.'" name="invite[]" type="checkbox">
<input type="submit">';
?>
}
</form>