2012-04-09 4 views
0

私はPHPを介してmysqlテーブルからセクションセパレータでソートリストを取得しようとしていますが、少し問題があります。スープのヘッダーにスープを入れたいのではなく、次のヘッダーに入れています。ここでphpグループ化テーブルソート1 off

は、視覚出力されます。ここ

2-Soup 
3-Salad 
    2 Soup  Demo: Tom KaKai 
4-Entree 
    3 Salad Demo: Spinach Salad 
    4 Entree Demo: Pork Chop 
    4 Entree Demo: Spicy Topped Shrimp 

は私のコードです:

$cat = null; 
while($row = mysql_fetch_array($result)) 
{ 
    if($row['catnum'] != $cat) 
    { 
     echo '<h1>' . $row['catnum'] . '-' . $row['ctgry'] . '</h1>'; 
     $cat = $row['catnum']; 
    } 
    echo "<table><tr><td>" . $row['catnum'] . " </td><td>" . $row['ctgry'] . "</td><td> " . $row['Shrt_Desc'] . "</td></tr>"; 
} 
+0

ソースを見ましたか?ループ内にオープンテーブルタグがありますが、クローズタグはありません。あなたの質問は何ですか? – liquorvicar

+0

あなたの問題に対する答えがわかりませんが、すべての*ループ反復で新しいテーブルを作成していて、 'table'タグを閉じていない場合は、最後のテーブル内に別のテーブルを作成しています。それはそれと関係があります。私はあなたがそれぞれの新しいヘッダーで新しいテーブルを作成し、その同じカテゴリの各エントリのためにそのテーブルに行を追加したいと仮定します。 – Travesty3

答えて

2

あなたはそう、あなたの<table>タグを閉じていないと検索されたすべてのDBの行のための新しいテーブルを始めています構造的にあなたのHTMLページは完全な混乱です。

あなたはこのような何かしたいと思います:

$first = true; 
while ($row = mysql_fetch_array($result)) { 
    if ($row['catnum'] != $cat) { 
     if (!$first) { 
      echo '</table>'; // close the table if we're NOT the first row being output. 
     } 

     $first = false; // no longer the first table, so disable this check. 
     echo '<h1> etc...'; 
     echo '<table>'; // start new table 
     $cat = $row['catnum']; 
    } 
    echo '<tr><td>' etc.... // output a table row 
} 

このコードになるだけ出力<table><h1>のものを使用すると、カテゴリを変更。

+0

ありがとうMarc B !!すぐに解決しました! – Nat

関連する問題