Mailinglisten-Archive |
Hallo Mitleser, zugegen, das Prinzip der Templates habe ich (leider) immer noch nicht ganz verstanden, aber daher beschäftige ich mich jetzt damit. Ich versuche mich an einer Art Veranstaltungs-Kalender, welcher wie folgt aufgebaut ist: | ----- main -----| | | ||-- semester -- || || || || |-- monat -- ||| || |------------||| || || ||---------------|| | | |-----------------| Hier, dachte ich mir, bietet sich die Verwendung von Templates geradezu an. Es gibt also drei Dateien: * show_data.ihtml: die Hauptdatei sozusagen {OUT} * show_semester.ihtml: Sommersemester 2000, Wintersemester 2000/2001, ... <!-- BEGIN SEMESTER_ROW --> {SEMESTER_TYP} {OUT_MONTH} <!-- END SEMESTER_ROW --> * show_month.ihtml: die einzelnen Monate mit Ihren Terminen <!-- BEGIN MONTH_ROW --> {SEMESTER_MONTH} <!-- END MONTH_ROW --> (stark gekürzt) Die Daten kommen aus einer MySQL-Datenbank. Die einzelnen Semester darzustellen war kein Problem: $t->set_file("output_main" ,"show_data.ihtml"); $t->set_file("output_semester" ,"show_semester.ihtml"); $t->set_block("output_semester" ,"SEMESTER_ROW","SEMESTER_ROWS"); ... (die Semester aus der Datenbank holen) while ($q->next_record()) { $t->set_var("SEMESTER_TYP", $q->f("semester_month"); $t->parse("SEMESTER_ROWS","SEMESTER_ROW",true); } ... $t->parse("OUT","output_semester"); $t->parse("OUT","output_main"); $t->p("OUT"); Dabei muß ich zugeben, daß ich das auch nur durch testen hinbekommen habe. Speziell verstehe ich nicht: $t->set_block("output_semester" ,"SEMESTER_ROW","SEMESTER_ROWS"); und $t->parse("SEMESTER_ROWS","SEMESTER_ROW",true); Na ja, weiter im Text. Meine Überlegung war nun, folgende: $t->set_file("output_month" ,"show_month.ihtml"); $t->set_block("output_month" ,"MONTH_ROW" ,"MONTH_ROWS"); ... im "Kopf" einfügen und die while-Schleife dahingehend modifizieren, daß in der while-Schleife eine weitere while-Schleife ausgeführt wird, die die Monats-Daten "holt": ... while ($q->next_record()) { $semester_typ = $q->f("semester_typ"); $t->set_var("SEMESTER_TYP",$semester_typ); $qquery = "SELECT * FROM semester WHERE semester_typ='$semester_typ' "; $qq->query($qquery); if ($qq->num_rows()>0) { while ($qq->next_record()) { $semester_month = $qq->f("semester_month"); $t->set_var("SEMESTER_MONTH",$semester_month); $t->parse("MONTH_ROWS","MONTH_ROW", true); } // end of while } $t->parse("SEMESTER_ROWS","SEMESTER_ROW", true); } // end of while ... dann noch ein $t->parse("OUT","output_month"); vor den anderen $t->parse(...) und fertig. Aber so klappt's nicht. :-( Die Monate nicht angezeigt. Ein "print ..." in der while-Schleife zeigte mir aber, daß die Daten richtig aus der Datenbank gelesen werden. Kann mir jemand einen Tip geben, wie man die Sache "richtig" angeht? Danke schon einmal! Bye, Heiko
php::bar PHP Wiki - Listenarchive