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.