11

チェックボックスの配列を投稿しています。そして、私はそれを機能させることができません。シンプルにするために、 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;
}
4

5 に答える 5

24

$ _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;
  }
}
?>
于 2012-05-18T15:29:31.300 に答える
14

次のコードを使用しました。

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

これがあなたの質問に直接答えるものではないことはわかっていますが、参照する実用的な例を提供し、問題の解決に役立つことを願っています.

于 2012-05-18T15:41:45.817 に答える
5

代わりに implode() 関数を確認してください。これにより、配列がリストに変換されます。最初のパラメーターは、アイテムをどのように分離するかです。ここでは、コンマの後にスペースを入れて使用しています。

$invite = implode(', ', $_POST['invite']);
echo $invite;
于 2015-02-02T21:05:45.653 に答える
0
// 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];
于 2012-05-18T15:24:52.567 に答える
0

<form>要素が foreach ループ内にあるため、複数のフォームを生成しています。1 つのフォームに複数のチェックボックスが必要だと思います。

これを試して...

<form method="post">
foreach{
<?php echo'
<input id="'.$userid.'" value="'.$userid.'"  name="invite[]" type="checkbox">
<input type="submit">';
?>
}
</form>
于 2012-05-18T15:25:55.407 に答える