使用多个类别和复选框更新SQL(PHP)

时间:2013-06-16 05:00:03

标签: php

我有这样的类别表

表名:个性

 id | Category
  1 | cute
  2 | rich
  3 | stupid
  4 | funny
  5 | famous

我想要做的就是使用php为这个个性表制作复选框选项并更新其他具有多个类别的表

和我的表格:

  <form>
    Name : <input name="user" type="text" id="user" value="<?php echo $line['user'];?>" />
    Personality : <?php $personality=mysql_query("select * from personality");
                  while($data=mysql_fetch_array($personality)){
                  $check = ($line['usr_char']==$data['category'])?"checked" : "";
                  <label for='$data[kategori]'>
                  <input type='checkbox' id='usr_char' checked value='$data[category]'>
                  <span class='custom checkbox $check'></span> $data[category]</label><br>}?>

如何将个性表类别发布到具有多个类别的其他表中?

以下是结果示例: 表名:人

  name | usr_char
  abby | cute,rich,funny
  andy | famous,funny

3 个答案:

答案 0 :(得分:0)

创建另一个名为people_personality的表,其中包含以下内容:

  • id&lt; - 您的主键
  • person_id&lt; - 来自您&#34; People&#34;的主键表
  • personality_id&lt; - 来自您&#34; Personality&#34;的主键表

假设您有People表:

id - name
1  - abby
2  - andy

现在您要指定abby cuterichfunny

INSERT INTO people_personality VALUES ('',1,1),('',1,2),('',1,3)

答案 1 :(得分:0)

如果你在输入元素上缺少一个名字。

<input type='checkbox' id='usr_char' name='attribute[]' checked value='$data[category]'>

之后在获取更新人员表的值时,您只需使用

$attributes = implode(",", $_POST["attribute"]);

答案 2 :(得分:0)

我的建议是不要尝试在SQL字段中存储多个逗号分隔值。它有许多缺点,包括

  • 检索单个值是一个繁琐的过程
  • 不可读
  • 变得难以维护

所以,改为使用many-to-many link table.例如,您可以这样使用表格:

表1:

Id | Category

 1 | cute
 2 | rich
 3 | stupid
 4 | funny
 5 | famous

表2:

Name | Usr_char

abby | cute
abby | rich
abby | funny
andy | famous
andy | funny

通过这种方式可以更轻松地在以后添加字符并删除它们甚至选择它们。

要检索:

SELECT * FROM table_name WHERE Name = 'abby';

添加:

INSERT INTO table_name (Name, Usr_char) VALUES ('abby', 'cute');