0

在其他人的帮助下,我在旅途中得到了一个嵌套循环,它从一个 sql 表中提取月份列表,然后,对于每个月份,它会遍历一个事件表并提取相应的事件。

表结构大致如下:

月表

ID  | MonthShort |  MonthLong
1 | 2012Oct | October 2012
2 | 2012Sep | September 2012 

事件表

ID | MonthID | Event | Guests | Adults | Children
1 | 1 | Wedding | 200 | 150 | 50
2 | 1 | Bar Mitzvah | 100 | 50 | 50
3 | 1 | Funeral | 100 | 50 | 50 
4 | 2 | Birthday | 50 | 30 | 20 
5 | 2 | Birthday | 300 | 200 | 100
6 | 2 | Wedding | 200 | 180 | 20

我的循环工作,以便它用所有可用月份填充菜单 A,然后用该月的所有事件填充菜单 B。然后您可以单击该事件并显示相关信息 - 这是我有点卡住的地方。

我得到的数组类似于以下,来宾数组是我正在尝试的 atm:

$events = array();
$months = array();
$guests = array();

while ($row = mysql_fetch_array($result)) {
  $months[$row["MonthID"]] = $row["MonthLong"];
  $events[$row["MonthID"]][] = $row["Event"];
  $guests[$row["MonthID"]][] = $row["Guests"];
}

我使用 foreach 用 ($events[$x] as $event) 填充菜单 B。每个事件的屏幕都会有一个类似于以下内容的条目,这就是我想要做的(显然我知道这不起作用,但它应该用于说明目的):

echo '来宾人数:' . print_r($guests[$x])

尽管客人和活动都在同一个柜台上,但我可以在相关位置打印数组条目。

October 2012如果你点击“ ”然后选择“ ”,我想要什么Funeral,屏幕会说:

宾客人数:100

每个事件实际上有几十个记录,但没有必要深入所有这些......

为漫无边际的道歉,如果这没有意义!我是 PHP 新手,我只真正坚持这一点。

SQL 查询基于以下内容:

$sql = "
  SELECT
    a.id, b.id AS monthId, a.event, b.monthshort, b.monthlong
  FROM
    events_table_name AS a
  INNER JOIN
    month_table_name AS b ON b.id = a.monthId
  ORDER BY
    b.id, a.id ASC
  ";
4

2 回答 2

1

我会在 PHP 中使用不同的数据结构。这个怎么样?您可能必须更改 SQL 查询才能获得它,但这是我的目标数据结构:

$months = array(
    '1' =>  array(
        'long' => 'October 2012',
        'events' => array(
            '1' => array(
                'name' => 'Wedding',
                'guests' => '200'   
            ),
            '2' => array(
                'name' => 'Bar Mitzvah',
                'guests' => '100'
            ),
            '3' => array(
                'name' => 'Funeral',
                'guests' => '100'
            )
        )
    ),
     '2' => array(
        // etc.
    )
);

这样,您可以查找一个月;每个月的事件;每个事件的出席人数和名称。

于 2012-10-17T23:20:55.500 回答
1

您需要在 foreach 语句中使用索引。我是说

foreach ($events[$x] as $i => $event) {
    ...
    echo ' Number of guests: ' . print_r($guests[$x][$i]);
}
于 2012-10-17T23:30:41.260 回答