Mit PHP aus mySQL Daten anzeigen

Hallo,
ich hab ein kleines Poblem mit dem auslesen bzw. anzeigen meiner Daten aus der mySQL-DB.
Das auslesen ist kein Problem, das funktioniert.
Ich bekomm es nur nicht hin, das es richtig angezeigt wird.
Ich habe vor ein Menü über mySQL zu erstellen.
Und zwar gibt es gruppen und untergruppen die ich aus
der mySQL-DB auslese und in meiner Seite anzeigen lassen möchte.
Wir ein Webshop und dan kommen immer mal gruppen hinzu oder verschwinden, daher mit mySQL.

Jetzt gibt es ja in einer Gruppe mehrere Untergruppen.
Das heißt:

Gruppe A -> Untergruppe A
Gruppe A -> Untergruppe B
Gruppe B -> Untergruppe A

Wenn ich die Daten auslese, werden die Gruppen
laut dem Beispiel hier, zweimal angezeigt mit der jeweiligen untergruppe.

Wie kann ich das verhindern, dass es so:

Gruppe A
-> Untergruppe A
-> Untergruppe B
Gruppe B
-> Untergruppe A

aussieht und nicht so:

Gruppe A
-> Untergruppe A
Gruppe A
-> Untergruppe B
Gruppe B
-> Untergruppe A

Hoffe mir kann jemand helfen.
Danke schon im vorraus.

Gruß TripleD

dazu bräuchtest du hierarchische recordsets - leider unterstützt das mysql nicht. du wirst das wohl oder übel ausprogrammieren müssen.

vg, stefan.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi, könntest Du mal erklären, wie Du dafür die Relationen in Deiner DB angelgt hast? Kommen da noch mehr Hierarchien dazu oder gibt es nur eine Hierarchie-Ebene? Wenn ich das weiß, kann ich Dir vielleicht weiterhelfen.

Viele Grüße

Mark

Hi Mark,

also ich hab bis jetzt eigentlich nur mein Menü,
in dem es mehrere „Gruppen“ gibt, und wenn ich auf die klicke
die „Untergruppen“ der Gruppe öffnen sollen.
Am besten wär es, wenn es auch noch irgendwie gehen würde,
dass alle Gruppen und Untergruppen als Link angezeigt werden.

Gruß
TripleD

Hi,

ich denke, dass das nicht allzu schwer werden wird. Du legst in Mysql eine Tabelle an, in der Du alle Menüpunkte anlegst. Eine Spalte benutzt Du sozusagen als Referenzfeld zur übergeordneten Gruppe. Menüpunkte der obersten Hierarchie haben keine Referenz. Beispiel:

ID menuepunkt referenz
1 Hauptgruppe01 0
2 Hauptgruppe02 0
3 Hauptgruppe03 0
4 Untergruppe01 1
5 Untergruppe02 1
6 Untergruppe03 1
7 Untergruppe04 2
8 Untergruppe05 2

usw…

So, dann ließt Du mit einer While-schleife alle Menüpunkte ohne Referenz bzw. Referenz 0 aus und in der Whileschleife wiederum alle Menüpunkte, die als Referenz die ID der Obergruppe haben.

Select blabla

while ($hauptgruppe = mysql_fetch_array ($get_hauptgruppe, MYSQL_ASSOC))

{
echo $hauptgruppe[menuepunkt];

Select blabla where referenz=$hauptgruppe[id];

while ($untergruppe = mysql_fetch_array ($get_untergruppe, MYSQL_ASSOC))

{
echo $untergruppe[menuepunkt];

}
}
Sorry, aber kann Dir dazu jetzt keinen exakten php-code liefern, da der von der Tabelle in der Datenbank und Deiner konkreten SQL-Abfrage abhängt.

Hoffe aber, Dir damit wenigstens etwas weitergeholfen zu haben.

PS: Wenn mehr als eine Hierarchie-Ebene reinkommt, solltest Du Dir eine getrennte Relation für die Zuordnung anlegen. Am besten vorher mal eine ER-Diagramm der Zusammenhänge zeichnen, das erleichter die Normalisierung enorm.

Viele Grüße

Mark

Hi,
irgend wie kappier ich das nciht.
Bin glaub zu blöd dafür.

Hab jetzt die Tabelle erstellt und Daten eingegeben
(DB=Shop / Tabelle=artikel):

**id menuepunkt referenz
(int11 /auto_increment) (varchar50) (tinyint4)

1 Maus 0
2 cordles 1
3 kabel 1
4 optical 1
5 monitor 0
6 crt 1
7 tft 1**
Stimmt doch so, oder???

Und in meim Quelltext sieht die Abfrage so aus:

**<?php include(‚zugang_loc.php‘);
$result = mysql_query(„SELECT * FROM artikel“);

while ($gruppe = mysql_fetch_array ($get_gruppe, MYSQL_ASSOC))
{
echo $gruppe[menuepunkt];

Select gruppe where referenz=$gruppe[id];

while ($untergruppe = mysql_fetch_array ($get_untergruppe, MYSQL_ASSOC))
{
echo $untergruppe[menuepunkt];
}
}

{
?>**

Hoffe kanst mir helfen.

Gruß
TripleD

Hallo,

schau mal auf folgende Seite : http://menue.hhs-net.de/

Ich habe das Menü aus einem laufenden Projekt herausgenommen, vielleicht ist es ja ähnlich dem was Du suchst.

Gruß
HHS

Hi,
irgend wie kappier ich das nciht.
Bin glaub zu blöd dafür.

Hab jetzt die Tabelle erstellt und Daten eingegeben
(DB=Shop / Tabelle=artikel):

**id menuepunkt referenz
(int11 /auto_increment) (varchar50) (tinyint4)

1 Maus 0
2 cordles 1
3 kabel 1
4 optical 1
5 monitor 0
6 crt 1
7 tft 1**
Stimmt doch so, oder???

Nein, nicht ganz. Ich gehe mal davon aus, dass crt und tft zur obergruppe monitor gehört, deshalb muss die referenz 5 sein, und nicht 1.

Und in meim Quelltext sieht die Abfrage so aus:

<?php : include(‚zugang_loc.php‘);
$result = mysql_query(„SELECT * FROM artikel“);

$sql = „SELECT * FROM artikel WHERE referenz=‚0‘“;
$result = mysql_query($sql, $conn);

while ($gruppe = mysql_fetch_array ($get_gruppe,
MYSQL_ASSOC))

while ($gruppe = mysql_fetch_array ($result, MYSQL_ASSOC))

{
echo $gruppe[menuepunkt];

echo "$gruppe[menuepunkt]
";

Select gruppe where referenz=$gruppe[id];

$sql2 = „SELECT * FROM artikel WHERE referenz=’$gruppe[id]’“;
$result2 = mysql_query ($sql2, $conn);

while ($untergruppe = mysql_fetch_array ($get_untergruppe,
MYSQL_ASSOC))

while ($untergruppe = mysql_fetch_array ($result2, MYSQL_ASSOC))

{
echo $untergruppe[menuepunkt];

echo "$untergruppe[menuepunkt]
";

}
}

{
?>

Hoffe kanst mir helfen.

Gruß
TripleD

bitte oben, wo ich die variable $conn gesetzt habe, die entsprechende DB- Anbindung angeben.
Müsste so klappen, habs allerdings nicht getestet, kann sein, dass ich ein semikolon vergessen hab oder irgendwo anführungsstriche zuviel sind. Aber das prinzip ist so richtig.

Viele Grüße

Mark

Hi,

ja, so in der art hab ich das gemeint.
Was brauch ich da alles für Dateien?
Reicht es wenn ich mir den Quelltext kopiere?

Gruß
TripleD

Hi Mark,

jetzt wird schonmal die Gruppe angezeigt, aber zweimal. Warum?

Gruppe 1
Gruppe 2
Gruppe 1
Gruppe 2

Und wie mach ich die Dinger jetzt noch als Links,
das wenn ich auf die Gruppe klicke, die Untergruppen
erscheinen?

Hoffe kannst mir helfen.

Gruß
TripleD