簡體   English   中英

使用多個類別和復選框更新SQL(PHP)

[英]Updating SQL with multiple categories and checkbox (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>}?>

如何將個性表的類別發布到具有多個類別的其他表中?

這是結果的示例:表名稱:people

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

使用以下people_personality創建另一個名為people_personality表:

  • id <-您的主鍵
  • person_id <-您的“人”表中的主鍵
  • personality_id <-您的“ Personality”表中的主鍵

假設您的People表中有:

id - name
1  - abby
2  - andy

現在,您要為abby分配cuterichfunny

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

對於一個,您在輸入元素上缺少名稱。

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

之后,要獲取值以更新您的人員表,只需使用

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

我的建議是不要嘗試在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');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM