php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger

PHP Einsteiger PHP Problemlösungen für Spracheinsteiger
Archive: 2004, 2004/2, 2005, 2005/2, 2006, 2007, 2008, 2009, 2010,

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 20.12.2011, 08:44  
Neuer Benutzer
 
Registriert seit: 29.11.2011
Beiträge: 14
PHP-Kenntnisse:
Anfänger
sponge93 befindet sich auf einem aufstrebenden Ast
Standard Rekursive Liste erstellen

Hallo,

ich bekomme aus einer Datenbankabfrage ein Datensatz, indem eine Rekursive Ordnerstruktur steht:


| Ordner | Unterordner |
| Admin | Test |
| Admin | User |
| Admin | Steuerung |
| Vertrieb| Filiale |
| Vertrieb| Werbung |
| Werbung | Fernsehen |
| Werbung | Zeitung |



also der Ordner Admin hat die Unterordner Test, User und Steuerung der Ordner Vertrieb hat die Unterordner Filiale und Werbung und der Unterordner "Werbung" (von Vertrieb) hat wieder die Unterordner Fernsehen und Zeitung



ich will das ganze jetzt in so einer Art aufklappbarem Menü darstellen

aber ich weis garnicht, wie ich den Datensatz am besten ausgeben kann, das alles an der richtigen Stelle in der Liste kommt

Hat da jemand eine Idee, wie ich dieses Array mit den Datensätzen dann am besten durchlaufen könnte ?
sponge93 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 20.12.2011, 09:10  
Erfahrener Benutzer
 
Benutzerbild von wolf29
 
Registriert seit: 17.03.2010
Beiträge: 1.833
PHP-Kenntnisse:
Fortgeschritten
wolf29 wird schon bald berühmt werdenwolf29 wird schon bald berühmt werden
Standard

Hi,

wie sieht dein bisheriger Ansatz dazu aus? Das hier sollte Dir helfen:

http://tut.php-q.net/recursion.html

mfg Wolf29
__________________
while (!asleep()) sheep++;

Unterschätze nie jemanden der einen Schritt zurück geht! Er könnte Anlauf nehmen.
wolf29 ist offline   Mit Zitat antworten
Alt 20.12.2011, 09:18  
Erfahrener Benutzer
 
Registriert seit: 14.01.2010
Beiträge: 124
PHP-Kenntnisse:
Fortgeschritten
phpsecretary kann nur auf Besserung hoffen
Standard

http://www.php.net/manual/de/class.r...veiterator.php <- das könnte auch ein Ansatz zum weiteren googlen sein...
__________________
Ich bin Programmierer und kein Frameworkinstallierer.
phpsecretary ist offline   Mit Zitat antworten
Alt 20.12.2011, 09:21  
fab
Erfahrener Benutzer
 
Benutzerbild von fab
 
Registriert seit: 28.07.2010
Beiträge: 2.308
PHP-Kenntnisse:
Fortgeschritten
fab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblickfab ist ein Lichtblick
Standard

Ich würde das Ergebnis der Datenbankabfrage direkt in ein mehrdimensionales Array schreiben, was dann folgende Struktur hat:
Code:
array (
  array (
    'name' => 'Admin',
    'children' => array (
      array (
        'name' => 'Test',
        'children' => array ( )
      ),
      array (
        'name' => 'User',
        'children' => array ( )
      ),
      array (
        'name' => 'Steuerung',
        'children' => array ( )
      )
    )
  ),
  array (
    'name' => 'Vertrieb',
    'children' => array (
      array (
        'name' => 'Filiale',
        'children' => array ( )
      ),
      array (
        'name' => 'Werbung',
        'children' => array (
          array (
            'name' => 'Fernsehen',
            'children' => array ( )
          ),
          array (
            'name' => 'Zeitung',
            'children' => array ( )
          )
        )
      )
    )
  )
)
Dieses rekursiv zu durchlaufen sollte kein Problem mehr darstellen. Edit: siehe dazu meine Vorposter

Die interessante Frage ist, wie du dieses Array mit den gegebenen Daten erzeugst. Da deine Ordner anscheinend keine IDs haben, musst du sie anhand des Namens eindeutig identifizieren (das würde ich an deiner Stelle mal überdenken, denn was ist, wenn verschiedene Unterordner den selben Namen haben?)

Mir kommt da eine Lösung mit Referenzen in den Sinn - die funktioniert so allerdings nur wenn wie in deinem Beispiel die Datensätze nach Tiefe sortiert sind (übergeordnete Ordner zuerst):
PHP-Code:
$menu = array(); // hier wird das Ziel-Array aufgebaut
$flatReferences = array(); // hier speichern wir Referenzen zu den einzelnen Knoten um direkt mittels Namen darauf zugreifen zu können

while($row getRow()) { // stellvertretend für das durchlaufen des DB-Ergebnis
  
if (!isset($flatReferences[$row['Ordner']])) {
    
// Ordner unbekannt --> anlegen als Top-Level
    
$flatReferences[$row['Ordner']] = array (
      
'name' => $row['Ordner'],
      
'children' => array ( )
    );
    
$menu[] =& $flatReferences[$row['Ordner']];
  }
  
// Unterordner anfügen
  
$flatReferences[$row['Unterordner']] = array (
    
'name' => $row['Unterordner'],
    
'children' => array ( )
  );
  
$flatReferences[$row['Ordner']]['children'][] =& $flatReferences[$row['Unterordner']];

Das könnte noch etwas Überarbeitung vertragen, um Code-Duplizierung zu vermeiden aber das überlasse ich dir
fab ist offline   Mit Zitat antworten
Antwort


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
Nach Speichern zurück zum Datensatz in der Liste Ralphonso PHP Einsteiger 8 25.07.2011 19:35
Liste erstellen mit preg_match Unbekannt PHP Tipps 2010 5 19.09.2010 10:09
[Erledigt] Liste im Array(?) vervollständigen coram PHP Tipps 2010 10 04.02.2010 17:30
Websiteteile vom User erstellen lassen magni PHP Tipps 2009 4 15.12.2009 11:17
[Erledigt] foreach schleife beim erstellen einer image_map schlägt fehl litterauspirna PHP Tipps 2009 8 25.05.2009 13:04
[S] Hilfe zu JS Textbox Liste b@n@ne JavaScript, Ajax und mehr 0 01.05.2009 17:39
[Erledigt] Liste aus Datenbankdaten erstellen Supeede PHP Tipps 2009 30 18.01.2009 14:46
Liste erstellen ?? PHP Tipps 2006 8 25.01.2006 02:55
email liste erstellen me PHP Tipps 2006 2 02.01.2006 13:33
Dropdown-Menü nach klick in Liste füllen PHP Tipps 2005-2 0 13.06.2005 09:33
Stammbaum erstellen Riot PHP Tipps 2005 17 13.05.2005 16:32
[Erledigt] Liste in Textarea einfügen HTML, Usability und Barrierefreiheit 0 03.01.2005 19:16
HighScore liste erstellen PHP Tipps 2004 4 08.07.2004 22:37
Ordner per Skript erstellen --> Rechte Problem PHP Tipps 2004 2 06.07.2004 14:19
Dropdown Liste automatisch erstellen PHP Tipps 2004 2 20.06.2004 12:41

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php rekursive liste, php listen erstellen, liste erstellen php, liste php erstellen, php fileliste rekursiv, php html list rekursiv, php rekursive liste erstellen, javascript rekursive liste erstellen, rekursive liste, kann man eine liste rekursiv gestalten?, kann man eine liste rekursiv gestalten, php rekursiv liste aus array

Alle Zeitangaben in WEZ +2. Es ist jetzt 19:32 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