Hanjo: Schleife mit Unterschleife beim Lesen aus Tabelle

Moin auch,

Ich möchte folgendes tun:

Aus einer Tabelle lesen,
        ein Feld (nach dem geordnet wurde)anzeigen,
        Den Datensatz anzeigen, solange das o.a. Feld gleich bleibt
          Wenn es nicht gleich ist, wieder an den Anfang der Schleife.

So daß ich folgendes bekomme

'Feldinhalt 1
     - Zeile (mit Feldinhalt1)
     - Zeile (mit Feldinhalt1)
     - Zeile (mit Feldinhalt1)
        ....

Feldinhalt 2
     - Zeile (mit Feldinhalt2)
     - Zeile (mit Feldinhalt2)
     - Zeile (mit Feldinhalt2)
        ....

bis zum Ende des Resultsets

Mein Versuch haut nicht so recht hin:

while ( $row = mysql_fetch_array($result))

{
  $Kat = $row[1];
                echo '<span>',$Kat,'</span><br/>';
                echo '<ins><ul style="list-style-type:disc;font-family:Verdana, Arial, Helvetica, Sans Serif;font-size:9pt;font-weight : bold;line-height:11pt">';
                echo '<li><a href="',$row[3],'">',$row[2],'</a></li>';

while ( $row = mysql_fetch_array($result) and ($row[1] == $Kat))
         {
  echo '<li><a href="',$row[3],'">',$row[2],'</a></li>';
                }
                echo '</ul></ins>';

}

Wie geht es besser ?

TIA

Hanjo

  1. Genauer gesagt:

    Der letzte Datensatz kommt nicht mir

  2. Huhu Hanjo

    eine einfache Lösung wäre z.B. erst alle Ergebnisse in einem
    zweidimensionalen assoziativen Array zu sammeln.
    Der Key ist dabei die Kategorie.

    Also z.B.

    $stack = array();

    while ( $row = mysql_fetch_array($result))
    {
     $Kat = $row[1];
     $stack[$Kat][] = $row;
    }

    und danach die Ausgabe

    foreach ($stack as $k => $rowstack)
    {
     printf('<h1>Kategorie: %s</h1>', $k);

    foreach ($rowstack as $row)
     {
       printf ('Eine Zeile %s %s<br>', $row[2], $row[3]);
     }
    }

    so in etwa sollte es klappen.

    Viele Grüße

    lulu

    --
    bythewaythewebsuxgoofflineandenjoytheday
    1. Danke sehr.

      Klappt.

      Fast ;-)

      Nach dem Abarbeiten jeder Kategorie muß ich
      (da sich das ganze auf einer Webpage abspielt)
      einen Endtag setzen.

      Wie mach ich denn das ?

      TIA

      Hanjo

      1. Danke, schon selber rausgefunden.

        So:
        foreach ($stack as $k => $rowstack)
        {
         echo '<span>',$Kat,'</span><br/>';
                        echo '<ins><ul style="list-style-type:disc;font-family:Verdana, Arial, Helvetica, Sans Serif;font-size:9pt;font-weight : bold;line-height:11pt">';

        foreach ($rowstack as $row)
         {
           echo '<li><a href="',$row[3],'">',$row[2],'</a></li>';
         }
         echo '</ul></ins>';    <------------- Hier
        }

        Hanjo