2012-04-09 4 views
0

Ich versuche, eine sortierte Liste mit einem Abschnitt Trennzeichen aus einer MySQL-Tabelle über PHP zu erreichen, aber habe ein bisschen Ärger. Anstatt meine Suppe so in den Suppenkopf zu stecken, wie ich will, stecke ich sie in den folgenden Header (wie ich nicht will)! Hierphp gruppierte Tabelle Sortieren 1 aus

ist die visuelle Ausgabe:

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 

hier ist mein Code:

$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

Haben Sie sich die Quelle angesehen? Sie haben ein offenes Tabellen-Tag in der Schleife, aber kein Close-Tag. Auch was ist deine Anfrage? – liquorvicar

+0

Nicht sicher, ob es die Antwort auf Ihr Problem ist, aber Sie erstellen eine neue Tabelle für * jede * Schleifeniteration und schließen nicht das 'table' -Tag, sodass Sie bei jeder Schleifeniteration eine weitere Tabelle innerhalb der letzten Tabelle erstellen. Das könnte etwas damit zu tun haben. Ich gehe davon aus, dass Sie nur eine neue Tabelle mit jedem neuen Header erstellen und Zeilen zu dieser Tabelle für jeden Eintrag in derselben Kategorie hinzufügen möchten. – Travesty3

Antwort

2

Sie sind nicht Ihre <table> Tag zu schließen und eine neue Tabelle für jede DB Zeile abgerufen beginnen, so Strukturell ist Ihre HTML-Seite eine totale Unordnung.

Sie würden so etwas wie dies wollen:

$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 
} 

Dieser Code wird die <table> und <h1> Zeug, wenn Sie Kategorien ändern nur dann ausgegeben.

+0

danke Marc B !! löste es recht schnell! – Nat