Michi: Auflistung aus Datenbank

Hallo alle zusammen

Stehe mal wieder an einem Problem an.

Folgende Sache:
Ich habe zwei Tabellen (MySql) miteinander verknüpft. Die eine Tabelle kennt den Name der Kategorie und die andere Tabelle hat Dokus in den jeweiligen Kategorien.
Nun möchte ich eine Aufstellung sämtlicher Dokus sortiert nach Kategorien.
Jetzt das eigentlich Problem, ich möchte den Kategorientitel immer oben in einer Zeile anschliessend kommen die Titel der Dokus. Sind alle Dokus aufgelistet kommt wieder ein neuer Kategorienname.
Wisst ihr, wie ich meine?

KatName1
    - titel1
    - title2
    - title3

KatName2
    - title1
    - title2
    - usw.

Und das bringe ich bis jetzt nicht fertig.
Für Tipps von euch, wäre ich sehr dankbar.

Das habe ich bis jetzt:
<table width="630" border="0">
<?php
foreach($rows as $row)
{

$dmname = $row->dmname;
$title = $row->title;
?>

<tr>
    <td><? echo $title; ?></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td><? echo $dmname ?></td>
    <td>&nbsp;</td>
  </tr>
<?php
}
?>
</table>

Gruss
Michi

  1. Hi,
    Wie sieht deine SQL-Syntax aus? in etwa so?

    $sql = "SELECT * FROM tabelle1 "
           ."INNER JOIN tabelle2 "
           ."ON(tabelle1.kategorie_id = tabelle2.kategorie_id) "
           ."ORDER BY tabelle1.kategorie_id"

    Wenn ja kannst du in einer for-schleife

    for($z=0; $z<$anzahl; $z)
    {
    $daten = mysql_fetch_array($erg);
    $neu_kategerie_name = $daten['kategorie_name']
    if($neu_kategerie_name <> $alt_kategerie_name)
    {
    $alt_kategerie_name = $neu_kategerie_name;
    echo "<ul>$neu_kategerie_name";
    }
    else
    {
    echo $titel;
    }
    }

    So als kleiner schnell aus der hüfte abgefeuerter denkanstoss.

    MfG

    1. Habe es jetzt so lösen können:
      <table width="630" border="0">
      <?php
      foreach($rows as $row)
      {

      $dmname = $row->dmname;
      $cat = $row->title;

      // Wenn $cat gleich wie vorher soll kat nicht mehr angezeigt werden
      if ($cat != $cat_old)
      {
      echo '<tr>' .
            '<td>' . $cat . '</td><td>&nbsp;</td>' .
            '</tr>';
      }

      echo '<tr>' .
             '<td>' . $dmname . '</td><td>&nbsp;</td>' .
             '</tr>';

      $cat_old = $cat;
      }
      ?>
      </table>

      Vielen Dank für eure Tipps!
      Gruss
      Michi

  2. hm hab sowas in der art auch schon gemacht ...

    mach den umweg das du alles in ein array packst mit dem kat titel als index ...

    zb:

    $ar=array();
    foreach($rows as $val)
    {
       $ar[$val['tital']]=$val['dmname'];
    }

    so bekomsmt du nen 2dimensionales array mit dem kat titel als index und darunter jeweils nen array mit den ganzen doku's

    array
    (
    [katname1]=> array
                 (
                  dok1
                  dok2...
                 )
    [katname2]=> array
                 (...)
    )

    das kannsu dann wieda mit ner foreach auslesen und ausgeben

    ?>
    <table width="630" border="0">
    <?
    foreach($ar as $key => $val)
    {
    ?>
      <tr>
        <td><? echo $key; ?></td>
        <td>&nbsp;</td>
      </tr>
    <?
      if(isarray($val))
      {
        foreach($val AS $dmname)
        {
    ?>
      <tr>
        <td>&nbsp;</td>
        <td><? echo $dmname ?></td>
      </tr>
    <?
        }
      }
    }
    ?>
    </table>
    <?

    wennsch mich spontan net verhaspelt habe müsste das gehn ... mussu guggn tun ;)

    1. Vielen Dank für eure Hilfe.
      Leider kriege ich momentan weder das eine noch das andere zum laufen...aber es ist ja noch kein Meister vom Himmel gefallen.
      Werde mich da mal dranhängen.

      Gruss
      Michi