PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Datenbankabfrage Treemenü? (http://www.selfphp.de/forum/showthread.php?t=10345)

Pixelschubser 25.04.2005 14:29:13

Datenbankabfrage Treemenü?
 
Hallo,

ich habe in meiner Datenbank eine ganze Menge Datensätze, daher möchte ich wenn ich Sie ausgebe, dies mit Kategorie --> Unterkategorie usw.. machen.

Also das man sich erst durch die Kategorien klickt bis Ende und dann erst die entsprechendn Datensätze angezeigt werden.

Datenbankaufbau (artikel):
id | datum | artikel_nummer | beschreibung | cat | cat1 | cat2 | cat3 | cat4 | hersteller | bestand | preis_einkauf

Die Spalten cat - cat4 sind die einzelnen Kategorien.
cat die Hauptkategorie -> cat4 letzte Kategorie.

Wie mache ich das am besten?
Habe es bis jetzt so das wenn man auf die Hauptkategorie(cat) klickt diese mit dem Link übergeben wird detail.php?cat=laufwerke
Dann soll die Seite detail.php alle unterkategorien ausliefern von Laufwerke.

Hoffe hab es verständlich erklären können.

Bin für jede Art von Tipp oder Hilfe dankbar.

-Pixelschubser-

xabbuh 25.04.2005 14:46:01

AW: Datenbankabfrage Treemenü?
 
Vom Prinzip her, würde ich es an deiner Stelle so aufbauen:

Tabelle categories:
categoryid
parentcategoryid
name

Tabelle articles:
id
categoryid
.
.
.

Du speicherst also im Artikel nur noch ab, in welcher Kategorie der Artikel angezeigt werden soll.
In der Kategorietabelle speicherst du zu jeder Kategorie in der Spalte parentcategoryid ab, unterhalb welche Kategorie sich diese Kategorie befindet. Wenn eine Kategorie in der obersten Ebene liegt, speicherst du hier einfach eine 0.

Pixelschubser 25.04.2005 18:07:37

AW: Datenbankabfrage Treemenü?
 
Hi,

das hab ich auch schon überlegt, nur ich bekomme die Daten alle als csv Datei. Die lese ich dann in die DB ein.
Dann hab ich das Problem wie ich es mache, das in jede der Tabellen etwas eingetragen wird beim einlesen der Datei.

Per Hand ist das etwas umständlich, geht um etwa 10.000 Datensätze.

xabbuh 25.04.2005 20:32:49

AW: Datenbankabfrage Treemenü?
 
In welchem Format sind die Daten denn in der CSV-Datei gespeichert?

Pixelschubser 26.04.2005 06:18:42

AW: Datenbankabfrage Treemenü?
 
Hi,

die Daten stehen so in der Datei:
Artikelnummer|Beschreibung|cat|cat1|cat2|cat3|cat4|EAN Nr.|Hersteller Kurzname|Kurzbeschreibung|Verfügbarkeit Text|Verkaufspreis|
1234567890|Super tolle HDD|Laufwerke|Festplatten|intern|3,5'|bis 100 GB|11|Western|keine da|10|10,10

Wobei in den Texten noch Sonderzeichen enthalten sind. Wie z.B. ', " und als äöü stehen auch Sonderzeichen.(ä=„ ”=ö ü=ein kasten) Die müssten vorher gefiltert werden.

Pixelschubser 26.04.2005 08:26:28

AW: Datenbankabfrage Treemenü?
 
Okay,

ich habe es so weit hin. Es wird also schon wie ich möchte der Menübaum erstellt.
Bis hin zur letzten Kategorie, aber immer der selbe.
Das Menü wird so lange erstellt wie es Hauptkategorien gibt, aber immer die letzte Kategorie wird angezeigt.
Also immer Zubehör, Zubehör...

Irgendwie muss diese Variable immer geändert werden $node1.
Die muss nach dem die Schleife einmal durch ist zu $node2 werden.

Dann kann ich die unten auch wieder ausgeben in der for Schleife.
Dann würde alles funzen wie es soll. Hoffe ich mal.

Jemand eine Idee wie ich diese Variable ändern kann?

Hier mal das Script:
PHP-Code:

<?
...
//Menu Beginn
$menu  = new HTML_TreeMenu();
//1 Kategorie

while($artikel = mysql_fetch_object($result)) {
    $kategorie = $artikel->cat;
    $kategorie1 = urlencode($kategorie);
//  Menü erstellen
    $node1   = new HTML_TreeNode(array('text' => $kategorie, 'link' => "kategorie.php?cat=" . $kategorie1, 'icon' => $icon, 'expandedIcon' => $expandedIcon, 'expanded' => false));
//  Verzeichnisbaum erstellen
    if ($artikel->cat1 != ""){
        $node1_1 = &$node1->addItem(new HTML_TreeNode(array('text' => $artikel->cat1, 'link' => "kategorie.php?cat=" . $artikel->cat1, 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
    }
    if ($artikel->cat2 != ""){
        $node1_1_1 = &$node1_1->addItem(new HTML_TreeNode(array('text' => $artikel->cat2, 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
    }    
    if ($artikel->cat3 != ""){
        $node1_1_1_1 = &$node1_1_1->addItem(new HTML_TreeNode(array('text' => $artikel->cat3, 'link' => "kategorie.php?cat=" . $artikel->cat1, 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
    }    
    if ($artikel->cat4 != ""){
        $node1_1_1_1->addItem(new HTML_TreeNode(array('text' => $artikel->cat4, 'link' => "kategorie.php?cat=" . $artikel->cat1, 'icon' => $icon, 'expandedIcon' => $expandedIcon)));
    }    
//  ENDE    
  
// 2 Kategorie muss dann so anfangen
    $node2   = new HTML_TreeNode(array('text' => "Festplatten", 'link' => "test.php", 'icon' => $icon, 'expandedIcon' => $expandedIcon, 'expanded' => true), array('onclick' => "alert('foo'); return false", 'onexpand' => "alert('Expanded')"));
}
for($x=1;$x<$anzahl;$x++){
    $menu->addItem($node1);
}    
    // Create the presentation class
    $treeMenu = &new HTML_TreeMenu_DHTML($menu, array('images' => '_include/images', 'defaultClass' => 'treeMenuDefault'));
...
?>



Alle Zeitangaben in WEZ +2. Es ist jetzt 21:59:58 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.