php und frames

kewl

Grünschnabel
ich fang gerade erst mit php an und hab da ein paar fragen.

1. um frames zu vermeiden benutze ich include() oder require().
das schaut dann so aus das ich z.b. eine kopf.php und eine fuss.php bastel und den inhalt da zwischen halt mit

include(kopf.php) und include(fuss.php) versehe. was auch wunderbar klappt ohne probleme.


include(kopf.php)

inhalt von z.b. news.php

include(fuss.php)

meine frage ist ob es noch einfacher geht und ob das zu umständlich ist ?

hab da so nen tutorial gefunden aus dem ich aber nicht so wirklich schlau werde. ich häng es mal an. dort steht irgendwas mit dem verlinken von seiten.

danke
 

Anhänge

  • php statt frames.zip
    3,8 KB · Aufrufe: 26
so isses erstmal ok....

ich benutze include...

php.net:

include() unterscheidet sich von require() dadurch, dass die include-Anweisung jedesmal neu ausgewertet wird, sobald sie auftritt (und nur zur Ausführungszeit). Dagegen wird die require()-Anweisung beim ersten Auftreten mit der angegebenen Datei ersetzt, egal ob sie einzubinden ist oder nicht (innerhalb von bedingten Anweisungen, z.B. bei if auch dann, wenn das ausgewertete Argument FALSE ergeben hat).
 
Ich schreibe mir funktionen in eine datei, die dann included wird. In meiner Hauptdatei stehen dann grösstenteils nur funktions aufrufe. Spart arbeit und ist einfacher zu modifzieren.

So Long
TheVirus

P.S.: Aber so geht's auch
 
yo vielen dank :)

aber könnt ihr euch noch vielleicht nur gaanz kurz meinen anhang anschauen ?

ich kannes auch kopieren.

<html>
<head>
<?php if (${QUERY_STRING}==""): ?>
<title> News</title>
<?php endif; ?>
<?php if (${QUERY_STRING}=="tuts"): ?>
<title> Tutorials</title>
<?php endif; ?>
<?php if (${QUERY_STRING}=="maps"): ?>
<title> Maps</title>
<?php endif; ?>
</head>
<body>
<table width="100%" border="2">
<tr>
<td>
<a href="phptut.php"> Home</a> <br>
<a href="phptut.php?tuts"> Tutorials</a> <br>
<a href="phptut.php?maps"> Maps</a>
</td>
<td>
<?php if (${QUERY_STRING}==""): ?>
<h1> News </h1> (inhalt von hauptseite)
<?php endif; ?>
<?php if (${QUERY_STRING}=="tuts"): ?>
<h1> Tutorials</h1> (inhalt von tutorialsseite)
<?php endif; ?>
<?php if (${QUERY_STRING}=="maps"): ?>
<h1> Maps</h1>(inhalt von mapsseite)
<?php endif; ?>
</td>
</tr>
</table>
</body>
</html>

Das ganze wirkt erstmal wie eine 'gewöhnliche' HTML-Datei, nur das eben ein paar PHP-Kommandos eingeschoben sind:

<?php if (${QUERY_STRING}==""): ?>
Hier kann HTML-Code stehen
<?php endif; ?>

'<?php ' Beginnt einen PHP-Bereich, hier kann man also PHP-Kommandos benutzen.
'?>' Beendet den PHP-Modus und danach kann man wieder HTML einfügen

Erklärung des PHP-Codes:

<?php if (${QUERY_STRING}==""): ?>

Die ist eine If-Clause, das heisst alles hiernach wird nur dann angezeigt, wenn das Argument erfüllt ist.
'{QUERY_STRING}' Liest die Zeichen aus, die an die URL der seite Angehängt werden.
Wenn die eigentliche URL der Seite als zum beispiel index.php ist, ist alles dahinter im QUERY_STRING enthalten.
Wenn die seite einfach 'so' aufgerufen wird, wird der HTML-Code angezeigt, der zwischen

<?php if (${QUERY_STRING}==""): ?>

und

<?php endif; ?>

steht.

Ein link auf z.B. die Maps-Section eurer Homepage müsste dann auf folgende URL zeigen:
index.php?maps

Dann ist 'maps' der QUERY_STRING, und es wird eben nicht der 'Start-HTML-Code' ausgeführt, sondern der für die Mapsection also:

<?php if (${QUERY_STRING}=="maps"): ?>
(inhalt von mapsseite)
<?php endif; ?>

Diese Technik kann man auch bei <title>Seitenüberschrift</title> benutzen, und kann so jeder Seite eine eigene Browserüberschrit geben (mit Framers nicht möglich)
 
Das sieht aber nicht sehr schön aus. Ich würde versuchen HTML und PHP zu trennen und im HTML part dann nur noch echos ausgeben.
Dazu musst du die if abfrage oben reinpacken. Hier ein beispiel für den Titel:
PHP:
<?php
switch $QUERY_STRING
{
  case "":
    $page_title = "News";
    break;
  case "tuts":
    $page_title = "Tutorials";
    break;
  case "maps":
    $page_title = "Maps";
    break;
}
?>
<html>
<head><title><?php echo $page_title; ?></title></head>
<body>
INHALT BLA
</body>
</html>

Hättest du beispielsweise ne funktion für den page header geschrieben bräuchtest du den titel der seite einfach nur als paramter übergeben. Ist viel flexibler als mit includes zu arbeiten.

So Long
TheVirus
 
Zurück