51

ここでいくつかの例を探しましたが、それらの多くは、PHPを理解するには高度すぎるか、またはそれらの例が独自のプロジェクトに固有のものであるかのいずれかです。私は現在、PHPフォームの非常に基本的な部分に苦労しています。

それぞれ異なる値が割り当てられたいくつかのチェックボックスを使用してフォームを作成しようとしています。これらを変数(配列?)に送信して、後でエコー/使用できるようにします。私の場合は、チェックした値を次の場所に送信します。 Eメール。

これまでにいくつかのバリエーションを試しましたが、それに最も近いのはこれです...

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar' value='Option One'>1<br>
    <input type='checkbox' name='checkboxvar' value='Option Two'>2<br>
    <input type='checkbox' name='checkboxvar' value='Option Three'>3
    </td>
</tr>
</table>
<input type='submit' class='buttons'>
</form>

<?php
$checkboxvar[] = $_REQUEST['checkboxvar'];
?>

$checkboxvar[]をメールにエコーする場所。私はこれについて完全に間違っていますか?私が持っていたもう1つのアイデアは、多くのifステートメントを使用することでした。

4

6 に答える 6

87
<form method='post' id='userform' action='thisform.php'> <tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[]' value='Option One'>1<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Three'>3
    </td> </tr> </table> <input type='submit' class='buttons'> </form>

<?php 
if (isset($_POST['checkboxvar'])) 
{
    print_r($_POST['checkboxvar']); 
}
?>

フォーム名を配列として渡すと、変数自体を使用してすべてのチェックボックスにアクセスできます。変数自体が配列になります。

チェックしたオプションをメールにエコーするには、次のようにします。

echo implode(',', $_POST['checkboxvar']); // change the comma to whatever separator you want

必要に応じて、入力を常にサニタイズする必要があることに注意してください。

記録のために、これに関する公式ドキュメントが存在します:http: //php.net/manual/en/faq.html.php#faq.html.arrays

于 2012-12-24T23:08:52.503 に答える
22

[]入力タグに属性の名前を追加します

 <form action="" name="frm" method="post">
<input type="checkbox" name="hobby[]" value="coding">  coding &nbsp
<input type="checkbox" name="hobby[]" value="database">  database &nbsp
<input type="checkbox" name="hobby[]" value="software engineer">  soft Engineering <br>
<input type="submit" name="submit" value="submit"> 
</form>

PHPコードの場合:

<?php
 if(isset($_POST['submit']){
   $hobby = $_POST['hobby'];

   foreach ($hobby as $hobys=>$value) {
             echo "Hobby : ".$value."<br />";
        }
}
?>
于 2013-11-01T20:01:53.080 に答える
5

forLoopでこれを試してください

<form method="post">
<?php
for ($i=1; $i <5 ; $i++) 
{ 
    echo'<input type="checkbox" value="'.$i.'" name="checkbox[]"/>';
} 
?>
<input type="submit" name="submit" class="form-control" value="Submit">  
</form>

<?php 
if(isset($_POST['submit']))
{
    $check=implode(", ", $_POST['checkbox']);
    print_r($check);
}     
?>
于 2017-04-19T07:13:06.597 に答える
4

値を配列として送信するには、角かっこ表記を使用する必要があります。

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[]' value='Option One'>1<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Two'>2<br>
    <input type='checkbox' name='checkboxvar[]' value='Option Three'>3
    </td>
</tr>
</table>
<input type='submit' class='buttons'>
</form>

ただし、チェックされたチェックボックスの値のみが送信されることに注意してください。

于 2012-12-24T23:09:12.597 に答える
1

また、このようにサーバーに送信される配列にカスタムインデックスを含めることができることを忘れないでください

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <input type='checkbox' name='checkboxvar[4]' value='Option One'>4<br>
    <input type='checkbox' name='checkboxvar[6]' value='Option Two'>6<br>
    <input type='checkbox' name='checkboxvar[9]' value='Option Three'>9
    </td>
</tr>
<input type='submit' class='buttons'>
</form>

idこれは、サーバー配列内の個々のオブジェクトaccounts (たとえば)を使用してデータをサーバーに送り返し、サーバーで同じものを認識したい場合に特に便利です。

<form method='post' id='userform' action='thisform.php'>
<tr>
    <td>Trouble Type</td>
    <td>
    <?php foreach($accounts as $account) { ?>
        <input type='checkbox' name='accounts[<?php echo $account->id ?>]' value='<?php echo $account->name ?>'>
        <?php echo $account->name ?>
        <br>
    <?php } ?>
    </td>
</tr>
<input type='submit' class='buttons'>
</form>

<?php 
if (isset($_POST['accounts'])) 
{
    print_r($_POST['accounts']); 
}
?>
于 2019-12-27T07:56:21.080 に答える
-1
if (isset($_POST['submit'])) {

for($i = 0; $i<= 3; $i++){

    if(isset($_POST['books'][$i]))

        $book .= ' '.$_POST['books'][$i];
}
于 2016-10-06T08:35:16.543 に答える