# PHPPage + Struktur



## elgo (24. März 2002)

Servas,

bin leider noch ein Anfänger was PHP betrifft und deshalb wollte ich fragen ob jemand noch ein genaueres Tutorial (als das) zum Aufbau und/oder zur Struktur einer PHPseite kennt oder schreiben kann.

mfg elgo


----------



## DarkSummer (24. März 2002)

kommt drauf an wie dus machen willst was soll alles dynamisch werden diese functionen sind sehr praktisch dafür also nochmal kurz ^^

config.php

```
function head()
{
    echo "Hier Der Head"; // Einfach immer so kannst auch ganze tabellen so verbinden
}
function mitte()
...
```
dann amchst du auf jeder seite wo das erscheinen soll 
	
	
	



```
include("config.php");
```
und darunter damit ers ausgibt

```
head(); // hierbei nichtmehr function
```

ich hoffe es ist so gurt erklärt 
du kannst auch in functionen if abfragen für cookies oder sessions gleich machen bzw smilie scripte undsoweiter


----------



## elgo (24. März 2002)

Danke für deine Hilfe.

Also, die Seite ist in einer Tabelle mit 3 Spalten.

links: das menü
mitte: der inhalt
recht: bild, sonstiges

wenn man links einen Link anklickt soll einer neuer Inhalt in "mitte" geladen werden. (ich habe das vorher in html mit einem iframe gelöst)

Ich kann mir das Grundgerüst ein Phpseite noch nicht vorstellen.
So dumm es auch klingt.


----------



## Matthias Reitinger (24. März 2002)

Hm... ist zwar jedem seine Sache, aber ich würde bei größeren Projekten mit Templates arbeiten. Ich erstelle auch gerade eine etwas umfangreichere Site, und muss sagen, dass Templates eine sehr schöne Möglichkeit sind, PHP- und HTML-Code sauber zu trennen.

Ich versuch mal, ganz grob zu erklären, wie das mit Templates funktioniert (gab's da nicht mal ein Tutorial dazu hier auf dem Board?... egal):

Zuerst erstellst du dir dein Seitenlayout mit deinem bevorzugten HTML-Editor. Dann zerschnipselst du deinen HTML-Code in logisch sinnvolle Bereiche. Also z.B. so:
menu.html (Das Menü links)

```
<a href="index.php">Inhalt</a><br>
<a href="seite1.php">Seite 1</a><br>
<a href="seite2.php">Seite 2</a><br>
<a href="seite3.php">Seite 3</a><br>
```

rechts.html

```
<img src="bild.gif">
```

seite1.html (Inhalt der Seite 1)

```
<b>Seite 1 Seite 1 Seite 1 Seite 1<br>
Seite 1 Seite 1 Seite 1 Seite 1<br>
Seite 1 Seite 1 Seite 1 Seite 1<br>
Seite 1 Seite 1 Seite 1 Seite 1</b>
```

seite2.html (Inhalt der Seite 2)

```
<i>Seite 2 Seite 2 Seite 2 Seite 2<br>
Seite 2 Seite 2 Seite 2 Seite 2<br>
Seite 2 Seite 2 Seite 2 Seite 2<br>
Seite 2 Seite 2 Seite 2 Seite 2</i>
```

seite3.html (Inhalt der Seite 1)

```
<u>Seite 3 Seite 3 Seite 3 Seite 3<br>
Seite 3 Seite 3 Seite 3 Seite 3<br>
Seite 3 Seite 3 Seite 3 Seite 3<br>
Seite 3 Seite 3 Seite 3 Seite 3</u>
```
Und jetzt noch die Hauptseite:
main.html

```
<html>
<head><title>Eine Site mit Templates</title></head>
<body>
<table width="100%" border=1>
  <tr>
    <td colspan="3"><h1>Überschrift</h1></td>
  </tr>
  <tr>
    <td>$menu</td>
    <td>$seiteninhalt</td>
    <td>$rechts</td>
  </tr>
</table>
</body>
</html>
```
Diese HTML-Dateien kopieren wir in einen neu erstellten Unterordner 'templates'.

So. Dann erstellen wir uns erst mal eine Datei functions.inc.php, in der u.a. die Template-Funktionen enthalten sind:
functions.inc.php

```
function gettemplate($name)
{
	$template = file("./templates/".$name.".html");
	$template = implode("", $template);
	$template = str_replace("\"", "\\\\\\"", $template);
	return $template;	
}

function printtemplate($template)
{
	echo $template;
}
```
Und jetzt kommt der eigentliche Clou: In den PHP-Dateien laden wir uns per gettemplate($templatename) die jeweilige HTML-Datei in eine Variable. Damit die Variablen, die in den Dateien vorkommen könnten (z.B. $menu, $seiteninhalt und $rechts in der index.html), durch etwas sinnvolles ersetzt werden, machen wir dabei einen Umweg über eval(). In einem konkreten Beispiel sieht das dann so aus:

index.php

```
<?
// Einbinden der Template-Funktionen
require("functions.inc.php");

// menu.html in $menu laden
eval ("\$menu = \"".gettemplate("menu")."\";");
// rechts.html in $rechts laden
eval ("\$rechts = \"".gettemplate("rechts")."\";");

$seiteninhalt = "Willkommen!";

/* main.html ausgeben. Dabei werden $menu, $seiteninhalt und $rechts
durch die zuvor in diese Variablen geladenen Dateien ersetzt */
eval ("printtemplate(\"".gettemplate("main")."\");");
?>
```
seite1.php

```
<?
require("functions.inc.php");

eval ("\$menu = \"".gettemplate("menu")."\";");
eval ("\$rechts = \"".gettemplate("rechts")."\";");
// seite1.html in $seiteninhalt laden
eval ("\$seiteninhalt = \"".gettemplate("seite1")."\";");

eval ("printtemplate(\"".gettemplate("main")."\");");
?>
```

Wenn du's bis hierher kapiert hast, sollte es nicht schwer sein, seite2.php und seite3.php selbst zu schreiben 

Ich weiß, das alles mag jetzt ziemlich verwirrend und kompliziert klingen. Aber wenn man den Dreh mal raushat, macht es Spaß, mit Templates zu arbeiten. Dann spart man nämlich viel Arbeit. Und ein Designer kann z.B. einen Teil einer Seite ändern, ohne sich durch Massen von PHP-Code wühlen zu müssen oder den PHP-Coder dazu zu zwingen 

HTH 


reima


----------



## elgo (24. März 2002)

mh .. erstmal vielen Dank für deine umfangreiche Hilfe.

Das Prinzip hab ich verstanden. (Allerdings soll die Seite nicht besonders groß werden)

Also, .. zuerst mach ich die seiten, die dann mit Hilfe von template und über eval() in die variablen: $menu, $seiteninhalt und $rechts gespeichert werden.

Die werden dann in main.htm in den jeweiligen Spalten wieder ausgegeben.

Hab ich das soweit richtig verstanden?

Aber wie laden die links in menu.htm, seite2.htm $seiteninhalt (damit es in main.htm wieder ausgegeben werden kann)?


----------

