zurück zur Startseite
  


Zurück XHTMLforum > Webentwicklung (außer XHTML und CSS) > Serveradministration und serverseitige Scripte
Seite neu laden Mehrdimmensionales Array aus DB erstellen

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 13.11.2007, 18:10
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard Mehrdimmensionales Array aus DB erstellen

Hallo,

ich will/muß eine Navi mittels Smarty umsetzen.

Ich habe eine DB, in der stehen die Navipunkte drinnen.
Code:
ID  Kategorie    oID  Sort
1   Sektion1     0    0
2   Sektion2     0    0
3   Sektion2.1   2    1
4   Sektion2.2   2    2
5   Sektion2.2.1 4    1
6   Sektion3     0    0
Wie kann ich das mittels einer rekursiven Funktion in PHP aus der DB auslesen, so das ich das Ergebnis in einem Array habe, dass ich dann in Smarty verwenden kann? Ich bitte um ein paar Codezeilen und eine Erklärung dazu. Nested Sets hab ich schon x-fach gelesen, aber leider nie verstanden.

Danke Euch,
Gruß Uwe
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 13.11.2007, 19:36
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 286
Chrunchy wird schon bald berühmt werden
Standard

Hm, kannst du die DB modifizieren?

ich nehme an, das ganze soll dann wie folgt aussehen:
Sektion1
Sektion2
Sektion2.1
Sektion2.2
Sektion2.2.1
Sektion3
...

Brauchst du die Submenus immer, oder nur bei entsprechender Auswahl von ID?

Das Problem wird bei dieser DB die Sortierung beim SELECT-Query vorzugeben, damit die Reihenfolge stimmt.
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 13.11.2007, 20:01
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard

Ich wollte das eigentlich komplett darstellen und dann per CSS ein Flyoutmenü erstellen. Freilich kann ich die DB modifizieren.
Mit Zitat antworten
  #4 (permalink)  
Alt 13.11.2007, 20:43
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 286
Chrunchy wird schon bald berühmt werden
Standard

(vorherige code-schnipsel gelöscht weil blödsinnig.)

Hmm, und wie hattest du dir den Aufbau dann in HTMLvorgestellt?
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)

Geändert von Chrunchy (13.11.2007 um 20:46 Uhr)
Mit Zitat antworten
  #5 (permalink)  
Alt 13.11.2007, 20:50
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Chrunchy Beitrag anzeigen
(vorherige code-schnipsel gelöscht weil blödsinnig.)

Hmm, und wie hattest du dir den Aufbau dann in HTMLvorgestellt?
Na so, wie man halt verschachtelte Listen darstellt, wie denn sonst?
Mit Zitat antworten
  #6 (permalink)  
Alt 13.11.2007, 22:42
Benutzerbild von kampfgnom
Erfahrener Benutzer
XHTMLforum-Kenner
 
Registriert seit: 22.11.2006
Ort: Radebeul
Beiträge: 1.808
kampfgnom befindet sich auf einem aufstrebenden Ast
Standard

Naja das Prinzip wäre bei dir, eins auslesen und per ParentId rausfinden wie der "Vater" punkt heißt und das ganze rekursiv gestalten!
__________________
Meine Spielwiese: http://blog.kanedo.net
Ich bei Flickr? Da: Flickr: Fotostream von kanedo-projekt
Für open Source Liebhaber: open Com

Auch ich Zwitschere als @kanedo
Mit Zitat antworten
  #7 (permalink)  
Alt 14.11.2007, 07:03
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von kampfgnom Beitrag anzeigen
Naja das Prinzip wäre bei dir, eins auslesen und per ParentId rausfinden wie der "Vater" punkt heißt und das ganze rekursiv gestalten!
Jawoll ja, soweit war ich auch schon, nur wollte ich ganz gern wissen, wie man sowas anstellt, ohne dabei zig Abfragen nach MySQL zu schicken.
Mit Zitat antworten
  #8 (permalink)  
Alt 14.11.2007, 12:16
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 286
Chrunchy wird schon bald berühmt werden
Standard

Und du willst dann in Smarty das Array mittels foreach durchlaufen?
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)
Mit Zitat antworten
  #9 (permalink)  
Alt 14.11.2007, 14:14
Benutzerbild von uspri
Erfahrener Benutzer
XHTMLforum-Mitglied
Thread-Ersteller
 
Registriert seit: 04.07.2005
Beiträge: 900
uspri sorgt für eine eindrucksvolle Atmosphäreuspri sorgt für eine eindrucksvolle Atmosphäre
Standard

Zitat:
Zitat von Chrunchy Beitrag anzeigen
Und du willst dann in Smarty das Array mittels foreach durchlaufen?
Muß nicht sein, kann mir die Liste auch vorher erstellen und dann in Smarty als insert einbinden.
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 14.11.2007, 15:54
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 23.07.2007
Beiträge: 286
Chrunchy wird schon bald berühmt werden
Standard

Bei deiner bisherigen Tabellenstruktur könntest du folgendes versuchen:
ungetestet.

Zunächst alle oID auslesen die größer 0 sind
Code:
SELECT oID FROM TABLE WHERE oID>'0' ORDER BY oID
anschl. löscht du aus der Liste die Dubletten. (array_unique)
Dann durchläuft du folgende Schleife:

Code:
$oid = array aus der vorherigen Abfrage
$res = array();
$id=1;
$max_id = höchste Table ID
while ($id<$max_id)
{
  $sql = "SELECT * FROM TABLE WHERE ID ='$id'"; /Liefert genua einen Datensatz
  $RS = mysql_query($sql, $DB); //$DB muss natürlich connected sein
  $tmp = mysql_fetch_assoc($RS);
  if (TRUE==in_array($id, $oid)
  {
    $sql = "SELECT * FROM TABLE WHERE oID ='$id' ORDER BY Sort";
    $RS = mysql_query($sql, $DB); //$DB muss natürlich connected sein
    while ($row = mysql_fetch_assoc($RS))
    {
      array_push($res, $row);
    }
  }
  $id++;
}
In $res sollte nun das von dir gewünschte Array stehen.
__________________
Gruß Chrunchy

"Eine Theorie ist eine Vermutung mit Hochschulbildung" (James Earl Carter)
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

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 aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Ausgabe geschieht nur einmal Benutzername Serveradministration und serverseitige Scripte 0 12.05.2011 16:59
Navigation aus Array erstellen uspri Serveradministration und serverseitige Scripte 12 16.11.2010 14:32
URL mit XML in (X)HTML ausgeben blockmarc (X)HTML 17 05.06.2010 17:39
Funktion gibt Array nicht zurück Schneemann Serveradministration und serverseitige Scripte 8 05.05.2008 02:14
Array erstellen DK Serveradministration und serverseitige Scripte 4 12.06.2006 14:18


Alle Zeitangaben in WEZ +2. Es ist jetzt 11:36 Uhr.