Mit Switch() auf url.de/?blubb zugreifen?

Stephan Liebig

Erfahrenes Mitglied
Also ich habe ein kleines Problemchen mit der Switch() Funktion.

Über switch($_GET[action]) bekomme ich das blubb von url.de/?action=blubb.

Wie muss ich die switch anpassen um das blubb von url.de/?blubb zu bekommen?
 
Hmm... scheint irgendwie nicht zu funktionieren, oder versteh ich etwas falsch?

PHP:
<?php
    switch($_GET[$_SERVER['QUERY_STRING']]) {
	case 'news':
  	  echo '<div class="inhaltDiv">'.include("news.inc.php").'</div>';
  	  echo '<div class="inhaltDivProjects">'.include("news_projects_screen.inc.php").'</div>';
  	  echo '<div class="inhaltDivStudium">'.include("news_studium_screen.inc.php").'</div>';
	break;
    }
 
Okay, da seh ich denn bei url.de/?news -> news

Habe es jetzt wie folgt geändert.

PHP:
  <?php
    switch($_SERVER['QUERY_STRING']) {
	case 'news':
  	  echo '<div class="inhaltDiv">'.include("news.inc.php").'</div>';
  	  echo '<div class="inhaltDivProjects">'.include("news_projects_screen.inc.php").'</div>';
  	  echo '<div class="inhaltDivStudium">'.include("news_studium_screen.inc.php").'</div>';
	break;
    }
  ?>

Allerdings verstehe ich jetzt den Fehler nicht.

Warning: main(news.inc.php</div>) [function.main]: failed to open stream: No such file or directory in /srv/www/vhosts/stephan-liebig.de/httpdocs/index.php on line 25

Warum zieht er das </div> zum Dateinamen hinzu ?
 
PHP:
<?php
    $var = substr(stristr($_SERVER['QUERY_STRING'], '?'), 1);
    switch($var) {
    case 'news':
        echo '<div class="inhaltDiv">'.include("news.inc.php").'</div>';
        echo '<div class="inhaltDivProjects">'.include("news_projects_screen.inc.php").'</div>';
        echo '<div class="inhaltDivStudium">'.include("news_studium_screen.inc.php").'</div>';
    break;
    }
  ?>

Versuch es einmal so.

Wobei ich nicht verstehe, wieso bei dir der Dateiname mitüberegben wird.
QUERY_STRING sollte eigentlich nur alles NACH dem Fragezeichen beinhalten.
 
Hi

Du kannst über den URL-Parameter einen Namen und einen Wert übergeben.

z.B.

Name: topic
Wert : 1

Ausgabe seite.php?topic=1

Mir ist nicht wirklich klar, was Du jetzt möchtest.

Vom Verständnis her würde ich jetzt vermuten, dass Du auf einer Startseite einen Paramter Wert übergeben möchtest um je nach Anforderungen eine andere Seite zu includieren.

bsp.
PHP:
<?php 
$arrSitePages = array(); 
$arrSitePages['1'] = 'home.php'; 
$arrSitePages['2'] = 'service.php'; 
$arrSitePages['3'] = 'weiterbildung.php'; 

//Es wird geprüft, ob die geladene Seite einen URL-Parameter mit Namen = 'topic' hat 
if (!isset($_GET['t']) || !array_key_exists($_GET['t'],$arrSitePages)) { 
    //wenn nicht wird der Variablen '$topic' der Wert 'home' zugewiesen; 
    $topic = "1"; 
} else { 
    //sonst der Wert des URL-Parameters mit Namen = 'topic' 
    $topic = $_GET['t']; 
} 

//Ausgabe wäre dann

    include("{$arrSitePages[$topic]}"); 
?>

Wenn Du nur mit dem Paramternamen arbeitest, hast Du nicht viele Möglichkeiten, eine Unterschiedlichkeit der Anforderung zu realisieren, oder ?
 
Doch das kann man durchaus.
Man kann sich so sogar eine eigene Navigation basteln.

Hier mal als Beispiel.


PHP:
<?php

function showSections()
{
  $parts = explode($_SERVER['REQUEST_URI']);
  $nav['section'] = $parts[1];
  $nav['action'] = $parts[2];
  $nav['id'] = $parts[3];
  
  return $nav;
}

$navigation = showSections();

# Und hier könnte man jetzt alles in ein
# paar schönen switch() Anweisungen
# verarbeiten.

# Die Url würde dann so aussehen:
# http://www.beispieldomain.de/index.php/sektion/aktion/id

?>
 
Zurück