PHP:将多个复选框值插入一个MySQL列

时间:2014-12-20 09:29:23

标签: javascript php jquery mysql checkbox

我想编写一个简单的PHP函数来插入10和20复选框的值。现在,问题是:我应该在MySQL表的单个列中插入所有值,还是应该使用单独的表?

我的主要目标是将多个复选框的值插入MySQL,然后更新它们。如果我选中了7个复选框,并且在一段时间后我想要从7更新到5,它将如何从表列中删除值?

请帮我一些简单的PHP示例,我应该添加什么类型的MySQL字段,因为我想插入数字复选框值和其他字段中的复选框标签。

这是我的HTML

<form method="post" action="">
   Games You Like: <br/>
   <input type="checkbox" name="games[]" value="1"><label>Football</label><br>
   <input type="checkbox" name="games[]" value="2"><label>Basket Ball</label><br>
   <input type="checkbox" name="games[]" value="3"><label>Pool</label><br>
   <input type="checkbox" name="games[]" value="4"><label>Rugby</label><br>
   <input type="checkbox" name="games[]" value="5"><label>Tennis</label><br>
   <input type="checkbox" name="games[]" value="6"><label>Cricket</label><br>
   <input type="checkbox" name="games[]" value="7"><label>Table Tennis</label><br>
   <input type="checkbox" name="games[]" value="8"><label>Hockey</label><br>
   <input type="submit" name="submit" value="submit">
</form>

5 个答案:

答案 0 :(得分:12)

试试这整个例子,

表格结构

CREATE TABLE IF NOT EXISTS `games` (
  `id` int(12) NOT NULL AUTO_INCREMENT,
  `game_name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;
<?php
include_once("yourconfig.php"); //include your db config file
extract($_POST);
$check_exist_qry="select * from games";
$run_qry=mysql_query($check_exist_qry);
$total_found=mysql_num_rows($run_qry);
if($total_found >0)
{
    $my_value=mysql_fetch_assoc($run_qry);
    $my_stored_game=explode(',',$my_value['game_name']);
}

if(isset($submit))
{
    $all_game_value = implode(",",$_POST['games']);
    if($total_found >0)
    {
        //update
        $upd_qry="UPDATE games SET game_name='".$all_game_value."'";
        mysql_query($upd_qry);

    }
    else
    {
        //insert
        $ins_qry="INSERT INTO games(game_name) VALUES('".$all_game_value."')";
        mysql_query($ins_qry);
    }
}

?>
<form method="post" action="">
Games You Like: <br/>
    <input type="checkbox" name="games[]" value="1" <?php if(in_array(1,$my_stored_game)){echo "checked";}?>><label>Football</label><br>
    <input type="checkbox" name="games[]" value="2" <?php if(in_array(2,$my_stored_game)){echo "checked";}?>><label>Basket Ball</label><br>
    <input type="checkbox" name="games[]" value="3" <?php if(in_array(3,$my_stored_game)){echo "checked";}?>><label>Pool</label><br>
    <input type="checkbox" name="games[]" value="4" <?php if(in_array(4,$my_stored_game)){echo "checked";}?>><label>Rugby</label><br>
    <input type="checkbox" name="games[]" value="5" <?php if(in_array(5,$my_stored_game)){echo "checked";}?>><label>Tennis</label><br>
    <input type="checkbox" name="games[]" value="6" <?php if(in_array(6,$my_stored_game)){echo "checked";}?>><label>Cricket</label><br>
    <input type="checkbox" name="games[]" value="7" <?php if(in_array(7,$my_stored_game)){echo "checked";}?>><label>Table Tennis</label><br>
    <input type="checkbox" name="games[]" value="8" <?php if(in_array(8,$my_stored_game)){echo "checked";}?>><label>Hockey</label><br>
    <input type="submit" name="submit" value="submit">
</form>

这只是我在本例中添加的基本示例和查询,您可以从这个基本示例中学习,我认为这对您非常有用...如果对此解决方案给出正确答案有用

Db Table Stored Output

Form Output

答案 1 :(得分:1)

使用implode函数将返回的数组转换为字符串,然后将其按正常方式插入数据库

if(isset($_POST['submit'])){
   $result = implode(",",$_POST['games']);

}

希望这会对你有所帮助。 问候 伊姆兰卡西姆

答案 2 :(得分:0)

我将游戏名称放入括号并将其值更改为true:

<form method="post" action="">
Games You Like: <br/>
<input type="checkbox" name="games[Football]" value="true"><label>Football</label><br>
<input type="checkbox" name="games[Basket]" value="true"><label>Basket Ball</label><br>
<input type="checkbox" name="games[Pool]" value="true"><label>Pool</label><br>
<input type="checkbox" name="games[Rugby]" value="true"><label>Rugby</label><br>
<input type="checkbox" name="games[Tennis]" value="true"><label>Tennis</label><br>
<input type="checkbox" name="games[Cricket]" value="true"><label>Cricket</label><br>
<input type="checkbox" name="games[Table]" value="true"><label>Table Tennis</label><br>
<input type="checkbox" name="games[Hockey]" value="true"><label>Hockey</label><br>
<input type="submit" name="submit" value="submit">
</form>

提交后,这将产生如下数组:

$_POST["games"] = Array ( [Tennis] => true [Cricket] => true [Table] => true ) 
// all other values false

如果将数组存储为数据库中的JSON字符串,则可以轻松存储并稍后操作此数组。为此,您需要一个varchar或text列。

json_encode($_POST["games"])
// {"Tennis":"true","Cricket":"true","Table":"true"}

答案 3 :(得分:0)

请你试试这个

<?php
if(isset($_POST['submit']))
{
//in here you get games array
   $mygames = $_POST['games'];  
}

?>


<form method="post" action="">
Games You Like: <br/>
<input type="checkbox" name="games[]" value="1"><label>Football</label><br>
<input type="checkbox" name="games[]" value="2"><label>Basket Ball</label><br>
<input type="checkbox" name="games[]" value="3"><label>Pool</label><br>
<input type="checkbox" name="games[]" value="4"><label>Rugby</label><br>
<input type="checkbox" name="games[]" value="5"><label>Tennis</label><br>
<input type="checkbox" name="games[]" value="6"><label>Cricket</label><br>
<input type="checkbox" name="games[]" value="7"><label>Table Tennis</label><br>
<input type="checkbox" name="games[]" value="8"><label>Hockey</label><br>
<input type="submit" name="submit" value="submit">
</form>

答案 4 :(得分:0)

首先非常直截了当,我更喜欢从不同的复选框中做这样的名字

BasketBall;Cricket;Tennis

你可以通过

来做到这一点
implode(";",$array);

然后在mySQL表中写一下......

获取这些值只需使用

$array = explode(";",$urVariable);

对于不同的值,请使用

numberOne = $array[1]; // returns Cricket

更改任何值使用只需获取值并在“;”中重写形式..

我喜欢这个,因为它很容易实现并完美地完成工作!