从PHP动态添加sql中的详细信息


Dynamic addition of details in sql from PHP

我为以下模型编写了一个脚本:

假设有5个事件。对于要注册事件的用户,他们需要输入一些详细信息。注册是以团队的形式进行的,但每个项目的成员数量不同。

在我的sql表events中有一行members,它存储所有5个事件的成员数。

使用存储在members行中的数据,我可以为表的HTML显示运行for-loop,用户可以在其中输入他和他的团队的详细信息。

但我很困惑,我将如何对php部分进行编码?我知道php,获取信息并将其存储在sql数据库中,但在这种特殊情况下,我必须为所有事件编写单独的php脚本,因为成员数量不相同。

编辑#1

例如:

**event1**: number of members: 5 (mem_1, mem_2, mem_3, mem_4, mem_5) 
**event2**: number of members: 3 (mem_1, mem_2, mem_3)
**event3**: number of members: 2 (mem_1, mem_2)
**event4**: number of members: 4 (mem_1, mem_2, mem_3, mem_4)
**event5**: number of members: 6 (mem_1, mem_2, mem_3, mem_4, mem_5, mem_6)

mem_x字段存储成员的名称。

那么,我如何为注册编写一个php脚本呢。我是否必须为所有活动制定单独的功能,因为每个活动的成员数量不同。

检查输入的数据以确保输入的成员数与事件允许的成员数相匹配。

然后在数据上循环,将每个(新)成员添加到members表,将member_id和event_id添加到memembers_events连接表(添加与成员数相等的行数)。

如果是我,我的表将包含以下字段:

Column Name        Example Value
member_id          [auto increment]
member_group       Step1
member_type        text
member_order       1
member_title       First Name
member_field_name  fname
member_default     enter first name
member_max_length  25

然后,在PHP中,您可以执行以下查询:

$fields = mysql_query("Select * From [member table] Where member_group = 'Step1' Order By member_order;")
while ($field = mysql_fetch_assoc($fields)) {?>
    <label for="<?= $field['member_field_name']; ?>">
       <?= $field['member_title']; ?>
       <? switch ($field['member_type']) {
           case "text":
               echo "<input type='"text'" name='"".$field['member_field_name']."'" value='"".$field['member_default']."'" />";
               break;
       }?>
    </label>
<?}

然后,在处理页面时,只需再次从数据库中获取字段列表(用于字段名称)并处理页面。

您不需要根据成员数量而不同的函数。例如,您可以将所有插入的成员存储在一个数组中,然后执行类似的操作

foreach($members as $member){
   mysql_query ( "INSERT INTO members (name,eventID) VALUES (".$member['name'].",".$members['eventID'].")" );
}

其中$members是包含成员名称的数组。

这是你想知道的吗?