从复选框中获取所有的值?

10

有没有一种简单的方法来获取多个复选框的值并将它们存储在数据库中?

<?php
if(isset($_POST['go'])){
   $fruit = $_POST['fruit'].",";
   echo $fruit;
   // if you selected apple and grapefruit it would display apple,grapefruit
}
?>
<form method="post">
Select your favorite fruit:<br />
<input type="checkbox" name="fruit" value="apple" id="apple" /><label for="apple">Apple</label><br />
<input type="checkbox" name="fruit" value="pinapple" id="pinapple" /><label for="pinapple">Pinapple</label><br />
<input type="checkbox" name="fruit" value="grapefruit" id="grapefruit" /><label for="grapefruit">Grapefruit</label><br />
<input type="submit" name="go" />
</form>

1
name="fruit" 更改为 name="fruit[]",删除 $fruit = $_POST...,将 echo $fruit; 更改为 echo implode(',',$_POST['fruit']) - acm
将复选框命名为"name=fruit[]",这样它们就会被发送到一个数组中。 - Michael
3个回答

25

如果您给多个复选框相同的名称并以[]结尾,则返回的值将作为数组。

<input type="checkbox" name="fruit[]" value="apple" />
<input type="checkbox" name="fruit[]" value="grapefruit" />

然后在 PHP 中...

if( isset($_POST['fruit']) && is_array($_POST['fruit']) ) {
    foreach($_POST['fruit'] as $fruit) {
        // eg. "I have a grapefruit!"
        echo "I have a {$fruit}!";
        // -- insert into database call might go here
    }

    // eg. "apple, grapefruit"
    $fruitList = implode(', ', $_POST['fruit']);
    // -- insert into database call (for fruitList) might go here.
}

顺便提一下,请原谅明显的错误,这个例子可能会喊出“我有一个苹果”... 我没有想到让这个例子足够智能来确定何时使用 "a" 和何时使用 "an" :P


5

请将您的输入命名为以下格式:

<input type="checkbox" name="fruit[]" value="apple" id="apple" /><label for="apple">Apple</label><br />
<input type="checkbox" name="fruit[]" value="pinapple" id="pinapple" /><label for="pinapple">Pinapple</label><br />

然后迭代$_POST['fruit']:
if(isset($_POST['fruit']) && !empty($_POST['fruit']))   
    foreach($_POST['fruit'] as $fruit) echo $fruit;

1

补充其他解决方案...

在PHP中,可以使用implode和explode将您的水果数组[]转换为逗号分隔列表。

$valueToStoreInDB = implode(",",$_POST['fruit']);
$fruitAsAnArrayAgain[] = explode(",",$dbvalue);

一旦你拥有了逗号分隔的列表,表示MySQL复选框的良好数据类型是 SET,可以将逗号分隔的列表直接粘贴到插入语句中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接