根据选择的服务更新选择成员

时间:2013-06-06 23:20:27

标签: php mysql arrays

基本上,度假村提供四项服务:

services (Table with all resort services)
ser_id    ser_name
   1      Breakfast
   2      Dinner
   3      Towels
   4      Taxi

会员可以选择在度假村预订时想要的服务。在chosen_services表中有三个选项,它们适用于相应的成员案例:

  1. 选择个人服务[会员6案例]
  2. 一次选择所有服务[会员7案例]
  3. 一次选择所有服务,然后取消选择个别服务[会员5个案例]
  4. 为了使事情更清楚,这就是selected_services表的样子:

    chosen_services (Table with all member chosen resort services)
    resort_id    mem_id    ser_id    chosen_type
        2           5         0          all
        2           5         1       cancelled
        2           5         2       cancelled
        2           6         4         chosen
        2           7         0          all
    

    如果任何服务的价格发生变化,我们需要提取选择该服务的成员,并通过电子邮件向他们发送更改。

    我已经坚持了几个小时,我们怎么能让这个东西起作用?

1 个答案:

答案 0 :(得分:1)

根据您的评论进行修改:

我可能会考虑添加服务包的概念,以便您可以引入两个新表(packages和packages_to_services)

表格可能包含以下字段

packages
--------

pack_id    pack_name
    1      Breakfast Package
    2      Dinner Package
    3      Towels Package
    4      Taxi Package
    5      All Services Package

packages_to_services
--------------------

pack_id     ser_id
   1           1
   2           2
   3           3
   4           4
   5           1
   5           2
   5           3
   5           4

您可以将chosen_services表更改为chosen_packages表,如下所示

resort_id    mem_id    pack_id    cancelled
    2           5         5          1
    2           5         3          0
    2           5         4          0
    2           6         4          0
    2           7         5          0

您可以查询所有信息,例如

SELECT DISTINCT cp.mem_id 
FROM chosen_packages AS cp
INNER JOIN packages_to_services AS pts
  ON cp.pack_id = pts.pack_id
WHERE cp.resort_id = 2
AND pts.ser_id = 2
AND cp.canceled = 0

请注意,您的应用程序需要有逻辑来理解当成员5取消选择服务1和2时,他实际上取消了包5并添加了包3和4。

此外,如果您需要在包中添加或删除服务,它只是packages_to_services表上的记录插入/删除,无需更新任何其他表,因为所有用户都注册了该包会自动接收服务变更。