A
andyK
Hallo,
Bis jetzt habe ich es bei meiner Seite so, dass PHP und HTML
komplett voneinander getrennt sind.
Alles wird bisher an Platzhalter übergeben.
Nun möchte ich (mal abgesehen vom Menü, wo ich das gleiche
Problem habe) in meine Seite ein Voting in Tabellenform einbauen.
Wie muss die Funktionen und das entsprechende Template aussehen,
um x-Mal <td>...</td> darzustellen?
Ich will das nicht in den Code schreiben (müssen).
die Templates meiner anderen Boxen haben folgenden HTML Code:
Titel und Inhalt stammen dabei aus einer Textdatei, die folgendermaßen
Aufgebaut ist:
<? /*
ID,BOXNAME,POSITION,ANONYM,LOGGEDIN,TPL,SOURCE,
0,Statistik,r,1,0,stat.tpl.html,<td style="BORDER-BOTTOM: #027 1px solid" class="boxbground" align="left">{datum}<br>{uhrzeit}<br>{online}<br>{heute}<br>{gestern}<br>{gesamt}</td>,
*/ ?>
Bisher hab ich nur Boxen (und zwangsweise auch das Menü), deren Inhalt
statisch, bzw.ebenfalls wieder mit Platzhaltern gefüllt ist.
Nur das Ergebnis IST DANN HALT SO und das ist mein Problem.
Bei dem Voting zum Beispiel können ja als Vote-Möglichkeit mal zwei oder
mal fünf mögliche Antworten zur Auswahl stehen. Und halt jede Auswahl soll
sein eigenes <td>...</td> bekommen.
Ich dachte so vielleicht an ein zweites Template, welches dann in etwa
so aufgebaut ist:
Also, dass er eben sooft, wie Möglichkeiten da sind, dieses Template
mit einbaut und mit entsprechenden Inhalt füllt.
Dieses "zweite" Template wäre dann praktisch x-Mal mein {inhalt} aus
dem ersten Template.
Woraus sich meine zweite Frage stellt:
Wie schreibe ich das als Source in meine Textdatei?
In dem Beispiel oben für die
Statistik war das ja einfach. Aber hier muss ich ja ein weiteres Template laden.
Geht das so irgendwie zu machen?
Hier nochmal als Beispiel der komplette Code, um z.B. meine Statistiken
in einer Box anzuzeigen:
Wär wirklich toll, wenn ihr mir da weiterhelfen könntet.
PS: Die Codes sind alle irgendwoher kopiert und solange verändert worden, bis sie
funktioniert haben. So nach dem Motto: Learning By Doing
Bis jetzt habe ich es bei meiner Seite so, dass PHP und HTML
komplett voneinander getrennt sind.
Alles wird bisher an Platzhalter übergeben.
Nun möchte ich (mal abgesehen vom Menü, wo ich das gleiche
Problem habe) in meine Seite ein Voting in Tabellenform einbauen.
Wie muss die Funktionen und das entsprechende Template aussehen,
um x-Mal <td>...</td> darzustellen?
Ich will das nicht in den Code schreiben (müssen).
die Templates meiner anderen Boxen haben folgenden HTML Code:
HTML:
<table border="0" cellpadding="5" cellspacing="0" width="140">
<tr>
<td class="linkheader">{titel}</td>
</tr>
<tr>
{inhalt}
</tr>
<tr>
<td style="HEIGHT: 10px; BACKGROUND-COLOR: #ffffff"></td>
</tr>
</table>
Titel und Inhalt stammen dabei aus einer Textdatei, die folgendermaßen
Aufgebaut ist:
<? /*
ID,BOXNAME,POSITION,ANONYM,LOGGEDIN,TPL,SOURCE,
0,Statistik,r,1,0,stat.tpl.html,<td style="BORDER-BOTTOM: #027 1px solid" class="boxbground" align="left">{datum}<br>{uhrzeit}<br>{online}<br>{heute}<br>{gestern}<br>{gesamt}</td>,
*/ ?>
Bisher hab ich nur Boxen (und zwangsweise auch das Menü), deren Inhalt
statisch, bzw.ebenfalls wieder mit Platzhaltern gefüllt ist.
Nur das Ergebnis IST DANN HALT SO und das ist mein Problem.
Bei dem Voting zum Beispiel können ja als Vote-Möglichkeit mal zwei oder
mal fünf mögliche Antworten zur Auswahl stehen. Und halt jede Auswahl soll
sein eigenes <td>...</td> bekommen.
Ich dachte so vielleicht an ein zweites Template, welches dann in etwa
so aufgebaut ist:
HTML:
<td><input type="radio" name="answer" value={vzaehler}>{option}</td>
Also, dass er eben sooft, wie Möglichkeiten da sind, dieses Template
mit einbaut und mit entsprechenden Inhalt füllt.
Dieses "zweite" Template wäre dann praktisch x-Mal mein {inhalt} aus
dem ersten Template.
Woraus sich meine zweite Frage stellt:
Wie schreibe ich das als Source in meine Textdatei?
In dem Beispiel oben für die
Statistik war das ja einfach. Aber hier muss ich ja ein weiteres Template laden.
Geht das so irgendwie zu machen?
Hier nochmal als Beispiel der komplette Code, um z.B. meine Statistiken
in einer Box anzuzeigen:
PHP:
function tplload($file)
{
// öffnet Datei und weißt den Inhalt später einer Datei zu
global $conf;
if($fp = @fopen("themes/standard/tpl/".$file, "r"))
{
$tpl = fread($fp, filesize("themes/standard/tpl/".$file));
fclose ($fp);
}
else $tpl = "Template konnte nicht geöffnet werden (themes/standard/tpl/$file)";
return $tpl;
}
//Funktion, um Tamplates anzuzeigen
function tplprint($tpl, $repla)
{
foreach($repla as $key=>$elem)
{
$tpl = str_replace("{".$key."}", $elem, $tpl);
}
return $tpl;
}
//-----------------------------------------------
//Mit dieser Funktion durchsuche ich die Datenbank, in der die Boxen definiert sind
//und zeige die Boxen dann entweder links oder rechts an (weiter unten)
function boxes($seite)
{
global $conf, $boxen_db, $menu_db,$seiten_menu;
if($boxen_db->seek(array("POSITION"=>$seite)) >= 0)
{
for($i=0;$i<$boxen_db->zeilen;$i++)
{
if($boxen_db->zeile[$i]["POSITION"] == $seite)
{
$tpl = tplload("boxes/".$boxen_db->zeile[$i]["TPL"]);
$boxes .= tplprint($tpl, array("titel" => $boxen_db->zeile[$i]["BOXNAME"],
"inhalt" => HTML_CODE($boxen_db->zeile[$i]["SOURCE"])) );
}
}
}
return $boxes;
}
//-------------------------------------------------
//Mit dieser Funktion wird all das ausgegeben, was in den Funktionen vorher
//ermittelt wurde
function finalize()
{
global $conf, $datum, $uhrzeit, $online, $heute, $gestern, $gesamt, $copyright, $pagename;
$tpl = tplload($this->stpl."/index.tpl.html");
echo tplprint($tpl, array_merge(array(
"copyright" => $copyright,
"pagename" => $pagename,
"left_boxes" => $this->boxes("l"),
"right_boxes" => $this->boxes("r"),
"datum" => "Datum: $datum",
"uhrzeit" => "Zeit: $uhrzeit",
"online" => "Online: $online",
"heute" => "Heute: $heute",
"gestern" => "Gestern: $gestern",
"gesamt" => "Gesamt: $gesamt";
exit;
}
}
Wär wirklich toll, wenn ihr mir da weiterhelfen könntet.
PS: Die Codes sind alle irgendwoher kopiert und solange verändert worden, bis sie
funktioniert haben. So nach dem Motto: Learning By Doing