Logisches Problem mit Dynamischer Navigation

Hallo,

ich versuche schon eine ganze Weile eine Dynamische Navigation zu erstellen. Leider komme ich nicht weiter, mir fehlt der logisch ansatz.
In meiner Datenbank existieren zwei Tabellen (hKat und uKat). Vielen
wird jetzt schon klar sein worauf ich hinaus will. In „hKat“ werden die Hauptkategorien gespeichert und in „uKat“ die Unterkategorien. Jede der beiden Datenbanken hat eine zusätzliche id für die Zuweisung. Wie kann ich jetzt die Inhalte beider Tabellen in eine Navigation packen?

Beispiel:

In der Navigation steht die Hauptkategorie „Haupt Test“. Wenn man jetzt auf diese klickt, sollen die entspechenden Unterkategoeien angezeigt werden (Unter Test1, Unter Test 2 u.s.w…). Gesteuert wird dies per URL- Parameter. Das die Seite jedesmal neu geladen werden muß, ist nicht so wichtig.

Habe in DreamWeaver schon experimentiert, allerdings funktioniert der Code nicht. Theoretisch reichen mir zwei Ebenen(Hauptkategorie - Unterkategorie). Hier mal der Code:

Tabellen:

CREATE TABLE hKat (
id int(8) NOT NULL auto_increment,
kat_name varchar(50) NOT NULL default ‚‘,
kat_beschreibung text NOT NULL,
kat_bild tinytext,
kat_pId int(10) unsigned NOT NULL default ‚0‘,
PRIMARY KEY (id),
KEY kat_pId (kat_pId)
) TYPE=MyISAM COMMENT=‚Die Kategorien‘ AUTO_INCREMENT=7 ;

CREATE TABLE uKat (
id int(8) NOT NULL auto_increment,
uKat_name varchar(50) NOT NULL default ‚‘,
uKat_beschreibung text NOT NULL,
uKat_bild tinytext,
uKat_pId int(10) unsigned NOT NULL default ‚0‘,
PRIMARY KEY (id),
KEY kat_pId (uKat_pId)
) TYPE=MyISAM COMMENT=‚Die Unterkategorien‘ AUTO_INCREMENT=7 ;

Experimenteller Code:

<?php require_once('../Connections/myShop.php'); ?><?php mysql_select_db($database_myShop, $myShop);<br />$query\_hKat = "SELECT \* FROM hKat";
$hKat = mysql\_query($query\_hKat, $myShop) or die(mysql\_error());
$row\_hKat = mysql\_fetch\_assoc($hKat);
$totalRows\_hKat = mysql\_num\_rows($hKat);

$colname\_uKat = "-1";
if (isset($\_GET['cat'])) {
 $colname\_uKat = (get\_magic\_quotes\_gpc()) ? $\_GET['cat'] : addslashes($\_GET['cat']);
}
mysql\_select\_db($database\_myShop, $myShop);
$query\_uKat = sprintf("SELECT \* FROM uKat WHERE uKat\_pId = %s", $colname\_uKat);
$uKat = mysql\_query($query\_uKat, $myShop) or die(mysql\_error());
$row\_uKat = mysql\_fetch\_assoc($uKat);
$totalRows\_uKat = mysql\_num\_rows($uKat);

 while ($row\_hKat = mysql\_fetch\_assoc($hKat)) {
 echo $row\_hKat['kat\_name'] . "
";
 if ($row\_uKat['uKat\_pId'] == $\_GET['cat']) {
 $query\_hKat = "SELECT \* FROM uKat WHERE uKat\_pId = {$\_GET['cat']}";
 $uKat = mysql\_query($query\_uKat, $myShop) or die(mysql\_error());
 while ($row\_uKat = mysql\_fetch\_assoc($uKat)) {
 echo "&nbsp;&nbsp;&nbsp;" . $row\_uKat['uKat\_name'] . "
";
 }
 }
 }
?\>

Kann mir jemand weiter helfen?

Gruß Melli

Hallo

CREATE TABLE hKat (
id int(8) NOT NULL auto_increment,
kat_name varchar(50) NOT NULL default ‚‘,
kat_beschreibung text NOT NULL,
kat_bild tinytext,
kat_pId int(10) unsigned NOT NULL default ‚0‘,
PRIMARY KEY (id),
KEY kat_pId (kat_pId)
) TYPE=MyISAM COMMENT=‚Die Kategorien‘ AUTO_INCREMENT=7 ;

CREATE TABLE uKat (
id int(8) NOT NULL auto_increment,
uKat_name varchar(50) NOT NULL default ‚‘,
uKat_beschreibung text NOT NULL,
uKat_bild tinytext,
uKat_pId int(10) unsigned NOT NULL default ‚0‘,
PRIMARY KEY (id),
KEY kat_pId (uKat_pId)
) TYPE=MyISAM COMMENT=‚Die Unterkategorien‘ AUTO_INCREMENT=7 ;

pId = Parent-Id ?

Experimenteller Code:

<?php require_once('../Connections/myShop.php'); ?> <?php :mysql_select_db($database_myShop, $myShop);
$query\_hKat = "SELECT \* FROM hKat"; $hKat = mysql\_query($query\_hKat, $myShop) or die(mysql\_error()); $row\_hKat = mysql\_fetch\_assoc($hKat); $totalRows\_hKat = mysql\_num\_rows($hKat);

die vorherigen zwei Zeilen würde ich rausnehmen

$colname_uKat = „-1“;
if (isset($_GET[‚cat‘])) {
$colname_uKat = (get_magic_quotes_gpc()) ? $_GET[‚cat‘] :
addslashes($_GET[‚cat‘]);
}
mysql_select_db($database_myShop, $myShop);
$query_uKat = sprintf(„SELECT * FROM uKat WHERE uKat_pId =
%s“, $colname_uKat);

Ich denke,

$query\_uKat = "SELECT \* FROM uKat WHERE uKat\_pId = ".$colname\_uKat; tuts auch.


> $uKat = mysql\_query($query\_uKat, $myShop) or  
> die(mysql\_error());  
> $row\_uKat = mysql\_fetch\_assoc($uKat);  
> $totalRows\_uKat = mysql\_num\_rows($uKat);

die vorherigen zwei Zeilen würde ich rausnehmen.





> while ($row\_hKat = mysql\_fetch\_assoc($hKat)) {  
> echo $row\_hKat['kat\_name'] . "  
> ";  
> if ($row\_uKat['uKat\_pId'] == $\_GET['cat']) {  
> $query\_hKat = "SELECT \* FROM uKat WHERE uKat\_pId =  
> {$\_GET['cat']}";  
> $uKat = mysql\_query($query\_uKat, $myShop) or  
> die(mysql\_error());  
> while ($row\_uKat = mysql\_fetch\_assoc($uKat)) {  
> echo "&nbsp;&nbsp;&nbsp;" . $row\_uKat['uKat\_name'] . "  
> ";  
> }  
> }  
> }  
> ?\>


Das while würde ich so schreiben:


    
     while ($row\_hKat = mysql\_fetch\_assoc($hKat)) {
     echo $row\_hKat['kat\_name'] . "
    ";
     if ($row\_hKat['Id'] == $colname\_uKat) {
     while ($row\_uKat = mysql\_fetch\_assoc($uKat)) {
     echo " " . $row\_uKat['uKat\_name'] . "
    ";
     }
     }
     }
    ?\>




so klappts vieleicht.

Hallo Johannes,

danke für deine Hilfe. Ich werde mich gleich mal an die Arbeit machen
und das Ganze testen. Mille gracie!

MFG Melli