复杂的复选框表格

时间:2012-03-26 11:53:27

标签: php mysql checkbox

我该如何做这项工作?

我有一个包含3个表的数据库。

表1:类别
表2:组织
表3:具有2个列的链接表:类别ID,组织ID。

我想制作这个界面:

http://www.glowong.nl/Uploads/26-03-2012-13-46-52.jpg

当我点击'Opslaan / save'时。新连接应写入表3.

我不知道从哪里开始。

2 个答案:

答案 0 :(得分:1)

我不知道这与您的用户界面有什么关系,但您似乎要求的是INSERT INTO命令从SELECT获取其数据。例如:

INSERT INTO table3 ( category, organization )
  SELECT categ.name,org.name FROM categ, org
    WHERE categ.id=org.categ;

但是如果你试图将这部分用作用户界面,那么也许你真的不希望这是第三个和PHP中的数组一样多。用于填充HTML表单。我认为我对数据的存储方式知之甚少,无法以有用的方式对其进行评论。

答案 1 :(得分:1)

乍一看,我会这样做:

1)当您呈现页面HTML时,使每个组织成为一个命名的复选框数组,其中值是类别,如下所示:

<INPUT type="checkbox" name="naam1[]" value="Hosting"> 
<INPUT type="checkbox" name="naam1[]" value="Crediteur">
<INPUT type="checkbox" name="naam1[]" value="Debiteur">
....
<INPUT type="checkbox" name="naam2[]" value="Hosting"> 
<INPUT type="checkbox" name="naam2[]" value="Crediteur">
<INPUT type="checkbox" name="naam2[]" value="Debiteur">

2)提交表单后,循环遍历您的组织/类别:

foreach ($orgs as $org) {
    foreach ($categories as $category) {
         if (in_array($category,$_POST[$org])) {
             //the category for the given org was checked; 
             //make sure this relationship exists in the DB
         } else {
            //category for this org not checked;
            //if the relationship exists in the DB, delete it
         }
    }
}

我认为这样的事情会起作用。如果你有一大堆orgs和类别,你可能会遇到问题,因为我们在循环中进行了笛卡尔式连接,但如果你有很多组织和类别,你可能需要重新考虑你的界面。< / p>