私は6つのオプションがあり、チェックされた値を取得して2ページ目の変数に保存したいです。それをどうやって続けるのですか?
<form action="third.php" method="get">
<!-- Choices -->
Red <input type="checkbox" name="color[]" id="color" value="Red">
Green <input type="checkbox" name="color[]" id="color" value="Green">
Blue <input type="checkbox" name="color[]" id="color" value="Blue">
Cyan <input type="checkbox" name="color[]" id="color" value="Cyan">
Magenta <input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow <input type="checkbox" name="color[]" id="color" value="Yellow">
Black <input type="checkbox" name="color[]" id="color" value="Black">
<!-- Submit -->
<input type="submit" value="submit">
</form>
そしてthird.php
ページ:
$color = $_GET['color'];
echo 'The color is '.$color;
[]
を削除すると、色がオンになり、color[]
のようにすると、次のような通知が表示されます。
配列から文字列への変換
私が欲しいのは、チェックボックスの値で、変数に保存できます。
私のお気に入りであり、多くの人にとって間違いなく、あなたが選択した各色を出力し、画面の下に互いに表示されるforeach
を使用するのが良い方法です。
チェックボックスを使用する場合、foreach
を使用する以外に選択肢はありません。そのため、配列から1つの値のみが返されます。
$_GET
を使用した例を次に示します。ただし、$_POST
を使用できます。適切に機能するには、両方のファイルで両方のディレクティブを一致させる必要があります。
<form action="third.php" method="get">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
third.php
を使用するPHP($ _GETを使用)<?php
$name = $_GET['color'];
// optional
// echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
?>
色として赤、緑、青、シアンを選択したとすると、次のようになります。
赤
緑
青
シアン
色が選択されたかどうかも確認できます。何も選択しないと、別のメッセージが表示されます。
<?php
$name = $_GET['color'];
if (isset($_GET['color'])) {
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}
} else {
echo "You did not choose a color.";
}
?>
リストとして表示するには:(<ul></ul>
は<ol></ol>
に置き換えることができます)
<?php
$name = $_GET['color'];
if (isset($_GET['color'])) {
echo "You chose the following color(s): <br>";
echo "<ul>";
foreach ($name as $color){
echo "<li>" .$color."</li>";
}
echo "</ul>";
} else {
echo "You did not choose a color.";
}
?>
(action="get"
またはaction="post"
ではなく、method="get"
またはmethod="post"
です
Postメソッドを使用してそれを試してください:
<form action="third.php" method="POST">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
およびthird.phpで
または、特定のフィールドの場合、次の値を取得できます。
$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
私が提案するのは、getよりもpostを使用する方が良いことです。ポストVS getとの違いは次のとおりです。
GETリクエストに関する注意事項:
POSTリクエストに関する注意事項:
HTMLコード
<html>
<head></head>
<body>
<form action="output.php" method="post">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
<body>
</html>
PHPコード
<?php
if(isset($_POST['color'])) {
$name = $_POST['color'];
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}} // end brace for if(isset
else {
echo "You did not choose a color.";
}
?>
$_POST['color']
の値は、設定されているかどうかを確認した後にのみ読み取る必要があると思います。
<?php
if(isset($_POST['color'])) {
$name = $_POST['color'];
echo "You chose the following color(s): <br>";
foreach ($name as $color){
echo $color."<br />";
}} // end brace for if(isset
else {
echo "You did not choose a color.";
}
?>
特定の値が選択されている場合、それらを新しい変数に変換する場合:
// Retrieve array color[] and set as variable
$colors = $_GET['color'];
// Use array_search to find the key for "red"
$key_red = array_search('red', $colors);
// If "red" exists, the key will be an integer (or FALSE)
if (is_int($key_red)) {
$red_color = 'Red was selected';
}
foreachは、値の配列を取得する最良の方法です。
ここにサンプルコード:htmlコード:
<form action="send.php" method="post">
Red<input type="checkbox" name="color[]" id="color" value="red">
Green<input type="checkbox" name="color[]" id="color" value="green">
Blue<input type="checkbox" name="color[]" id="color" value="blue">
Cyan<input type="checkbox" name="color[]" id="color" value="cyan">
Magenta<input type="checkbox" name="color[]" id="color" value="Magenta">
Yellow<input type="checkbox" name="color[]" id="color" value="yellow">
Black<input type="checkbox" name="color[]" id="color" value="black">
<input type="submit" value="submit">
</form>
phpcode:
<?php
$name = $POST['color'];
foreach ($name as $color){
echo $color."<br />";
}
?>
おそらくもっと良い方法は、php関数 in_array() を次のように使用することです。
$style='V';//can be 'V'ertical or 'H'orizontal
$lineBreak=($style=='V')?'<br>':'';
$name='colors';//the name of your options
$Legent="Select your $name";//dress it up in a Nice fieldset with a ledgent
$options=array('red','green','blue','orange','yellow','white','black');
$boxes='';//innitiate the list of tickboxes to be generated
if(isset($_REQUEST["$name"])){
//we shall use $_REQUEST but $_POST would be better
$Checked=$_REQUEST["$name"];
}else{
$Checked=array();
}
foreach($options as $option){
$checkmark=(in_array($option,$Checked))?'checked':'';
$nameAsArray=$name.'[]';//we would like the returned data to be in an array so we end with []
$boxes.=($style=='V')?"<span class='label2' align='right'><b>$option : </b></span>":"<b>$option </b>";
$boxes.="<input style='width:2em;' type='checkbox' name='$nameAsArray' id='$option' value='$option' $checkmark >$lineBreak";
}
echo<<<EOF
<html>
<head></head>
<body>
<form name="Update" method="GET" action="{$_SERVER['PHP_SELF']}">\n
<fieldset id="tickboxes" style="width:25em;">
<legend>{$Legent}</legend>
{$boxes}
</fieldset>
<button type="submit" >Submit Form</button>
</form>
<body>
</html>
EOF
;
まず、変数$style
を作成して、オプションを水平または垂直のどちらにするかを設定します。これにより、チェックボックスの表示方法はまれになります。次に、オプションに$name
を設定します。これは、オプションを保持する配列の名前として必要です。ここでループを作成して、配列$options
で指定された各オプションを作成し、返されたフォームでチェックする必要がある場合は各アイテムをチェックします。これにより、チェックボックスを使用してフォームを再現する方法が簡素化されるはずです。
印刷のためだけに、次のように使用できます。
print_r($_GET['color']);
または
var_dump($_GET['color']);
とても簡単です。
チェックボックスフィールドは入力テキストのようなものです。フィールドに何も書き込まない場合、フィールドが存在しないと表示されます。
<form method="post">
<input type="checkbox" name="check">This is how it works!<br>
<button type="submit" name="submit">Submit</button>
</form>
<?php
if(isset($_POST['submit'])) {
if(!isset($_POST['check'])) {
echo "Not selected!";
}else{
echo "Selected!";
}
}
?>