0

ここにいる他の人の助けを借りて、1つの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 にその月のすべてのイベントを入力するように機能します。その後、イベントをクリックすると、関連する情報が表示されます。ここで少し行き詰まっています。

私が持っている配列は次のようなものです.ゲスト配列は私が試しているものです:

$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 を使用してメニュー B に ($events[$x] as $event) を入力します。各イベントの画面には、次のようなエントリが表示されます。これが私がやりたいことです (明らかに、これが機能しないことはわかっていますが、説明のために役立つはずです)。

echo 'ゲスト数: ' . print_r($ゲスト[$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.
    )
);

このようにして、1か月を検索できます。毎月、そのイベント。イベントごとに、その出席と名前。

于 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 に答える