我有一个像这样的目录表
表名:personality
id | Category
1 | cute
2 | rich
3 | stupid
4 | funny
5 | famous
所有我想做的是使复选框选项与php这个人格表和更新其他表与多个类别
and my form:
<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>}?>
我如何将个性表的类别发布到具有多个类别的其他表中?
结果示例如下:表名:people
name | usr_char
abby | cute,rich,funny
andy | famous,funny
首先,您在输入元素上缺少一个名称。
<input type='checkbox' id='usr_char' name='attribute[]' checked value='$data[category]'>
之后,要获取要更新的people表的值,只需使用
$attributes = implode(",", $_POST["attribute"]);
创建另一个名为people_personality
的表,命令如下:
-
id
<——你的主键 -
person_id
<—您的"People"表中的主键 -
personality_id
<—您的"人格"表中的主键
假设您的People
表中有:
id - name
1 - abby
2 - andy
现在您要分配abby
cute
, rich
和funny
:
INSERT INTO people_personality VALUES ('',1,1),('',1,2),('',1,3)
我的建议是不要尝试在SQL字段中存储多个逗号分隔的值。它有许多缺点,包括:
- 检索单个值是一个繁琐的过程
- 不可读
- 变得难以维护
所以,使用多对多链接表。例如,您可以这样设置表:
表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');