2012-03-05 13 views
1

私はデータベース構造(本当に、それが最も簡単なのいずれかではありません)半コンプレックスを持っている:のMySQL、PHPおよび表形式のデータ

= idappointmentsteacher_idchild_idslot

child = id、 = idparent_idnameform

parentnamecontact_details

= idteachernamesubject

slot = idtime

私はいくつかの複数を使用してきた結果、私は必要なデータを取得するためにSELECTステートメントに参加する、など:

SELECT 
DISTINCT ((c.id +150) *1055) AS reference_number, 
p.name AS parent_name, 
c.name AS child_name, 
c.form AS child_form 
FROM appointments AS a 
INNER JOIN child AS c ON a.child_id = c.id 
INNER JOIN parent AS p ON c.parent_id = p.id 

私がしたいのは、slotsが1つの軸であり、teachersは他の軸であり、実際のデータとして、そのタイムスロットでその教師のために予約された子供の名前である。

slotテーブルは次のようになります。

SQL query: SELECT * FROM `slots` LIMIT 0, 30 ; 
Rows: 30 

id time 
1 2012-03-15 16:00:00 
2 2012-03-15 16:05:00 
3 2012-03-15 16:10:00 
4 2012-03-15 16:15:00 
5 2012-03-15 16:20:00 
6 2012-03-15 16:25:00 
7 2012-03-15 16:30:00 
8 2012-03-15 16:35:00 
9 2012-03-15 16:40:00 
10 2012-03-15 16:45:00 
11 2012-03-15 16:50:00 
12 2012-03-15 16:55:00 
13 2012-03-15 17:00:00 
14 2012-03-15 17:05:00 
15 2012-03-15 17:10:00 
16 2012-03-15 17:15:00 
17 2012-03-15 17:20:00 
18 2012-03-15 17:25:00 

appointments表は、いくつかのエントリの後に次のようになります。

id teacher_id child_id slot 
1 1 1 3 
2 2 1 5 
3 1 3 2 
4 2 3 6 
5 1 4 4 
6 2 4 7 
7 1 5 1 
8 2 5 9 
9 1 6 8 
10 2 6 3 

私はPHPを使用して、一緒に何かを入れてみましたが、それは本当に私の頭を傷つけます!

外部のスクリプトを使用しないで、のソリューションをお勧めする人はいませんか?ここでの要求ごととして


EDITは私が達成しようとしているかの小さなスクリーンショットです。私はExcelでこれをしましたが、明らかに、トピックごとに、私はPHP/HTMLでこれをしたいと思います。事前に

Tabular Data?


おかげで、私の頭の上オフ

+0

希望する出力の小さな例を示してください。 –

+0

提案してくれてありがとう@MarcusAdams - 私は今それをやりました。 – dunc

答えて

1

私はこのような何かをしようとするだろう。最初のビットは擬似コードです。 これは、最初の列にすべての先生の名前、次に各タイムスロットの列、そして予定が予約されているセル内の子名を含むテーブルを生成するはずです。

$appointments =

SELECT DISTINCT((c.id +150)* 1055)REFERENCE_NUMBER、PARENT_NAME AS p.name、CHILD_NAME AS c.name、child_form AS c.form、 AS .id AS appointmentid、 a。 インナーAS子を結合として予定からスロットAS SLOTID C ON a.child_id = c.id INNER教師

FROM c.parent_id ON P = p.id

$teachers = SELECT ID、教師として親JOIN

$slots = SELECT IDあなたが$appointments$teachers$slotsを持っているので、スロット

FROM時間が連想配列にそれらを取得する(あなたはそのためのコードを追加することができる)

<?php 

// simply add a blank child element to each slot 
foreach($slots as $slotKey => $slot) 
{ 
    $slots[$slotKey]['child'] = ''; 
} 

// now add the full empty slot list to all teachers 
foreach($teachers as $key => $teacher) 
{ 
    $teachers[$key]['appointments'] = $slots; 
} 

// now to fill in the child names into the teachers slots where they have an appointment 
foreach($teachers as $teacher) 
{ 
    foreach($teacher['slots'] as $slotKey => $slot) 
    { 
     foreach($appointments as $appointment) 
     { 
      if($slot['id'] == $appointment['slotid']) 
      { 
       $teacher[$key][$slotKey]['child'] = $appointment['child_name']; 
      } 
     } 
    } 
} 

// now lets output the HTML table 
?> 

<table> 

    <tr> 
     <th>Teacher</th> 
     <?php foreach($slots as $s): ?> 
      <th><?php echo $s['time']; ?></th> 
     <?php endforeach; ?> 
    </tr> 

    <?php foreach($teachers as $t): ?> 

     <tr> 

      <td><?php echo $t['name']; ?></td> 
      <?php foreach($t['slots'] as $slot): ?> 
       <td><?php echo $slot['child_name']; ?></td> 
      <?php endforeach; ?> 

     </tr> 

    <?php endforeach; ?> 

</table> 
関連する問題