Dateianzeige über $_GET-Array
Schaich
- php
0 Klawischnig0 Ingo Turski
Hey,
ich bin noch ziemlicher Anfänger mit PHP und versuche gerade auf einer Seite den Inhalt so einzurichten, dass die einzelnen php-Dateien aufgerufen werden sollen, wenn das entsprechende keyword in der Adressleiste mit übergeben wird.
Die Datei mit dem Array sieht so aus:
<?php
$dateien = array();
$dateien['Home']= "Home.php";
$dateien['Aktuelles']="Aktuelles.php";
$dateien['Personal']="Personal.php";
$dateien['Mitarbeiter']="Mitarbeiter.php";
$dateien['Stellen']="Stellen.php";
$dateien['Referenzen']="Referenzen.php";
$dateien['Impressum']= "Impressum.php";
$dateien['Kontakt']= "Kontakt.php";
$dateien['Dienstleistungen']= "Dienstleistungen.php";
?>
Die Datei die dann entscheidensoll welche Datei angezeigt werden soll so:
<?php
error_reporting(E_ALL);
if(isset($_GET['section']) AND isset($dateien[$_GET['section']])) {
include $dateien[$_GET['section']];
} else {
include $dateien['Home'];
}
?>
ICh weiss nicht warum aber es wird immer nur die Datei Home.php angezeigt also nur die aus dem else-Zweig.
Kann mir Jemand sagen warum?
MfG schaich
Hi there,
ICh weiss nicht warum aber es wird immer nur die Datei Home.php angezeigt also nur die aus dem else-Zweig.
Schwer zu sagen, wenn Du nicht bekanntgibst, wo oder von welchem Eingabefeld 'section' herkommen soll...
Schwer zu sagen, wenn Du nicht bekanntgibst, wo oder von welchem Eingabefeld 'section' herkommen soll...
Ah ich hab meinen Fehler gefunden ...
Danke
MfG Schaich
hi,
Ah ich hab meinen Fehler gefunden ...
Für das Archiv wäre es Sinnvoll, wenn du noch kurz beschreibst, was der Fehler war.
holla holla
Für das Archiv wäre es Sinnvoll, wenn du noch kurz beschreibst, was der Fehler war.
War nur ein Rechtschreib fehler.
Hab bei den Links in die Adresse "sektion" statt "section" geschrieben also:
<a href="xxx.php?sektion=xy">xy</a>
MfG Schaich
echo $begrüßung;
War nur ein Rechtschreib fehler.
Hilfsmittel zur Fehlersuche sind immer wieder Kontrollausgaben von Variableninhalten und Ergebnisse von Ausdrücken. Am besten eignet sich dafür var_dump(), weil das vor allem auch eine Information zum Typ einer Variablen oder eines Ausdrucks liefert.
Weiterhin empfiehlt es sich, beim Entwickeln das error_reporting auf E_ALL (und display_errors auf on) zu stellen, damit einem die Notice-Meldungen nicht unterdrückt werden, die unter anderem Hinweise auf Zugriffe auf nicht vorhandene Variablen geben. Oft ist das ein Hinweis auf Tippfehler oder eine vergessene Existenz-Prüfung.
echo "$verabschiedung $name";
Hi,
ich bin noch ziemlicher Anfänger mit PHP
deshalb mal ein paar Tipps zur Vereinfachung...
$dateien = array();
$dateien['Home']= "Home.php";
$dateien['Aktuelles']="Aktuelles.php";
das lässt sich auch so schreiben:
~~~php
$dateien = array(
'Home'=>'Home.php',
'Aktuelles'=>'Aktuelles.php'
);
Wenn die Dateien jedoch ohnehin so wie die Linkparameter benannt sind, geht das noch einfacher:
$dateien = array('Home','Aktuelles');
if(!isset($_GET['section'])) $site = 'Home';
elseif(in_array($_GET['section'],$dateien)) $site = $_GET['section'];
else $site = '404'; // in diesem Fall als erste Ausgabe den Statuscode 404 senden!
// ...
include $site;
Wobei Du auf 'section' auch verzichten könntest, indem Du einfach $_SERVER['QUERY_STRING'] abfragst.
freundliche Grüße
Ingo
Moin!
Wobei Du auf 'section' auch verzichten könntest, indem Du einfach $_SERVER['QUERY_STRING'] abfragst.
Das fügt dann aber direkt eine Inkompatibilität hinzu, falls doch irgendwo noch ein zweiter Parameter benötigt wird. Ich würde es nicht tun, sofern ich nicht vorhabe, gleich einen kompletten Querystring-Parser bzw. URL-Parser einzubauen.
- Sven Rautenberg
Hi,
Das fügt dann aber direkt eine Inkompatibilität hinzu, falls doch irgendwo noch ein zweiter Parameter benötigt wird. Ich würde es nicht tun, sofern ich nicht vorhabe, gleich einen kompletten Querystring-Parser bzw. URL-Parser einzubauen.
da gebe ich Dir völlig recht (und präferiere aus SEO-Sicht bei mehreren Parametern auch einen Querystring-Parser bzw. mod_rewrite). Nur ist es doch meist so, dass ohnehin nur ein Parameter benötigt wird und ein Bezeichner dann redundant ist und oft nur verwendet wird, weil der Programmierer nicht über $_GET hinaus blickt.
freundliche Grüße
Ingo