Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Navigation aus drei Tabellen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Navigation aus drei Tabellen


 
capsfan
20-03-2002, 19:21 
 
Hallihallo!

Den ganzen Tag rätsele ich schon an folgendem Problem und finde keinen Lösungsansatz der funktioniert:

Ich möchte ein Navigationsmenu aus drei Tabellen erzeugen, die sich wie folgt zusammensetzen:

Hauptkategorien (id, name)

Menupunkte (id, hauptkatid,name,sid)

Menuunterpunkte (id,menupunkteid,name, url)

Die Hauptkategorien sind quasi die Rubrikenüberschriften, zu denen es mehrere Menupunkte gibt.
Habe ich nun z.B. die Seite Produkte angeklickt (Variable $sid=produkte), soll das Menu die Menuunterpunkte zu diesem Thema mitauflisten, bei den anderen Menupunkten jedoch nicht.

Hat jemand einen Lösungansatz?

Vielen Dank!

capsfan

 
MelloPie
20-03-2002, 19:51 
 
Der Ansatz ist der
left join

 
capsfan
20-03-2002, 20:27 
 
Ok, also mit left join.

Ist es vom Ansatz einfacher die Hauptkategorien mit den den Menupunkten per join zu verknüpfen, da ich für die Menuunterpunkte ja noch einen zusätzlichen Vergleich benötige

also etwa

SELECT.... Hauptkategorien left join Menupunkte

Schleife Bedingung Menuunterpunkte...

echo Hauptkategorie,Menupunkt,Menuunterpunkt

oder sollte ich das umgekehrt angehen

Schleife Hauptkategorien

SELECT... Menupunkte left join Menuunterpunkte WHERE....

echo Hauptkategorie, Menupunkt,Menuunterpunkt ?

(so langsam reift eine Idee dazu... )

 
Troublegum
20-03-2002, 20:55 
 
Ich würde es so machen:



SELECT h.id as hid,h.name as hname, m1.name as m1name, m1.sid as m1sid,m2.name as m2name,m2.url as m2url FROM h LEFT JOIN m1 ON (h.id=m1.hid) LEFT JOIN m2 ON (m2.mid=m1.id AND m2.mid IN('ID AUS DER TABELLE M1'))

Einfach mal den Dump und danach die Query in phpmyadmin reinschmeißen. Natürlich noch "'ID AUS DER TABELLE M1" durch z.B. 3 ersetzen und los gehts.

Der dazugehörige Dump zum ausprobieren:

#
# Tabellenstruktur für Tabelle `h`
#

CREATE TABLE h (
id tinyint(2) default NULL auto_increment,
name varchar(44) NOT NULL default ' ',
PRIMARY KEY (id)
) TYPE=MyISAM;

#
# Daten für Tabelle `h`
#

INSERT INTO h VALUES (1, 'CounterStrike');
INSERT INTO h VALUES (2, 'Rtcw');
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `m1`
#

CREATE TABLE m1 (
id tinyint(2) default NULL auto_increment,
hid tinyint(2) NOT NULL default '0',
name varchar(55) NOT NULL default ' ',
sid varchar(55) NOT NULL default ' ',
PRIMARY KEY (id)
) TYPE=MyISAM;

#
# Daten für Tabelle `m1`
#

INSERT INTO m1 VALUES (1, 1, 'Taktik', 'taktik');
INSERT INTO m1 VALUES (2, 1, 'Waffen', 'waffen');
INSERT INTO m1 VALUES (3, 1, 'skins', 'skins');
INSERT INTO m1 VALUES (4, 2, 'Monster und Gegner', 'monster und gegner');
# --------------------------------------------------------

#
# Tabellenstruktur für Tabelle `m2`
#

CREATE TABLE m2 (
id tinyint(2) default NULL auto_increment,
mid tinyint(2) NOT NULL default '0',
name varchar(55) NOT NULL default ' ',
url varchar(55) NOT NULL default ' ',
PRIMARY KEY (id)
) TYPE=MyISAM;

#
# Daten für Tabelle `m2`
#

INSERT INTO m2 VALUES (1, 3, 'Counter Terrorists', 'url zu cs');
INSERT INTO m2 VALUES (2, 3, 'Terrors', 'url zu terrors');


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:32 Uhr.