php.de
Alt 06.04.2006, 22:20  
Erfahrener Benutzer
 
Registriert seit: 14.10.2005
Beiträge: 153
Fatal Error
Standard TreeMenu

Hallo,
ich habe mir mal was schönes überlegt und zwar ein menü was die baumstruktur hat, ok so welches hat windows, lunux, ... ^^

Naja, was ich mir eigentlich überlegt habe ist wie man es im Web umsetzen könnte.

Ja Ja, ich weis, sowas gibt es schon bei PEAR aber das benutze ich nicht weil ich PHP und nicht PEAR lernen möchte ^^ wenn man alles über PHP wei könnte man auch mit PEAR anfangen

Und kommt hier nicht mit dem Satz: Wozu das Rad 2x erfinden :þ

So, jetzt aber der aufbau:
PHP-Code:
<?php
/*
 *##### Ordner Eigenschaften #####
 *$ordner_id     | Eindeutige Nummer des Ordners.
 *$ordner_name   | Name des Ordners.
 *$ordner_bild   | Pfad des Bildes von dem Ordner, falls keins vorhanden ist wird das standard Bild benutzt.
 *$ordner_status | Eigenschaft die nicht in der Datenbank gespeichert wird. Gibt an ob der ordner auf ist. (TRUE or FALSE)
 *$hauptordner   | Keine Eigenschaft. Wird im Index verwendet. Siehe unten die Erklärung bei der Struktur.
 *$reihenfolge   | Keine Eigenschaft. Wird im Index verwendet. Bestimmt die Reihenfolge der Ordner.
 *
 *Hauptordner: "Ordner 2" ist der Hauptordner von "Ordner 2.1" und "Ordner 2.2"
 *
 *#Ordner 1
 *#Ordner 2
 *    #Ordner 2.1
 *    #Ordner 2.2
 *#Ordner 3
 *
 *##### Session Variablen #####
 *$_SESSION['ordnerstruktur'][$hauptordner][$reihenfolge]->ordner_id
 *                                                       ->ordner_name
 *                                                       ->ordner_bild
 *                                                       ->ordner_status
 */
class MenueEigenschaften
{
    var 
$ordner_id      // DB -> INT(10)  | auto_increment, primärschlüssel
    
var $ordner_name;   // DB -> TINYTEXT | max 255 Zeichen
    
var $ordner_status// -------------- | Wird nicht in der Datenbank gespeichert
    
var $ordner_bild    // DB -> TINYTEXT | max 255 Zeichen
    //  $hauptordner;      DB -> INT(10)  | Fremdschlüssel
    //  $reihenfolge;      DB -> INT(10)  | Fremdschlüssel

    
function __construct($ordner_id$ordner_name$ordner_bild)
    {
        
$this->ordner_id     $ordner_id;
        
$this->ordner_name   $ordner_name;
        
$this->ordner_bild   $ordner_bild;
        
$this->ordner_status FALSE;
    }
}

class 
MenueVerwaltung
{
    
/*
     *Diese Funktion lädt alle Unterordner eines Hauptordners,
     *dabei kann die ID des Hauptordners übergeben werden,
     *ist das nicht der Fall so werden alle Hauptordner geladen,
     *das sind die mit der $hauptordner id=0.
     *
     *Mögliche Fehler die abgefangen werden müssen:
     *!Die Tabelle mit den Ordnern konnte nicht gefunden werden!
     *!Es existieren keine Ordner in der Datenbank!
     *!Es existieren keine Unterordner mit der angegebenen $hauptordner id!
     *!Um die Ordner zu Laden muss erst die SESSION gestartet werden!
     */
    
static function ordnerLaden($hauptordner=0)
    {
    }

    static function 
ordnerAnlegen($ordner_name$hauptordner=0, )
    {
    }

    static function 
ordnerBearbeiten()
    {
    }

    static function 
ordnerVerschieben()
    {
    }

    static function 
ordnerLoeschen()
    {
    }
}
?>
So, soviel habe ich schon programmiert ^^ Mit der eigentlichen programmierung wollte ich bisl später anfangen, wollt mir erst alles was man so benötigt vor augen führen damit ich alles schrinn für schritt machen kann und nix vergesse/überspringe.

Nun was ich mir dabei gedacht habe:
Ich wollte ein Menü/Ordner Struktur schaffen was man überall einsätzen könnte.
Man kann Ordner anlegen, Ordner Löschen, in den Ordnern Unterordner anlegen und was am meisten an Performance ziehen wird ist das verschieben von Ordnern. Natürlich kann man die Ordner auch mit Inhalt füllen ^^

Jetzt zu den Eigenschaften:
Ordner ID und Name müsste klar sein ^^
Ordner Status: Dies ist eine eigenschaft die nicht in der DB gespeichert wird, sie wird jedoch in dem Objekt/en vorhanden sein. Sie ist vom DTyp: BOOLEAN und gibt nur an ob ein Ordner offen ist oder nicht und ob die Unterordner des Ordners angezeigt werden sollen bzw geladen werden sollen oder nicht.

Die Eigenschaft Bild enthält ein Pfad des bisldes, es sollte möglich sein jedem einzelnem ordner sein eigenes icon zuzuweisen, sollte das icon nicht gefunden werden oder das fels sogar leer sein wird das standard Bild geladen was ich aber auch mit php zeichnen würde, denn das ganze soll nur in einer php datei sein.

Die Eigenschaft Hauptordner gibt an in welchem Ordner der jeweilige ordner sich befindet. Die obersten Ordner haben dort als wert [0].

Die Eigenschaft Reihenfolge gibt die Reihenfolge der Ordner vor. In jedem Ordner fängt die reihenfolge der ordner mit 1 an. DIe Reihenfolge sollte das verschieben von ordnern ermöglichen so dass man seinen lieblingsordner mit all unterordnern und daten nach oben schieben kann, auch wenn man ihn zuletzt erstellt hat. Doch diese Eigenschaft ist das erste Problem. Wenn ich hier nur 1 Ordner verschiebe muss ich den ganzen Ordnern in einem Unterordner eine neue Reihenfolge zuweisen.

#Ordner 1
#Ordner 1.1
#Ordner 1.2
#Ordner 1.3
#Ordner 2
#Ordner 2.1
#Ordner 2.2
#Ordner 2.3

Wenn ich hier jetzt den ordner 2.3 auf die erste stelle verschiebe dann muss der ordner theoretisch 2.1 benannt werden der ordner 2.1 zu 2.2 und der 2.2 zu 2.3.
Wenn ich den ordner 2.2 in den ordner 1 verschiebe dann müss sogar die innere struktur der 2 OPrdner komplett umgeschrieben werden, auser der letzte ordner wird an die letzte stelle des anderen ordners verschoben werden ^^
!!!!!!!!!! Falls einer ne lösung hat, her damit !!!!!!!!!!

Nun zu SESSION:
Damit nicht jeder Ordner 100x geladen werden muss speichere ich die schon geladene Ordner in session. Ganz am anfang werden die ordner mit der eigenschaft $hauptordner==0 geladen. und der rest beim anklicken des jeweiligen ordners.

ps: lasst euch von dem erstem feld "ordnerstruktur" nicht zu sehr ablenken den habe ich nur deshalb erstellt damit es keine kollisionen gibt falls man diesen script auf mehreren websiten einsetzt denn es könnte ja sein das man irgendwo schon eine sessionvariable mit dem einfachen index ['0'] oder ['1'] ... schon verwendet.

Das Sessionarray würde dann so aussehen:
$_SESSION['ordnerstruktur'][$hauptordner][$reihenfolge]
und seine eigenschaften:
->ordner_id
->ordner_name
->ordner_bild
->ordner_status

das menü würde ich mit einer foreach(){} schleife aufbauen.

Schut euch das ganze in ruehe an, und sagt bescheid falls euch da welche mängel auffalen. Wenn jemand was anders machen würde postet das rein.
Fatal Error ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 07.04.2006, 10:13  
Erfahrener Benutzer
 
Registriert seit: 21.12.2004
Beiträge: 4.651
PHP-Kenntnisse:
Fortgeschritten
mepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblickmepeisen ist ein Lichtblick
mepeisen eine Nachricht über ICQ schicken mepeisen eine Nachricht über Skype™ schicken
Standard

Nach der Hälfte des Textes habe ich mit dem Lesen abgebrochen, zum einen aufgrund merkwürdiger Rechtschreibfehler und zum anderen aufgrund von einigen Sätzen, die für mich 0 Sinn machen.
__________________
Entwickler aus Leidenschaft und ein Zahnrad in einem der größten Java-Projekte der Welt.
mepeisen ist offline  
Alt 07.04.2006, 10:21  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von mepeisen
Nach der Hälfte des Textes habe ich mit dem Lesen abgebrochen, zum einen aufgrund merkwürdiger Rechtschreibfehler und zum anderen aufgrund von einigen Sätzen, die für mich 0 Sinn machen.
*grunz* hehe...du warst hartnäckig...ich habe es nur auf ca. 1/3 gebracht
 
Alt 07.04.2006, 10:30  
Benutzer
 
Registriert seit: 11.03.2005
Beiträge: 57
gala
Standard

Zitat:
Wenn ich hier jetzt den ordner 2.3 auf die erste stelle verschiebe dann muss der ordner theoretisch 2.1 benannt werden der ordner 2.1 zu 2.2 und der 2.2 zu 2.3.
Wenn ich den ordner 2.2 in den ordner 1 verschiebe dann müss sogar die innere struktur der 2 OPrdner komplett umgeschrieben werden, auser der letzte ordner wird an die letzte stelle des anderen ordners verschoben werden ^^
!!!!!!!!!! Falls einer ne lösung hat, her damit !!!!!!!!!!
in deinem ordnersystem kann man nicht mal die ordner bennen wie man möchte?
!!!!!!!!! Find ich voll doof!!!!!!!!!!!!
gala ist offline  
Alt 07.04.2006, 10:38  
Erfahrener Benutzer
 
Registriert seit: 14.10.2005
Beiträge: 153
Fatal Error
Standard

Zitat:
Zitat von gala
Zitat:
Wenn ich hier jetzt den ordner 2.3 auf die erste stelle verschiebe dann muss der ordner theoretisch 2.1 benannt werden der ordner 2.1 zu 2.2 und der 2.2 zu 2.3.
Wenn ich den ordner 2.2 in den ordner 1 verschiebe dann müss sogar die innere struktur der 2 OPrdner komplett umgeschrieben werden, auser der letzte ordner wird an die letzte stelle des anderen ordners verschoben werden ^^
!!!!!!!!!! Falls einer ne lösung hat, her damit !!!!!!!!!!
in deinem ordnersystem kann man nicht mal die ordner bennen wie man möchte?
!!!!!!!!! Find ich voll doof!!!!!!!!!!!!
Doch kann man ^^

Und zu den anderen :P Schaut auf die zeit wann ich das geschrieben habe, war schon halb am pennen, sry.
Fatal Error ist offline  
Alt 07.04.2006, 11:03  
Benutzer
 
Registriert seit: 11.03.2005
Beiträge: 57
gala
Standard

dann kannst du ja nach namen sortieren oder.. und die ganzen 2s und 3.2s usw fallen dan mal weg^^
gala ist offline  
Alt 07.04.2006, 11:15  
Erfahrener Benutzer
 
Registriert seit: 14.10.2005
Beiträge: 153
Fatal Error
Standard

Zitat:
Zitat von gala
dann kannst du ja nach namen sortieren oder.. und die ganzen 2s und 3.2s usw fallen dan mal weg^^
Ömm, die 2, 2.1, 2.2 .. waren nur zur veranschaulichung. damit es klar ist welcher ordner wessen unterordner ist, natürlich sind es nicht die Namen.

Sortierfunktion könnte man da auch einbauen ^^ "Gute Idee"
Es ist aber auch so gedacht dass wenn du einen Ordner ganz oben haben willst, oder auch irgendwo in der mitte, dann kannst den ordner einfach dorthin verschieben, also man könnte dann die ordner theoretisch an eine beliebige Position verschieben :P
Fatal Error ist offline  
Alt 07.04.2006, 11:19  
Benutzer
 
Registriert seit: 11.03.2005
Beiträge: 57
gala
Standard

naja dann musst du wohl wirklich alle einzelnen ordner updaten. aber wenn windows das vorbild is.. mach doch lieber sortier funktion nach name grösse etc.

und dann vielleicht noch ne option das man einen bestimmten ordner oben festpinnen kann (wie forum)..
gala ist offline  
Alt 07.04.2006, 11:22  
Erfahrener Benutzer
 
Registriert seit: 14.10.2005
Beiträge: 153
Fatal Error
Standard

Naja, Windoof soll eigentlich nicht das vorbild sein ^^ das selbe gibt es ja auch bei Linux
Fatal Error ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Treemenü Beitragsarchiv 2 26.04.2005 09:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
tree menu php, php tree menu, treemenuxl.php, php tree-menu -javascript, treemenu.php -javascript, treemenu php5, php tree menu pfade, tree menu php ordner mit bilder, php treemenu ordnerstruktur, php tree menu aus datenbank, tree menu php ordnerstruktur, treemenu php

Alle Zeitangaben in WEZ +1. Es ist jetzt 01:42 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.