php-resource



Zurück   PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr > Entwicklung > PHP Developer Forum
 

Login

 
eingeloggt bleiben
star Jetzt registrieren   star Passwort vergessen
 

 

 


PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Fragen zu Laravel, YII oder anderen PHP-Frameworks.

Antwort
 
LinkBack Themen-Optionen Thema bewerten
  #1 (permalink)  
Alt 01-05-2008, 15:58
MoRpH2k2
 Newbie
Links : Onlinestatus : MoRpH2k2 ist offline
Registriert seit: Jan 2005
Beiträge: 34
MoRpH2k2 ist zur Zeit noch ein unbeschriebenes Blatt
Question Array aufbauen aus aufeinander aufbauendem Datensatz

Hallo Leute,

ich habe ein Problem. Und zwar habe ich eine Datenbank die wie folgt aufgebaut ist:

PHP-Code:
id        parent_id        name
1        0                test1
2        1                test2
3        0                test3
4        1                test4
5        3                test5
6        3                test6
7        1                test7
8        2                test8
9        2                test9
10        2                test10
11        5                test11
12        6                test12
13        7                test13 
Wenn ich diese nun aufrufe und durchlaufe:
PHP-Code:
$sql $db->query("SELECT * FROM test");
while(
$obj mysql_fetch_object($sql)){

möchte ich gerne ein Array aufbauen welches wie folgt aussieht:
PHP-Code:
Array
(
            [
0] => Array
                (
                    [
id] => 1
                    
[name] => test1
                    
[subgroups] => Array
                                (
                                    [
0] => Array
                                        (
                                            [
id] => 2
                                            
[name] => test2
                                            
[subgroups] => Array
                                                        (
                                                            [
0] => Array
                                                                (
                                                                    [
id] => 8
                                                                    
[name] => test8
                                                                
)
                                                            [
1] => Array
                                                                (
                                                                    [
id] => 9
                                                                    
[name] => test9
                                                                
)
                                                            [
2] => Array
                                                                (
                                                                    [
id] => 10
                                                                    
[name] => test10
                                                                
)
                                                        )
                                        )
                                    [
1] => Array
                                        (
                                            [
id] => 4
                                            
[name] => test4
                                        
)
                                    [
2] => Array
                                        (
                                            [
id] => 7
                                            
[name] => test7
                                            
[subgroups] => Array
                                                        (
                                                            [
0] => Array
                                                                (
                                                                    [
id] => 13
                                                                    
[name] => test13
                                                                
)
                                                        )
                                        )
                                )
                )
            [
1] => Array
                (
                    [
id] => 3
                    
[name] => test3
                    
[subgroups] => Array
                                (
                                    [
0] => Array
                                        (
                                            [
id] => 5
                                            
[name] => test5
                                            
[subgroups] => Array
                                                        (
                                                            [
0] => Array
                                                                (
                                                                    [
id] => 11
                                                                    
[name] => test11
                                                                
)
                                                        )
                                        )
                                    [
1] => Array
                                        (
                                            [
id] => 6
                                            
[name] => test6
                                            
[subgroups] => Array
                                                        (
                                                            [
0] => Array
                                                                (
                                                                    [
id] => 12
                                                                    
[name] => test12
                                                                
)
                                                        )
                                        )
                                )
                )

Mit diesem Array könnte ich dann in Flash ein Struktugramm aufbauen.
Das Problem ist nur wie komme ich von den Datenbanksätzen möglichst einfach zu einem solchem Array? Denn es können theoretisch unendlich viele Ebenen entstehen ... Wenn es nur 2-3 wären, wäre es ja kein Problem das Array halt 2-3 mal zu durchlaufen und neu zusammenzubauen, da aber nicht garantiert werden kann wieviele Ebenen entstehen muss dies irgendwie dynamisch erfolgen ... Falls von euch jemand einer eine Idee hat oder einen kleinen Gedankenanstoß wäre ich sehr dankbar!

Viele Grüße,
Daniel
Mit Zitat antworten
  #2 (permalink)  
Alt 01-05-2008, 16:06
TobiaZ
  Moderator
Links : Onlinestatus : TobiaZ ist offline
Registriert seit: Jan 2001
Ort: MUC und MGL, Germany
Beiträge: 34.421
Blog-Einträge: 1
TobiaZ befindet sich auf einem aufstrebenden Ast
Standard

Es gibt sicher verschiedene Varianten. Da ich aber davon ausgehe, dass du die Datenstruktur nicht verändern willst, machs doch einfach ganz flott so:
PHP-Code:
$sql $db->query("SELECT * FROM test");
while(
$obj mysql_fetch_object($sql)){
  
$data[$obj->parent_id][] = $obj;

Dann hast du alle Datensätze in einem array und zwar ihrer ParentId zugeordnet.

Jetzt baust du in ner zweiten Schleife das richtige array auf, indem du bei 0 anfängst und alle Datensätze aus $data[0] zuordnest. Diese wiederum gehst du der reihe nach durch und ordnest die entsprechenden Unterdatensätze zu. Usw. Rekursive Sache halt.

--
Ansonsten könntest du dich allgemein mal mit baumstrukturen auseinander setzen und die geeignetste für dich heraussuchen.
__________________
ERST LESEN: Unsere Regeln. | Ich hab schon Pferde kotzen sehn!

READ THIS: Strings richtig trennen/verbinden | JOINs, das leidige Thema | Wegwerf E-Mail Adressen

Ich werde keinen privaten 1:1 Support leisten, außer ich biete ihn ausdrücklich an.

Wenn man sich selbst als "Noob" bezeichnet, sollte man die Finger davon lassen.
Wenn man gewillt ist daran etwas zu ändern, lernt man Grundlagen!
Mit Zitat antworten
  #3 (permalink)  
Alt 01-05-2008, 16:28
MoRpH2k2
 Newbie
Links : Onlinestatus : MoRpH2k2 ist offline
Registriert seit: Jan 2005
Beiträge: 34
MoRpH2k2 ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Hallo TobiaZ,

Danke für das Stichwort Baumstruktur ... der 1. Treffer bei Google hat mir schon die Lösung geliefert: http://www.phpbar.de/w/Baumstruktur_...Array_abbilden

Viele Grüße,
Daniel

Geändert von MoRpH2k2 (01-05-2008 um 16:37 Uhr)
Mit Zitat antworten
  #4 (permalink)  
Alt 01-05-2008, 16:40
tontechniker
 PHP Senior
Links : Onlinestatus : tontechniker ist offline
Registriert seit: Jul 2005
Beiträge: 1.972
tontechniker ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Jetzt ist lediglich noch das Problem, dass die Arrays keine fortlaufenden Nummern haben sondern stattdessen die id des Eintrages verwenden. Gibt es eine Möglichkeit das Array einfach neu zu indexieren?
PHP-Code:
array_values $array ); 
__________________
Die Regeln | rtfm | register_globals | strings | SQL-Injections | []
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre 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


PHP News

Die RIGID-FLEX-Technologie
Die RIGID-FLEX-TechnologieDie sogenannte "Flexible Elektronik" , oftmals auch als "Flexible Schaltungen" bezeichnet, ist eine zeitgemäße Technologie zum Montieren von elektronischen Schaltungen.

06.12.2018 | Berni

ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlicht
ebiz-trader 7.5.0 mit PHP7 Unterstützung veröffentlichtDie bekannte Marktplatzsoftware ebiz-trader ist in der Version 7.5.0 veröffentlicht worden.

28.05.2018 | Berni


 

Aktuelle PHP Scripte

WeltExplorer v1.0

WeltExplorer v1.0 ist ein Dateimanager zum Browsen und Operieren im Dateisystem. Bei installiertem cURL können Ordner und Dateien zu entfernten FTP-Servern hochgeladen bzw. von diesen heruntergeladen werden, etwa zum Erstellen von Backups oder Mirrorsites

06.02.2019 weltvolk | Kategorie: PHP/ File
PG Job Site Pro

> Job Site Pro - web-basiertes Programm, auf PHP/MySQL für Erstellung der funktionellen Job Board Site gebaut. Das hat erweitertes Management-System für Arbeitssuchenden und Arbeitgeber und kann für bestimmte Länder, Regionen oder einfach generelle Job Si

05.02.2019 submit@ | Kategorie: PHP/ Management
ModuleStudio ansehen ModuleStudio

Modellgetriebene Entwicklung von Erweiterungen für das Open Source Framework Zikula.

15.01.2019 Guite | Kategorie: PHP ENTWICKLUNGSUMGEBUNG
 Alle PHP Scripte anzeigen

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