Mehrere HTML Dokumente in 1 *.php-Datei speichern

Man kann ja, so viel ich weiß (und von php weiß ich im prinzip gar nix ;ugl) mehrere HTML’s in einer PHP-Datei speichern.

Deswegen sehen viele URLs auch so aus: [I]webhosting24 - Login

[/I]Nur ich check nicht so ganz wie das geht…

Man kann es ja so machen:

[PHP]

<?php $seite=$_GET["index"]; if($seite="index") { echo "eine ganze HTML seite?"; } if($seite="gewinnspiel") { echo "Hier könnte der HTML-Code von einem Gewinnspiel stehen"; } ?>

[/PHP]

Macht man das wirklich so, oder weiß ich nur nicht wie man das richtig macht? (von 2. gehe ich aus)

ganz einfach mit switch(). steht auch im F.A.Q. was zu.

Nils aka XraYSoLo

[PHP] switch($_GET[‚mode‘]) {
case „gallery“:
//code
break;
case „news“:
//code
break;
case „stuff“:
//code
break;
default, etc etc
}
[/PHP]

Also so? Aber dann braucht man für die Ausgabe von HTML-Tags usw, kein echo mehr? Tut mir eicht leid die dämlichen Fragen, aber ich bin halt n´noch ein Noob in PHP.

so gehts meiner Einung nach einfacher als mit switch:
[php]<?php
//hier kommen alle Seiten rein, die es gibt
$seiten = array(
‚startseite‘,
‚impressum‘
//und so weiter
);

$seite = isset($_GET[‚seite‘]) ? $_GET[‚seite‘] : ‚startseite‘;

include in_array($seite, $seiten) ? ‚seiten/‘.$seite.‚.html‘ : ‚seiten/startseite.html‘;
?>[/php]im Verzeichnis Seiten wäre dann alles, was es so gibt als .html-Datei und um <?php ?> herum steht der Code, der unverändert bleibt.

EDIT:
Fehler im Code berichtigt (Parameter für in_array waren vertauscht)

@BcF: Jetz kapier ich gar nix mehr.

[PHP] include in_array($seiten, $seite) ? ‚seiten/‘.$seite.‚.html‘ : ‚seiten/startseite.html‘;[/PHP]

Ich hab zu wenig Kenntnisse zum die Zeile da verstehen ;ugl und das was du gesagt hast, hat mich auch ein bissle verwirrt…

[PHP]

<?php switch($_GET['page']) { case "gallery": include("gallery.php"); break; case "news": include("news.php"); break; case "stuff": include("stuff.php"); break; default: include("index.php"); } ?>

[/PHP]
so würde ich es machen.

:wink:

Ich muss meinen Code jetzt trotzdem nochmal erklären (ich muss einfach), ob du ihn benutzt oder nicht ist deine Sache :wink:

Also gut, so gehts:

  • Du hast die Datei index.php im Hauptverzeichnis, dadrin ist dein HTML-Code
  • Du hast weiterhin das Verzeichnis Seiten, in dem erstellst du jetzt für jede Seite nur den Inhalt (also das, was sich ändert, wenn man auf einen Link klickt) d.h. du hast beispielsweise startseite.html, ueber_mich.html und impressum.html
  • Über diese Namen kannst du jetz die entsprechenden Seiten aufrufen
    [I]http://domain.tld/index.php?seite=startseite[/I]
  • Da, wo jetzt steht
    [php]//hier kommen alle Seiten rein, die es gibt
    $seiten = array(
    ‚startseite‘,
    ‚impressum‘
    //und so weiter
    );[/php]schreibst du die Seiten hin (ohne .html), die du im Verzeichnis seiten/ erstellt hast.
  • Dann fügst du den ganze Code wie er oben steht in deine index.php an der Stelle ein, wo sonst der Inhalt stehen würde.
  • Wenn du die Seite nun wie oben beschrieben aufrufst, wird an der Stelle, wo dieser Code steht nun der Inhalt der entsprechenden Datei im Verzeichnis seiten/ angezeigt

Wenn du den Code komplett verstehen möchtest guck mal hier oder hier.

Ich hoffe ich konnte mich verständlich ausrücken :wink:

Ich glaub ich habs kapiert.

Danke.

Solltest du meine Version jetzt verwenden, beachte mal das EDIT im ersten Post (hatte nen kleinen Fehler drin)

allerdings ist das strenggenommen nicht, was er gesucht hat, wenn ich das nicht falsch verstanden hab’.

Nils aka XraYSoLo

War es so gemeint?

[php]

<? if ($_GET[page]=="1") { ?>

//hier die Inhalte für index.php?page=1

<? } else if ($_GET[page]=="2") { ?>

//hier die Inhalte für index.php?page=2

<? } else if ($_GET[page]=="3") { ?>

//hier die Inhalte für index.php?page=3
//und so weiter für jede weitere Unterseite
//das Kommende nach der letzten Unterseite

<? } else { ?>

//hier die Inhalte der Startseite die mit index.php aufgerufen wird

<? } ?>

[/php]