代码之家  ›  专栏  ›  技术社区  ›  localhost

在提交时获取复选框值

  •  69
  • localhost  · 技术社区  · 12 年前

    我有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[] 我收到通知说:

    数组到字符串的转换

    我想要的是复选框的值,这样我就可以将其存储在变量中。

    10 回复  |  直到 11 年前
        1
  •  148
  •   Sarkar Funk Forty Niner    5 年前

    一个好的方法是利用 foreach 它将输出您选择的每种颜色,并在屏幕上一个在另一个下面显示。

    当谈到使用复选框时,你别无选择,只能使用 前臂 ,这就是为什么您只能从数组中返回一个值的原因。

    下面是一个使用 $_GET 。但是,您可以使用 $_POST 并且需要使两个指令在两个文件中匹配才能正常工作。

    ###HTML表单

    <form action="third.php" method="get">
        Red<input type="checkbox" name="color[]" value="red">
        Green<input type="checkbox" name="color[]" value="green">
        Blue<input type="checkbox" name="color[]" value="blue">
        Cyan<input type="checkbox" name="color[]" value="cyan">
        Magenta<input type="checkbox" name="color[]" value="Magenta">
        Yellow<input type="checkbox" name="color[]" value="yellow">
        Black<input type="checkbox" name="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 />";
    }
    
    ?>
    

    假设选择了红色、绿色、蓝色和青色作为颜色,则会显示如下:

    红色
    绿色
    蓝色
    青色


    ##选项#2

    您也可以检查是否选择了颜色。如果未选择任何选项,则会显示一条单独的消息。

    <?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.";
    }
    
    ?>
    
        2
  •  16
  •   Funk Forty Niner    12 年前

    (不是 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
    
        3
  •  10
  •   Community Mohan Dere    10 年前

    我的建议是,与其得到,不如使用post。这是后VS获得之间的一些区别

    关于GET请求的一些注意事项:

    1. 可以缓存GET请求
    2. GET请求保留在浏览器历史记录中
    3. GET请求可以添加书签
    4. 处理敏感数据时不应使用GET请求
    5. GET请求有长度限制
    6. GET请求应仅用于检索数据

    关于POST请求的一些注意事项:

    1. POST请求从不缓存
    2. POST请求不会保留在浏览器历史记录中
    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.";
    
        }
    
        ?>
    
        4
  •  3
  •   Clyff    7 年前

    这很简单。

    复选框字段类似于输入文本。如果你不在字段中写任何内容,它就会说字段不存在。

    <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!";
        }
    }
    ?>
    
        5
  •  2
  •   manikandanpachaiyappan    7 年前

    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>
    

    php代码:

    <?php
    
    $name = $POST['color'];
    
    
    
    foreach ($name as $color){ 
        echo $color."<br />";
    }
    
    ?>
    
        6
  •  1
  •   Vaibhavraj Roham    11 年前

    仅用于打印,您可以按以下方式使用:

    print_r($_GET['color']);
    

    var_dump($_GET['color']);
    
        7
  •  1
  •   Blacboy    10 年前

    我认为 $_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.";
    
    }
    
    ?>
    
        8
  •  1
  •   Cor Cool    9 年前

    也许更好的方法是使用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 ,然后我们检查每个项目是否应该在返回的表单中进行检查。我相信这应该简化我们使用复选框复制表单的方式。

        9
  •  1
  •   Al Foиce Ñ« Rizier123    9 年前
    //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']);
    
        10
  •  1
  •   user8890598 user8890598    8 年前

    如果要将特定值转换为新变量(如果已选择),请执行以下操作:

    // 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';
    }
    
    推荐文章