在提交时获取checkbox值
我有6个选项,我想获得检查值存储在第二页上的variables。 我该如何继续呢?
<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[]
我收到一个通知说:
数组到string的转换
我想要的是检查的值,checkbox,所以我可以将其存储在variables。
一个很好的方法是我的最爱,我相信很多人都会使用foreach
来输出你select的每种颜色,然后在屏幕上出现。
说到使用checkbox,你没有select,只能使用foreach
,这就是为什么你只能从数组中返回一个值。
这是一个使用$_GET
的例子。 但是,您可以使用$_POST
,并且需要使两个文件中的两个指令匹配才能正常工作。
HTML FORM
<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>
PHP(使用$ _GET)使用third.php
作为您的处理程序
<?php $name = $_GET['color']; // optional // echo "You chose the following color(s): <br>"; foreach ($name as $color){ echo $color."<br />"; } ?>
假设select红色,绿色,蓝色和青色作为颜色,将会出现如下所示:
红
绿色
蓝色
青色
选项#2
您也可以检查是否select了颜色。 如果没有select,则会出现单独的信息。
<?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."; } ?>
其他选项:
以列表forms出现:( <ul></ul>
可以replace为<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."; } ?>
旗帜:(2016年8月5日)
今天早上我收到了2条评论,我的评论被删除了。 为什么? 谁这样做,是明显地这样做的恶意。 答案没有收到任何东西,只是upvotes现在这个。 我的意思是认真的 跆拳道? – Fred -ii- 1小时前谢绝了 – 人们可以自由投票,只要你没有被定位。 我没有看到这方面的证据。 您对投票的评论是噪音,标记如此,并被删除。
回答这个:这只是事情; 我是。
(这不是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>
和第三.php
或者你为colud获得价值的一个pericular领域:
$_POST['color'][0] //for RED $_POST['color'][1] // for GREEN
我build议的是,它比使用后更好。 这里是VS后得到的一些区别
关于GET请求的一些说明:
- GET请求可以被caching
- GET请求保留在浏览器历史logging中
- GET请求可以加书签
- 处理敏感数据时绝不能使用GET请求
- GET请求有长度限制
- GET请求只能用于检索数据
关于POST请求的一些说明:
- POST请求从不caching
- POST请求不会保留在浏览器历史logging中
- POST请求不能被添加书签
- 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."; } ?>
只要打印,你可以使用如下:
print_r($_GET['color']);
要么
var_dump($_GET['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."; } ?>
也许更好的方法是像这样使用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 ;
首先,我们创build了一个variables$style
来设置我们是否需要水平或垂直方向的选项。 这将无法显示我们如何显示我们的checkbox。 接下来我们为我们的选项设置$name
,这是我们想要保留选项的数组名称。 我在这里创build了一个循环来构造数组$options
给出的每个选项,然后检查每个项是否应该在返回的表单中进行检查。 我相信这应该简化我们可以用checkbox复制表单的方式。
如果您想要将特定值转换为新variables(如果已select):
// 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'; }
//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']);