在提交时获取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请求的一些说明:

  1. GET请求可以被caching
  2. GET请求保留在浏览器历史logging中
  3. GET请求可以加书签
  4. 处理敏感数据时绝不能使用GET请求
  5. GET请求有长度限制
  6. GET请求只能用于检索数据

关于POST请求的一些说明:

  1. POST请求从不caching
  2. POST请求不会保留在浏览器历史logging中
  3. POST请求不能被添加书签
  4. 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']);