Seite 2 von 2

Re: PHP-Template-Engine: Menu mit 2x while erstellen

Verfasst: 25.05.2010 19:26
von P7BB
mad-manne hat geschrieben:Das Array ist doch soweit ich das erkennen kann bereits korrekt gefüllt ... und es hapert immer noch am Auslesen/ausgeben des Ganzen!
Naja, es fehlt der Titel der Hauptkategorie. Man könnte es so machen, dass $menu[$i][0] immer der Titel der Hauptkategorie ist, oder man macht es mit den Klassen. ;) Ja, das mit den Klassen ist nicht die optimalste Lösung, aber es ist eine Lösung, die seinen Ansprüchen gerecht wird ;)

Re: PHP-Template-Engine: Menu mit 2x while erstellen

Verfasst: 26.05.2010 15:38
von Wuppi
Hi

Klassen? Uff ... ich bastel meine scriptchen meist so das in jedem Script EIN neues "Feature" - also Methoden, Funktionen, Aufrufe etc. die ich so bisher noch nicht gemacht habe, nutze. Jedes Script hat da "Fokus" ... In diesem Script bin ich jetzt schon weit über mein "Lern-Soll" ;) (4 neue sachen drin/geplant; Ursprünglich wars nur eine Abfrage 2er Tabellen mit einem Aufruf; dann Template, jetzt array (aus der Not, weil die gewünschte Ausgabe so mit dem Template nicht klappt) und danach Multipler-Dateiupload [Server<->Server ist dagegen Pipifax - hab ich schon festgestellt]).

Daher @P7BB - danke für deinen gut gemeinten Tip mit Klassen - aber das wird mir zuviel [wäre was fürs nächste Script]. Würde da lieber deine Ursprüngliche Idee weiterverfolgen. php.net ist in sachen array-Beispielen leider nicht so dolle :( und sonst finde ich immer wieder nur Ausgaben für ein Standardarray - aber das lässt sich alles nicht auf eine Ausgabe innerhalb einer for-Schleife umsetzen. Irgendwie tue ich mich bei dem Array-Thema schwer (nicht Umsonst hab ich das Thema jahrelang gemieden wie die Pest) - aber jetzt häng ich drin ;) - jetzt möcht ich nur noch die Daten die ich, nachvollziehbar, ins Array reinbekommen habe, wieder rausbekommen ;)

Gruß

Re: PHP-Template-Engine: Menu mit 2x while erstellen

Verfasst: 26.05.2010 17:33
von gn#36
Damit das ganze mal ein wenig vorwärts geht hier: Den ursprünglichen Arrayinhalt müsstest du z.b. so ausgeben können (ohne Template, den Umbau überlasse ich dir):

Code: Alles auswählen

$old_key = '';
foreach ($liste as $cat_key => $value)
{
$curr_key = array_keys($value);
if($old_key != $curr_key[0])
{
//Kategorie mit ausgeben:
echo "<!-- HTML für Kategorie, $cat_key als ID verwenden -->";
echo $curr_key[0];
echo "<!-- HTML Fortsetzung für Kategorie -->";
}
//Unterpunkt ausgeben
echo "<!-- HTML für Unterpunkt, $curr_key[0] als ID verwenden -->";
echo $value[$curr_key[0]];
echo "<!-- Noch mehr HTML für den Unterpunkt -->";

//Alten Wert neu füllen:
$old_key = $curr_key[0];
} 
Ich habe das nicht ausprobiert, aber das Prinzip sollte dennoch klar werden. Du gehst die Liste mit einer Schleife durch und schaust jedes mal ob sich die Kategorie geändert hat, indem du den alten Wert beim letzten Schleifendurchlauf zwischenspeicherst. Wenn er sich geändert hat, dann gibst du die Kategorie und den Unterpunkt aus, ansonsten nur den Unterpunkt.