![]() |
|
|
Themen-Optionen |
|
|
Nach oben #1 |
|
Erfahrener Benutzer
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
|
Moin,
ich arbeite gerade an einer Template-Klasse. Soweit klappt schon alles. Es happert aber noch bei den schleifen. Bei einer normalen Schleife ist das ja kein problem doch sobald man Schleifen verschachtelt wird das ganze unschön. Wenn ich zum beispiel eine innere und eine äußere schleife habe. Dann bezieht sich der inhalt der inneren Schleife ja auf das momentan ausgegebene element der äußeren schleife. Das heißt ich müsste für jedes element der äußeren schleife einzeln festlegene was in der inneren schleife ausgegeben wird. Das ganze wird gerade dann häßlich und groß wenn man mehr als zwei schleifen ebenen hat oder mehrere innere schleifen besitzt. Mein problem liegt also in der Datenstruktur zur aufnahme der Schleifen daten und der realisierung einer einfachen schnittstelle (methode) zum hinzufügen von daten. Könnt ihr mir helfen? Gruß, Prophet
__________________
|
|
|
|
|
|
Nach oben #2 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Hm so ganz hab ich nicht verstanden, was du hiermit meinst
Zitat:
Danke. |
|
|
|
|
|
|
Nach oben #3 | |
|
Erfahrener Benutzer
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
|
Angenommen ich habe eine "InnereSchleife" und eine "AeussereSchleife".
Will ich diesen nun Daten zuweisen müsste ich das wie folgt machen: Code:
AeussereSchleife: | +-AS1 +-AS2 +-AS3 +-AS4 InnereSchleife: | +-IS1 +-IS2 +-IS3 +-IS4 +-IS5 +-IS6 +-IS7 Wenn ich nun "InnereSchleife" Daten zuweise wäre es ja schwachsinnig wenn dessen Daten bei jedem Element von "AeusserenSchleife" ausgegeben werden. Ich muss diese Daten also explizit bestimmten Elementen von "AeusserenSchleife" zuweisen. Das sieht dann so aus: Code:
AeussereSchleife: | +-AS1 | | | +-IS2 | +-IS4 | +-AS2 | | | +-IS1 | +-IS3 | +-IS5 | +-IS6 | +-AS3 +-AS4 | +-IS7 Zitat:
__________________
|
|
|
|
|
|
|
Nach oben #4 |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Ah, ah habe ich verstanden.
Du könntest das ja "rekursiv" lösen. Die Daten, die der innersten Schleife zugewiesen werden - das kannst du ja aus dem Template-Code, z.B. <loop var=$data_inner_loop>, per RegExp herausfilten. Dazu gehört dann ein PHP-Code:
PHP-Code:
Letztlich arbeitest du dich dann folgendermaßen vor. Du "parsed" die äußere Schleife. Findest du hier eine weitere Schleife, so "parsed" du die usw. usf.! Letztlich sollte dann eigentlich klar sein, welche Daten zu welcher Schleife gehören, oder steh ich auf dem Schlauch? Grüße, Ben. |
|
|
|
|
|
Nach oben #5 |
|
Erfahrener Benutzer
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
|
Soweit war ich auch schon.
Will ich aber nun das beim ersten element der äußeren Schleife die letzten drei elemente der inneren Schleife ausgeben, so müsste ich etwas in dieser Art schreiben: PHP-Code:
PHP-Code:
Also kommt jetzt folgendes: PHP-Code:
PHP-Code:
__________________
|
|
|
|
|
|
Nach oben #7 |
|
Erfahrener Benutzer
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
|
Gut nehmen wir mal ein Beispiel.
Das Forum unterteilt sich in Kategorien und Foren in diesen Kategorien. Also ganz klarer fall wir brauchen eine verschachtelte Schleife! Was haben wir: > Die Daten für die Kategorien. > Die Daten für die Foren. Gut, nun sollen aber nur bestimmte Foren in bestimmten Kategorien ausgegeben werden. Beispielsweise enthält Kategorie 1 die Foren 2, 5 und 8. Kategorie 2 Hingegen die Foren 1, 4, und 17. usw. Nun müssen wir also bestimmte Datensätze der inneren Schleife mit denen der äußeren Schleife verknüpfen damit nicht in jeder Kategorie alle Foren ausgegen werden! Also müssen wir jedem datensatz der Kategorie-Schleife einzeln die entsprechende Foren-Datensätze zuweisen. So für diese Modell aus zwei Ebenen kann man ja noch eine einigermasen übersichtliche Datenstruktur schaffen, auch das einfügen von Daten per funktion sollte noch gut klappen ( assign($loop, $data, $parent_data_row) ). Nun wird es kompliziert. Wenn wir diese System so erweitern das beliebig viele ebenen möglich sind. Müssen wir in jeder Daten eben und für jeden Datensatz angeben mit welchen Eltern-Datensätzen sie verknüpft sind! Ebene 3 bräuchte also bereits 2 zusätzliche parameter zur eindeutigen zuweisung. Ebene 4 benötigt bereit 3 usw. Verstehst du mein Problem jetzt?
__________________
|
|
|
|
|
|
Nach oben #8 | |
|
Erfahrener Benutzer
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.619
|
Ersteinmal muss man an dieser Stelle wohl auch mal mit einbeziehen, ob es überhaupt sinnvoll ist, eine beliebig tiefe Verschachtelung zu implementieren!
Gerade in einem Forum. Auf der Startseite siehst du Kategorien mit Foren und eventuell Subforen. Ist mehr nötig? Okay, aber zurück zum programmiertechnischen Problem. Ich würde die Daten so hinzufügen, das du für jede Schleife ein Array erstellst/füllst, welches die benötigten Daten enthält. Ich verstehe wiederum nicht so ganz, wo hier das Problem liegt: Zitat:
|
|
|
|
|
|
|
Nach oben #9 |
|
Erfahrener Benutzer
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
|
Nun gut ob es sinnvoll ist ist natürlich ein anderes thema. Zwei ebenen sind ja auch kein Problem.
Aber mich interssiert es wie man es für viele ebenen realisiert. Stecke ich hier den gerade in einem Denkfehler fest? Wie würdest du das den für sagen wir 4 ebenen implementieren?
__________________
|
|
|
|
|
|
Nach oben #10 |
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Hi.
Ich glaube, du würfelst da was zusammen, was garnicht Zusmamen gehört. Das Zuordnen der Foren zu den Kategorien gehört doch nicht in die "Darstellungs-Ecke", sondern wird im Modell definiert. Und für deine Template-Bestückung kannst lässt du dir das fertig von den jeweiligen Objekten ausgeben oder itertierst eben über die Objektlisten und übergibst dem Template-Objekt ein fertiges Array. Oder du greift direkt auf die öffentlichen Attrbute der Objekte zu. PHP-Code:
Basti |
|
|
|
|
|
Nach oben #11 | ||
|
Erfahrener Benutzer
Registriert seit: 10.05.2006
Ort: Jevenstedt
Beiträge: 131
|
Zitat:
Ich mache mir da nochmal in ruhe gedanken drüber... Vielen dank für eure hilfe. Zitat:
__________________
|
||
|
|
|
|
|
Nach oben #12 | |||
|
Erfahrener Benutzer
Registriert seit: 04.01.2006
Ort: Kassel
Beiträge: 789
|
Zitat:
Du brauchst einfach ein Bezugsobjekt. Das ist im einfachten Fall eben das Objekt selber, dem du einen Wert "unterornest" (ist bei einem Array das gleiche Spiel, wie mit Objekten). Das kann aber auch die ID eines anderen Wertes sein, aber ich vermute, das wird nicht mehr wirklich toll anwendbar sein. Zitat:
Eval? Wie kommst du denn darauf? Schau dir mal z.B. Smarty an. Ich benutze halt XML-Templates und dabei kommt dann natürlich auch korrektes PHP bei rum, ohne dass ich das selbst prüfen müsste. Das wird dann eben auch gespeichert und eingebunden. Basti |
|||
|
|
|
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| PHP template und schleifen | Victorious | PHP-Programmierung | 57 | 25.09.2007 00:18 |
| Schleifen im Templatesystem | Stefan125 | PHP-Programmierung | 4 | 19.07.2007 02:36 |
| Template - Bedingungen verarbeiten | Prophet | PHP-Programmierung | 15 | 26.06.2006 00:26 |
| Kleines Prob mit phpBB Template System | Garnele | PEAR, PECL und Frameworks | 6 | 22.10.2005 00:31 |