Antworten auf deine Fragen:
Neues Thema erstellen

Frage zu: Umsetzen einer Seite mit einem Include/Switch

Hansi05

Aktives Mitglied

Hallo, hier erstmal das Tutorial um dass es sich dreht:



So wie das Tut da steht, kalppt es auch bestens: Unbenanntes Dokument

Nur ich will dass selbe Prinzip nochmal in der standarddatei.htm haben, also das der Link dann nach dem Motto ist:
Code:
http://dntm.de/php_test/index.php?seite=standardseite?seite=test

Ich hab allerdings fast keine Ahnung von PHP ... :eek:
Kann mir da jmd helfen?

Danke.
 
Zuletzt bearbeitet:

sokie

Mod | Web

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

der link sollte so aussehen: ...?seite=standardseite&sub_seite=test
das ? leitet die aufzählung nur ein, verknüpft wird das per &.
für weitere parameter brauchst du neue bezeichner.
und was soll damit passieren?
 

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Hm, danke erstmal, nur kann ich damit leider nicht viel anfangen :eek:

Soll der Code dann so aussehen:

PHP:
$sub = (isset($_GET['sub']))&? $_GET['sub'] : '';
switch ($sub) {
default :
case "standardseite" :
include("standarddatei.htm");
break; 
case "seite2" :
include("datei2.htm");
break; 
case "seite3" :
include("datei3.htm");
break;
 

CIX88

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Grüße nach DD von GRL ... :)

wenn, dann etwa so:
PHP:
$sub = isset($_GET['sub']) ? $_GET['sub'] : '';
switch ($sub) {
 case "seite2" :
  include("datei2.htm");
  break; 
 case "seite3" :
  include("datei3.htm");
  break;  
 default :
 include("standarddatei.htm");
 break; 
}

Kann man aber selber testen :) :) :)
 

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Ich komm damit nicht klar :(
Kann mir das man jemand genauer erklären? :eek:
 

kuschelmaedel

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Ich hab nicht ganz verstanden, was genau du nun bauen willst ;). So wie ich es aufgefasst habe, soll bei einem Klick auf einem der drei auf der rechten Seite das Menü oben wechseln und bei Klick auf dem Menü oben, sich der Inhalt im Content-Bereich verändern?

Zur Erklärung von Parametern:

Code:
http://dntm.de/php_test/index.php

Das hier oben ist ein ganz normaler Link. In php arbeitet man mit Variablen. Damit man auf Variablen von vorhergehenden Seiten zugreifen kann, muss man diese beim Aufruf der Seite übergeben und das passiert mit dem ?.

Code:
http://dntm.de/php_test/index.php?seite=standardseite

Hiermit kannst du in der index.php auf die Variable "seite" zugreifen und je nach Inhalt der Variable, kannst du die Seite dynamisch verändern. Mit

$seite = isset($_GET['seite']) ? $_GET['seite'] : '';

passiert in der index.php folgendes: Es wird überprüft ob eine Variable namens 'seite' existiert (dh. mit übergeben wurde), wenn ja dann weise den Inhalt der Variable der Variable 'seite' zu, sonst weise einen leerstring zu (' '). Dies ist so ca. eine Kurzschreibweise einer IF-abfrage (konditionale zuweisung). Mit den switch / case Abfragen sagst du deiner Seite nur, was genau sie tun soll, wenn die Variable 'seite' als Inhalt zb. seite3.html hat - nämlich dass diese dann in in den Bereich der index.php geladen wird.

Möchtest du jetzt eine zusätzliche Variable übergeben, wird diese mit & angehängt, also

Code:
http://dntm.de/php_test/index.php?seite=standardseite&sub_seite=test

Auf diesem Weg kannst du beliebig viele Variablen übergeben.
 
Zuletzt bearbeitet:

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Ah, bestens, jetzt hat es geklappt :)
Wer weiß was ich als ich das dass letzte Mal versucht habe für einen Fehler gemacht habe :D

Ich danke nochmal allen :)
 
Zuletzt bearbeitet:

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Abend,

ich muss mal wieder nerven :eek:
Ich hab mir mal das andere Tutorial vorgenommen:

Find das einfach besser weil ich hier nicht jede neue Seite in den Code einfügen muss.
An sich funktioniert das auch prima nur wenn ich das um noch eine Seite erweitern will, wirft der mir eine Fehlermeldung aus ... Vom Prinzip her kalppt es zwar trotzdem wenn ihr euch mal durchklickt, aber der Fehler muss ja auch weg :D
Hier mal meine Testseite dazu:

Der Aufbau ist folgender:

Ich hab also nur den Ordner 'sub' hinzugefügt und entsprechend den Code erweitert:
template.php:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Template :: <?php echo $section; ?></title>
<link href="css/style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="navi">
<ul>
    <li><a href="?section=home">Link</a></li>
    <li><a href="?section=aboutme">Link</a></li>
    <li>Link</li>
</ul>
</div>
<div id="content">
<?php include('section/'.$section.'.'.$tld.''); ?>
</div>
<?php include('section/sub/'.$sub.'.'.$tld.''); ?>
</body>
</html>
aboutme.php:
Code:
ABOUTME

<?php
$sub = $_GET['sub'];
$tld = "php";

if (empty($sub) || !file_exists('section/sub/'.$sub.'.'.$tld.'')) {
    $section = 'home';
}
?>

<a href="?section=aboutme&sub=test">weiter</a>
Iwie kapiert der ja anfangs nur nicht das im Ordner sub auch eine Datei ist, hab ich jedenfalls das Gefühl, aber ich weiß nicht warum :(

Ich hoff mal dass mir wieder jmd helfen kann :eek:
 

stroyer

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Das Problem ist, dass $GET['sub'] standardmäßig nicht gesetzt ist; Ich würde im Script template.php bei Line 19 einfach zuerst überprüfen, ob $sub!='' ist; wenn doch entweder nichts unten laden oder einen Standardinhalt laden.
 

puur

Nicht mehr ganz neu hier

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

hmm ick hab noch ne etwas andere methode für das switch case include und das funktioniert auch also hier mal der quellcode:


HTML DATEI:
HTML:
<?php
    extract($_SERVER);
    extract($_ENV);
    extract($_GET);
    extract($_POST);
    extract($_REQUEST);
    extract($_FILES); 
    include './inc/status.php';
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        <title>Untitled Document</title>
        <link rel="stylesheet" type="text/css" href="./css/default.css" />
        <link rel="stylesheet" type="text/css" href="./css/navi.css" />
        <!--[if lt IE 7]>
            <link rel="stylesheet" media="screen" href="./css/ie7.css" />
        <![endif]--> 
        
        <script type="text/javascript" src="script.js"></script>
    </head>
    <body>
        <?php include $content ?>
    </body>
</html>
SWITCH CASE DATEI:
HTML:
<?php
    switch($site)
    {
        case 'test':
        $content = "inc/test.php";
        break;
        
        default:
        $content = "inc/startseite.php";
        break;
    }
?>
so das funktioniert auf jeedenfall ;) und ist auch recht unkompliziert wie ich finde.
 
Zuletzt bearbeitet:

stroyer

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Über extract werden die Wertpaare einfachen Variablen zugeordnet.
In dem Fall wird $_GET['irgendwas'] einfach in $irgendwas umgewandelt.
 

netbandit

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Wobei dann doch $_FILES locker $_GET überschreiben kann; Wozu dann Superglobale? :hmpf:
 

stroyer

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Für solch einen einfachen Fall würde extract($_GET); genügen. Aber das sind Details.
@puur: täuscht es mich oder gehört eigentlich case 'test': statt case test: ?
 

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Das Problem ist, dass $GET['sub'] standardmäßig nicht gesetzt ist; Ich würde im Script template.php bei Line 19 einfach zuerst überprüfen, ob $sub!='' ist; wenn doch entweder nichts unten laden oder einen Standardinhalt laden.
Stellt sich für mich nur die Frage wie ich das anstelle :eek:
Oder wie setze ich da standardmäßig eine Datei ein?
 
Zuletzt bearbeitet:

puur

Nicht mehr ganz neu hier

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

@stroyer ja da hast du natürlich recht ;) es müsste lauten case 'test': vielen dank das du mich darauf aufmerksam gemacht hast. es ist immer schlecht sich falsches einzuprägen.
 

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

puur: Bei deiner Variante müsste ich ja aber wieder jede Seite einzeln einzeln rein packen oder?
 

stroyer

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

Du könntest aber auch zuerst prüfen, ob das ein gültiger Dateiname ist, danach, ob die Datei vorhanden ist und wenn ja sie includen.
 

netbandit

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

puur: Bei deiner Variante müsste ich ja aber wieder jede Seite einzeln einzeln rein packen oder?

Jede Seite einzeln zu definieren, ist so ziemlich die sicherste Methode. So kannst Du sichergehen, dass auch wirklich nur die gewünschten Seiten angezeigt werden.

Willst Du nicht jede Seite im Quellcode nachtragen, könntest Du beispielsweise mit einer ID arbeiten. Zahlen lassen sich m.E. leichter auf Gültigkeit überprüfen. Das könnte dann in etwa so aussehen:

index.php
PHP:
<?
$pfad='inhalte/'; // Verzeichnis mit Inhalten
$startseite=1;    // Start-bzw.Standardseite
$id = isset($_GET['id']) && ctype_digit($_GET['id']) ? $_GET['id']+0 : $startseite; // Prüfen ob id vorhanden und eine Ziffer (0-9) ist, wenn nicht die Starseite als id nehmen
if(!file_exists($pfad . $id . '.htm')){ // Prüfen ob Datei vorhanden ist, wenn nicht Header 404 ausgeben
    header('HTTP/1.0 404 Not Found');
    header('Status: 404 Not Found');
    exit;
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Seitenname</title>
</head>
<body>
<a href="?id=1">Startseite</a>
<a href="?id=2">Impressum</a>
<a href="?id=3">Kontakt</a>
<?
include($pfad . $id . '.htm');
?>
</body>
</html>
Ordnerstruktur würde in dem o.g. Fall dann so aussehen

index.php
-| inhalte
--| 1.htm (Startseite)
--| 2.htm (Impressum)
--| 3.htm (Kontakt)

Nachteil: Zum Bearbeiten musst du halt jedes Mal in der Adresszeile schauen welche ID welche Seite hat?!
Vorteil: Brauchste keine weiteren Seiten im Code ergänzen/hinzufügen, switch & Co entfallen
 
Zuletzt bearbeitet:

Hansi05

Aktives Mitglied

AW: Frage zu: Umsetzen einer Seite mit einem Include/Switch

*pfeif pfeif* ich habs :D

Danke an alle die mir geschrieben haben ;)

War eig ne recht logische Sache die eig gleich in der ersten Antwort stand, einfach mal $section = ''; mit einer Seite füllen :D
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.565
Beiträge
1.538.067
Mitglieder
67.488
Neuestes Mitglied
Andrew56524
Oben