2017-01-05 14 views
-2

私はこれに非常に近いですが、まだイベントのリストに問題があります。私が探しているのは、そのイベントに参加した名前のリストを一度表示するタイトル、日付、イベントです。今、私はイベント、日付、タイトルを名前のように何度も印刷しています。mysqlクエリが正しくフォーマットされていません

いくつかのフィールドでGROUP BYを試しましたが、何も動作していないようです。

SELECT x.xdate, x.xevent, x.xname, x.xaffirm, y.activity, y.title, 
y.text, y.date 
    FROM x LEFT JOIN y ON x.xdate = y.date 
    WHERE xevent='Hiking' AND xaffirm='Yes' 
    ORDER BY y.date DESC") 

Print "<table width=500>"; 
while($info = mysql_fetch_array($data)) 
{ 

Print "<tr>"; 
Print 
"<th style='width:225px;' bgcolor=#49A78D align=center >Title</th> 
<th style='width:300px;' bgcolor=#49A78D align=center >Text</th> 
<th style='width:175px;' bgcolor=#49A78D align=center >Date</th> 
<th style='width:175px;' bgcolor=#49A78D align=center >Name</th>"; 
Print "</tr>"; 

Print "<tr>"; 
Print 
"<td bgcolor=#ffffff valign=top align=center>".$info['title'] . "</td> 
<td bgcolor=#ffffff valign=top align=left>".$info['text'] . "</td> 
<td bgcolor=#ffffff valign=top align=left>".$info['date'] . "</td> 
<td bgcolor=#ffffff valign=top align=left>".$info['name'] . "</td>"; 
Print "</tr>"; 

これは私が今取得していますものです:undesired

は、これは私が取得したいものです。desired

+0

あなたが手に入れた線とその線を表示してください。 –

+0

これは私が今得意としているものです –

+0

@rsw - 彼はあなたの出力が今のように見えていて、それをどのように見せたいのですか? –

答えて

0

は、私はおそらくやるだろうこと「を意味し、単一の変数を持つことですこの行のデータは新しいイベントに対応するか、同じイベントの追加データですか?

日付が一致しない場合は、新しいイベントです。最初に、新しいヘッダー行を追加し、次に4つの列すべてのデータを含む新しい行を追加します。日付が一致する場合は、ヘッダーをスキップし、最初の3つの列が空で4番目の列が新しい名前の行を追加します。 (。謝罪私のPHPは非常にコンパイルされない場合、それはしばらくしている)

$lastEventDate = ''; 
Print "<table width=500>"; 

while($info = mysql_fetch_array($data)) 
{ 
    if ($lastEventDate != $info['date']) 
    { 
     Print "<tr>"; 
     Print 
     "<th style='width:225px;' bgcolor=#49A78D align=center >Title</th> 
     <th style='width:300px;' bgcolor=#49A78D align=center >Text</th> 
     <th style='width:175px;' bgcolor=#49A78D align=center >Date</th> 
     <th style='width:175px;' bgcolor=#49A78D align=center >Name</th>"; 
     Print "</tr>"; 
    } 

    Print "<tr>"; 
    if ($lastEventDate == $info['date']) 
    { 
     Print "<td colspan=3 />" 
    } 
    else 
    { 
     Print 
     "<td bgcolor=#ffffff valign=top align=center>".$info['title'] . "</td> 
     <td bgcolor=#ffffff valign=top align=left>".$info['text'] . "</td> 
     <td bgcolor=#ffffff valign=top align=left>".$info['date'] . "</td>" 
    } 
    Print "<td bgcolor=#ffffff valign=top align=left>".$info['name'] . "</td>"; 
    Print "</tr>"; 
    $lastEventDate = $info['date']; 
} 

はまた、私はあなたが実際にしたいことは、別のテーブルであるかどうかわかりませんよ。もしそうなら、最初のifブロック内で、最初のテーブルを閉じて新しいテーブルを開くことができます。

+0

こんにちはアダム、私はあなたの変更を置き換えましたが、問題は解決しません。また、私は、適切な日付と参加者をそれぞれリストアップしたいと思う複数の個人的なイベントがあることを言及する必要があります。 –

+0

@rsw - ああ、私は理解していると思います。 '$ info ['xdate']'が新しいイベントを参照するたびに、新しいヘッダ行が必要ですか? –

+0

これについてもっと考えてみると、 'colspans'を持つ新しい行ではなく、' td'sに 'rowspans'を行う方がいいかもしれません。 –

関連する問題