Hilfe bei Navigation mit if ($_GET['section'] == "")

Kalma

Erfahrenes Mitglied
Hallo...
ich glaube, so langsam gehe ich euch mit meinen Problemen auf die Nerven :rolleyes:

Naja...
Auf jeden Fall, mein Problem:

Wie die meisten von euch wissen, habe ich da diese Fanpage: http://www.olsentwinfanpage
So. und die meisten von euch kennen bestimmt diese Art von Navigation:
PHP:
<?php

if (($_GET['section'] == "") OR ($_GET['section'] == "index")
{
include "news-text.php";
}
if ($_GET['section'] == "about")
{
include "about.php";
}

?>

Halt, wenn der Wert "index" aufgerufen wird, die seite news-text.php einladen.

Nun (aber jetzt wirklich) mein Problem:
auf der Seite http://www.olsentwinfanpage habe ich sogenannte iframes. Nun wollte ich Fragen ob, oder wie man folgendes schreiben kann.

Ich will folgende Seiten erstellen (als test):
-- index.php
-- index-text.php
-- news.php
-- about.php
-- menu.php


die "index.php";
PHP:
<table border="1" width="100%">
 <tr>
  <td> <?php include "menu.php"; ?> </td>
 </tr>
 <tr>
  <td> 
   <iframe src="index-text.php" width="100%" height="500" frameborder="0"></iframe>
  </td>
 </tr>
</table>

die "index-text.php";
PHP:
<?php

if ($_GET['section'] == "") OR ($_GET['section'] == "index")
{
include "news.php";
}
if ($_GET['section'] == "about")
{
include "about.php";
}

?>


die "about.php"
PHP:
<?php

echo " Hier steht alles über mich :) ";

?>


die "news.php"
PHP:
<?php

echo " Hier werden bald alle tollen news stehen ;) ";

?>


die "menu.php";
PHP:
<?php

echo " <a href=\"index.php?section=index\">News</a> ";
echo " | ";
echp " <a href=\"index.php?section=about\">About</a> ";
echo " | ";

?>


Nur, wenn ich dies mache, includet der keine Seiten... :(

Könnt ihr mir evtl. sagen, wie ich dies korrekt mache?
Oder, ob es überhaupt machbar ist?


MfG
David
 
Am besten speicherst du die einzubindenden Skripte in einem eigenen Verzeichnis. Dann kannst beispielsweise Folgendes benutzen:
PHP:
<?php

	if( isset($_GET['section']) && file_exists('/include/'.basename($_GET['section']).'.php') ) {
		include '/include/'.basename($_GET['section']).'.php';
	} else {
		include '/include/news-text.php';
	}

?>
 
Hey,

wenn du mit

PHP:
 If ($_GET['section'] == "")

guckst ob section leer ist, muss du ja immer an deine URL ?section anhängen.

Bei if (isset($_GET['section']) musst du den URL Aufruf nur mit index.php gestallten.

Gruß Xeal
 
Ich ziehe in der Regel empty() vor wenn etwas auch einen Wert enthalten soll.
isset() prueft ja nur ob der Wert uebergeben wurde, dazu reicht aber auch sowas: index.php?wert1&wert2&wert3
Dadurch hat man dann auch $_GET['wert1'], etc., diese sind jedoch leer.
 
Die empty()-Funktion sollte jedoch vorsichtig eingesetzt werden, denn nicht nur ein leerer Zeichenkettenwert gilt dort als „leer“ (siehe Rückgabewerte).
Man könnte ja eine zusätzliche Funktion einsetzen, um Nullwerte zu ignorieren, etwa:
PHP:
function foobar( &$var )
{
	if( isset($var) ) {
		if( empty($var) && $var !== 0 && $var !== '0' ) {
			return false;
		} else {
			return true;
		}
	}
	return false;
}
 
Schon richtig, empty() ist zum Teil etwas "grosszuegig". Aber wenn ein Wert erwartet wird ist es irgendwo immer noch ein wenig besser als einfach nur zu mit isset() pruefen ob die Variable gesetzt ist.
 
habe es jetzt anders gelöst :D

PHP:
     <?php
	 if (($_GET['what'] == "") OR ($_GET['what'] == "index"))
	 { echo "<iframe src=\"home.php\" width=\"100%\" height=\"100%\"></iframe>"; }
	 
	 if ($_GET['what'] == "about")
	 { echo "<iframe src=\"about.php\" width=\"100%\" height=\"100%\"></iframe>"; }
	 
	 if ($_GET['what'] == "friends")
	 { echo "<iframe src=\"friends.php\" width=\"100%\" height=\"100%\"></iframe>"; }

     ?>
 
Du solltest noch prüfen, ob die Variable überhaupt gesetzt ist, etwa:
PHP:
$_GET['what'] = isset($_GET['what']) ? trim($_GET['what']) : 'index';
 
Zurück