我有6个选项,我想获取选中的值以将它们存储在第二页的变量中。我该如何继续这样做?
<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[]
我会收到通知说:
数组到字符串转换
我想要的是复选的值,复选框,以便我可以将它存储在变量中。
答案 0 :(得分:118)
一个很好的方法,对我来说很受欢迎,对很多人来说,我敢肯定,是使用foreach
输出你选择的每种颜色,并在屏幕上显示在彼此之下。
在使用复选框时,您可以选择使用foreach
,这就是为什么您只从阵列中返回一个值。
以下是使用$_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
$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.";
}
?>
答案 1 :(得分:14)
(不是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中
或者对于perrite字段,你可以获得以下值:
$_POST['color'][0] //for RED
$_POST['color'][1] // for GREEN
答案 2 :(得分:9)
我的建议是,使用post比使用post更好。这里有一些VS VS
之间的区别关于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.";
}
?>
答案 3 :(得分:0)
仅用于打印,您可以使用如下:
print_r($_GET['color']);
或
var_dump($_GET['color']);
答案 4 :(得分:0)
我认为$_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.";
}
?>
答案 5 :(得分:0)
也许更好的方法是使用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
中给出的每个选项,然后我们检查每个项目是否应该在我们返回的表单中进行检查。我相信这应该简化我们用复选框复制表单的方式。
答案 6 :(得分:0)
如果要将特定值转换为新变量(如果已选中):
// 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';
}
答案 7 :(得分:0)
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 />";
}
?>
答案 8 :(得分:0)
这很简单。
复选框字段就像输入文本。如果您在该字段中未填写任何内容,则会显示该字段不存在。
<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!";
}
}
?>
答案 9 :(得分:-1)
//retrive check box and gender value
$gender=$row['gender'];
$chkhobby=$row['chkhobby'];
<tr>
<th>GENDER</th>
<td>
Male<input type="radio" name="gender" value="1" <?php echo ($gender== '1') ? "checked" : "" ; ?>/>
Female<input type="radio" name="gender" value="0" <?php echo ($gender== '0') ? "checked" : "" ; ?>/>
</td>
</tr>
<tr>
<th>Hobbies</th>
<td>
<pre><?php //print_r($row);
$hby = @explode(",",$row['chkhobby']);
//print_r($hby);
?></pre>
read<input id="check_1" type="checkbox" name="chkhobby[]" value="read" <?php if(in_array("read",$hby)){?> checked="checked"<?php }?>>
write<input id="check_2" type="checkbox" name="chkhobby[]" value="write" <?php if(in_array("write",$hby)){?> checked="checked"<?php }?>>
play<input id="check_4" type="checkbox" name="chkhobby[]" value="play" <?php if(in_array("play",$hby)){?> checked="checked"<?php }?>>
</td>
</tr>
//update
$gender=$_POST['gender'];
$chkhobby = implode(',', $_POST['chkhobby']);