Startseiten inhalt?!

amintosh

Grünschnabel
hallo :-)

also ich erklaere mal mein problem,

ich habe eine index.php und in der ist ein:

PHP:
<? include("nav.html"); ?>

fuer die navigation der seite und ein

PHP:
<? include("$content"); ?>

fuer das includen der inhalte

in der nav.html ist jeder link so aufgebaut

PHP:
<a href="index.php?content=kontakt.html">blabla</a>

funktioniert auch alles super,

nur ich habe das problem, wenn ich nun die index.php aufrufe hab ich erstmal keinen inhalt, nun meine eigentliche frage:

wie kann ich es machen das beim aufrufen der index.php schon eine html (z.b. news.html) reingeladen wird, ohne das man auf einen link klicken muss ?!

ist sicher eine sau bloede frage, nur ich bin totaler anfaenger was php angeht!

bedanke mich jetzt schonmal fuer eure antworten!

mfg

amintosh
 
:suchen:
PHP:
if (!isset($_GET['content'])) {
    $content = "news.html";
} else {
    $content = $_GET['content'];
}

//Oder kürzer:
$content = (!isset($_GET['content']))?"news.html":$_GET['content'];
 
Dort wo du deine includes machst
if (!isset($_GET['content'])) {
$content = "news.html";
} else {
$content = $_GET['content'];
}

bedeutet nichts anderes als

Wenn ?content = 'seite.html' (ist nur nen beispiel)
exestiert dann rufe Sie auf.
Wenn nicht dann benutze die Standart Seite

aber
if (isset($_GET['content'])) {
$content = $_GET['content'];
}
else {
$content = "news.html";
}

Ist logisch sinvoller da du dann einbinden willst wenn Content was hatt!
und nicht -> !isset()
zwar ist es das selbe aber man muss länger über die Logik nachdenken!
 
Zuletzt bearbeitet:
hmm...

wenn ich das nun einbaue ... zeigt er mir zwar die index.php an, aber keinen inhalt
auch wenn ich nun in der navi auf einen link klicke steht oben in der leiste vom verzeichniss z.b. " index.php?conent=kontakt.html " aber erzeigt keinen inhalt an

wenn ich nun aber die kontakt.html alleine oeffne zeigt sie ganz normal den inhalt an :confused:


also bei mir sieht das so aus:

PHP:
<td width="600"><? if (isset($_GET['content'])) { 
$content = $_GET['content'];
}
else {
$content = "news.html";
} ?>

 </td>

was hab ich falsch gemacht !? oO
amintosh
 
Wir müssen die variablen net 1000 mal herrumschieben!
So
und nun musst du nur noch das File übergeben
index.php?content=forum.html
index.php?content=test.html
PHP:
<td width="600">
<?
switch($_GET['content']){
   default:
   case "news.html"; // wenn content nicht exestiert dann wird standart die news includiert
      include("news.html");
   break;
   
   case "forum.html";
      include($_GET['content']);
   break;
   
   case "test.html";
      include($_GET['content']);
   break;
}
?>
 </td>

Somit haste ausserdem das sicherste was du machen kannst da wenn content nicht stimmt wird die news.html eingeblendet! egal was er eingibt ausser es stimmt natürlich aber dann Includiert er ja nen File was du auch willst :)
PHP:
 // Du kannst auch statt diesem

   case "forum.html";
      include($_GET['content']);
   break;

// -----------------------------

   case "forum";
      include($_GET['content']."html");
   break;

// schreiben 
// der unterschied in den versionen ist nur das du bei der
// unteren variante nur den Filenamen angibst ohne Endung und oben halt mit Endung
 
Zuletzt bearbeitet:
Original geschrieben von SonicBe@m
Wir müssen die variablen net 1000 mal herrumschieben!
So
und nun musst du nur noch das File übergeben
index.php?content=forum.html
index.php?content=test.html
PHP:
<td width="600">
<?
switch($_GET['content']){
   default:
   case "news.html"; // wenn content nicht exestiert dann wird standart die news includiert
      include("news.html");
   break;
   
   case "forum.html";
      include($_GET['content']);
   break;
   
   case "test.html";
      include($_GET['content']);
   break;
}
?>
 </td>


Somit haste ausserdem das sicherste was du machen kannst da wenn content nicht stimmt wird die news.html eingeblendet! egal was er eingibt ausser es stimmt natürlich aber dann Includiert er ja nen File was du auch willst :)
PHP:
 // Du kannst auch statt diesem

   case "forum.html";
      include($_GET['content']);
   break;

// -----------------------------

   case "forum";
      include($_GET['content']."html");
   break;

// schreiben 
// der unterschied in den versionen ist nur das du bei der
// unteren variante nur den Filenamen angibst ohne Endung und oben halt mit Endung


hm ja ich teste es gerade! :-)
schreib gleich mein ergebniss, aber wofuer ist jetzt das?!:

PHP:
case "forum";
      include($_GET['content']."html");
   break;

ist ne reine interessen frage :)

EDIT: so habs jetzt eingebaut und funktioniert, damit ist meine frage nach dem case ...usw. erlaedigt, da muss man also scheinbar angeben welche seiten er aufrufen darf ? also welche html includiert werden darf?! oder seh ich das falsch ? :)

mfg

amintosh
 
Zuletzt bearbeitet:
Also das mit dem Switch ist nicht gearde guter Stil.
Besonders zweifle ich an dem Konstrukt hier:
PHP:
   default:
   case "news.html"; // wenn content nicht exestiert dann wird standart die news includiert
      include("news.html");
   break;
Naja, machs lieber so:
PHP:
$aAllow = array("test", "news", "forum");
if (!isset($_GET['content'])) {
    $content = "news";
} else {
    if (in_array($_GET['content']), $aAllow)  {
        $content = $_GET['content'];
    } else {
        $content = "error";
    }
}

[...]

include($content.".html");

Und bitte: Wer bei einem !isset länger über die Logik nachdenken muss...
 
Zurück