• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Problem mit PHP komunikation

Nagazi

Mitglied
Hallo html com,

ich habe einen switch in der index.php und möchte das Menüpunkte aufgerufen werden aber der Seitenaufbau bleibt, also im Endeffekt das die Seite dynamisch ist.

Hier mal mein Code:

PHP:
<?php
$site=$_GET['site'];
switch($site)
{
    case login:
    $content = "sites/login.html";
    break;
    case test:
    $content = "sites/test.php";
    break;
 
    default:
    $content = "sites/default.php";
    break;
}
?>
<html>
<head>
<link rel="stylesheet" type="text/css" href="style.css">
</head>
<body>
    <div id="header">
    </div>
    <div id="navi">
        <form action="" method="get">
             <a href="?site=login">login</a>
        </form> 
    </div>
    <div id="content">
        <?php include ($content); ?>
    </div>
    <div id="footer">
    </div>
</body>
</html>

Das Problem ist sobald ich auf login klicke springt der URL auf index.php?site=login aber der Content verändert sich nicht, genausowenig wie das die default.php ausgegeben wird solang nichts geklickt wurde.

Suche schon seit stunden aber das scheint meine kenntnisse zu übersteigen ;)
 
Werbung:
Habe das mal geändert aber nichts passiert. Scheint so als durchläufe er nicht den switch.

PHP:
<?php
$site=$_GET['site'];
switch($site)
{
    case "login":
    $content = "sites/login.html";
    break;
    case "test":
    $content = "sites/test.php";
    break;
 
    default:
    $content = "sites/default.php";
    break;
}
?>

Ist den der HTML seitenaufruf richtig weil ich verstehe nicht ganz wie ich das "$_GET['site']" als Variable bekomme.

Code:
<div id="navi">
        <form action="site.php" method="get">
        <a href="?site=login"><div id="loginnavi">login</div></a>
        </form> 
    </div>
 
Werbung:
Dann muss du aber auch nach der While-Iteration folgendes machen
PHP:
$site= NULL;

switch(@$_POST["site"]){
   // cases
}

include_once $site;
 
Moin,
ich habe das gerade noch mal getestet und es funktioniert wie es soll. Den Wert aus $_GET['site'] bekommst Du automatisch, wenn Du die Seite mit ?site=foo aufrufst. Übrigens sind in Deinem Code die <form> Tags überflüssig, da Du ja nur mit Link Elementen arbeitest.
PHP:
<div id="navi">
 <a href="?site=login">login</a>
</div>

Viele Grüße
/martin
 
Zuletzt bearbeitet:
Vielen dank an euch beide klaptt nun.

Im URL steht nun ".../?site=login" sollte da nicht wohl eher ".../index.php?site=login" stehen?

@MarsGera: worin besteht der unterschied von "include_once" und "include"? Vor der $_POST Variable steht ein "@" was bewirkt es?
 
Werbung:
worin besteht der unterschied von "include_once" und "include"?

Antwort:
include_once() bindet eine angegebene Datei ein und führt sie als PHP-Skript aus. Dieses Verhalten ist identisch zu include(), mit dem einzigen Unterschied, dass die Datei, wenn sie bereits eingebunden wurde, nicht erneut eingebunden wird. Wie der Name schon sagt, wird sie nur einmal eingebunden werden.
Quelle: PHP-Manual

Vor der $_POST Variable steht ein "@" was bewirkt es?
Das @ vor $_POST unterdrückt evtl. Fehlermeldungen, wobei es hier völlig sinnlos ist! Das Einbinden des @-Zeichens solltest du dir gar nicht erst angewöhnen, sondern lieber von Haus aus mittels Debbuging sauberen Fehlerfreien Code schreiben!
 
Zurück
Oben