-1

我正在 MySQL 中创建一个庞大的关系数据库,并使用 PHP 来处理表单。MySQL 表具有以下字段:

  • 服务器名称
  • Location_id
  • 位置_联系方式
  • app_contact_O
  • app_contact_Contact
  • OS_id
  • 数据库_id
  • 供应商 ID
  • 最后更新
  • 更新人

对于每个服务器名称,可以有多个位置联系人、app_contact_O、app_contact_Contacts 和 Database_id。

多个字段通过下拉菜单输入,您可以在其中选择多个选项。

如何将多个字段输入数据库。我尝试了许多不同的解决方案,但没有找到任何可行的方法。

我可以使用 foreach() 循环从单个下拉菜单将结果输入 MySQL,但我需要多个帮助。

我的这个页面的代码有 438 行长……我认为发布它对社区没有用处。

==========================
好的,让我用一个简短的形式来澄清一下:

我有以下表格:

    <form action="" method="post">
    Server Name: <input type="text" name="Server_Name" size="40" /><br />

    Location: <select name="servLocation">
    <option value="none" selected="selected">Select Location</option>
    <?php
    $getLocation=mysql_query("SELECT * FROM locationTable ORDER BY Location");
    while($r=mysql_fetch_array($getLocation)){
    extract($r);
    echo "<option value='" . $Location_id . "'>" . $Location . ": " . $City . ", " . $Country . ", " . $GSL_id . "</option>";
    }
    ?>
    </select>
    <br />

    Location Contact: 
    <select name="servLocCon[]" multiple='multiple' size="3">
    <option value="none" selected="selected">Select Contact</option>
    <?php
    $getContacts=mysql_query("SELECT * FROM hpatt.contacts ORDER BY Last_Name");
    while($r=mysql_fetch_array($getContacts)){
    extract($r);
    echo "<option value='" . $Contact_id . "'>" . $Last_Name . ", " . $First_Name . "</option>";
    }
    ?>
    </select><br />

    Application Contact:
    <select name="servAppCon[]" multiple='multiple' size="3">
    <option value="none" selected="selected">Select Contact</option>
    <?php
    $getContactsB=mysql_query("SELECT * FROM hpatt.contacts ORDER BY Last_Name");
    while($r=mysql_fetch_array($getContactsB)){
    extract($r);
    echo "<option value='" . $Contact_id . "'>" . $Last_Name . ", " . $First_Name . "</option>";
    }
    ?>
    </select><br />

    <input type="submit" name="submit" value="Submit" />
    </form>

好的,所以我想做的是让用户可以选择为 1 个服务器选择多个位置联系人和应用程序联系人。这是使用大小和多个属性来完成的。然后我想在 MySQL 表中插入一条单独的记录,如下所示:

记录 1:ServerA、Wendel Holmes、John Smith

记录 2:ServerA、Wendy Martin、John Smith

记录 3:ServerA、Wendel Holmes、Juanita Gomez

记录 4:ServerA、Wendy Martin、John Smith

这样每一种可能性都得到处理,然后可以被提取出来。我可以通过单独创建记录来手动执行此操作,但 PHP 应该能够执行此操作。

4

2 回答 2

0

我不确定我是否完全跟随你,但说我有一张桌子:

SID  Server Name
1    S1
2    S2
3    S3

我会制作一个外部参照表,例如:

SID   Prop1   Prop2 ...  PropX
1      1        2          11
1      2        5          12
2      1        1          33
3      4        2          4

在这种情况下,SID 在外部参照表中被多次使用。

每个道具实际上是其他表的 ID。

然后我在外部参照表上创建一个多列键以防止重复行。

您可以通过与单选类似的方式获取多选的所有 POST/GET 结果。

例如,使用您的serverLocCon[]

$sLocCon = $_POST['servLocCon'];

foreach ($sLocCon as $item) 
...
于 2012-05-30T15:41:14.573 回答
0

例如对于具有多个值的位置字段,您可以创建一个具有相同名称的表(位置:id,名称)和另一个名为location_server(id_location,id_server) 的表

于 2012-05-30T15:55:27.717 回答