Antworten auf deine Fragen:
Neues Thema erstellen

Bereichsangabe, Seitenangabe

sindyho0374

Nicht mehr ganz neu hier

Hallo liebe Freunde,

ich benötige wiedereinmal eure Hilfe.
Ich möchte gerne auf einer Website einen Text ausgeben der in etwas so aussehen könnte:

Sie befinden sich gerade hier: Startseite oder Kontakt oder bla bla bla.
Meine Unterseiten befinden sich in einem Ordner namens Pages und werden in die index.php includiert und so ausgegeben: wwww.meineseite.de/index.php?ref=kontakt

Alle Unterseiten habe in einem Array angelegt. Und so siehts aus:
PHP:
$ref = array();
$ref['home'] = 'pages/home.php';
$ref['about'] = 'pages/about.php';
$ref['service'] = 'pages/service.php';
$ref['workers'] = 'pages/workers.php';
$ref['kontakt'] = 'pages/kontakt.php';
$ref['agb'] = 'pages/agb.php';
$ref['impressum'] = 'pages/impressum.php';
$ref['referenzen'] = 'pages/referenzen.php';

Die Meldung dich ich ausgeben will soll aber in der index.php erfolgen weil ja darüber die Unterseiten includiert werden.

Bitte helft mir mal weiter. LG und Danke im Voraus
 

Curanai

Aktives Mitglied

Nabeeend,

also aufgrund Deiner Erzählung hast Du quasi sowas vor - ich habe mal eigenmächtig und simpel erweitert:

PHP:
$ref = array(
  "default" => array("url", "Fehler"),
  "home" => array("url", "Startseite"),
  "kontakt" => array("url", "Kontakt"),
  ...
);

Information für "ref" aus einem möglichen GET-Parameter:
PHP:
$req = (isset($_GET['ref']) ? $_GET['ref'] : "default");

Gibt es diese Seite?
PHP:
if(isset($ref[$req])){
   include( $ref[$req][0] );
}

Jetzt stellt sich nur noch die Frage, wo das echo für Dein Breadcrumb hin gehört:
- ist im include() (also in der Datei, die eingebunden wird)
- davor/danach

... im include():
$ref ist dort weiterhin gültig - ein
PHP:
echo "Sie befinden sich gerade hier: " . $ref[ $req ][1];
zeigt Dir besagte Zeile an beliebiger Stelle im include!

... davor/danach:
Ausgabe funktioniert genauso, gehört aber entweder vor das include() oder eben danach - aber auch mit in die obige IF-Abfrage.

Zugegeben, das ist nicht schön, dürfte von Dir aber schneller realisiert sein.

Ein anderer Weg wäre via JavaScript, was prinzipiell genauso arbeiten würde (parsen der URL auf ref, Bedingungen, Anzeige im DOM - aber eben "nachträglich" bzw. nach Seitenaufbau.

Bedenke bitte, dass je nach Seitenumfang (Inhalt Deiner Domain) dieses $ref eine Katastrophe wird - je mehr es (Seiten) wird. Auch empfinde ich persönlich zumindest einen switch() stilvoller und Du hast noch mehr Kontrolle (möglicher "default" für Seiten, die es nicht gibt - statt 404 für den Besucher). Gekoppelt mit OOP bzw. mindestens einer eigenen, zentralen Funktion (stellt Array-Antwort als Rückgabewert bereit) wird es etwas "freundlicher" ...

Ich hoffe, dass ich Dich gedanklich in die richtige Richtung schubsen konnte.

Gute Nacht.
 

sindyho0374

Nicht mehr ganz neu hier

Danke für deine Antwort. Also ich denke mit einem switch() meinst du dann so etwas in der Art hier?
PHP:
<?php

if(isset($_GET['site'])){

    switch($_GET['site']){

        case 'about' :

            include('./pages/about.php');

            break;

        case 'works' :

            include('./pages/works.php');

            break;

        default :

            include('./pages/error.php');

            break;

        }
    }
    else{

        include('./pages/home.php');
    }

?>

Du hast recht das es wirklich besser und übersichtlicher ist.
 

Curanai

Aktives Mitglied

Guten Morgen,

wenn Du an Deiner Quelltext-Formatierung noch ein wenig schleifst, wäre es auf Anhieb hier im Forum lesbar. :D Aber eben in genau diese Richtung ...

Läuft Dein Breadcrumb jetzt?

Weiterhin viel Erfolg.
 

Chickenshooter

Alter Mann

Moin, moin

wozu den "Switch"

eleganter wäre doch folgendes....
PHP:
$get = (isset($_GET['site']) ? $_GET['site'] : "error");
$page = "pages/".$get.".php";
if (file_exists($page)) {
        include ("pages/".$page.".php");
}

Die Überprüfung ob die Datei existiert kannst du auch weglassen, läufst aber Gefahr das Fehlermeldungen kommen...

mfg
 

Curanai

Aktives Mitglied

Hi Shooter, der switch() ist in meinen Augen deshalb sinnig, damit auch wirklich nur Seiten angefragt werden können, die aktiv im Projekt verwendet werden sowie "sollen". Seiten wie "test.php" o. ä. - welche nicht in ein operatives System gehören, aber wir alle die Realität kennen - könnten sich so nicht aufrufen lassen. Du kannst Seiten tauschen, ohne das Deine User was mitbekommen oder noch alte Seiten im Zugriff haben ... ach, es gibt so viele Szenarios. ;) Anders formuliert: Mehr Kontrolle! Aber auch der macht wirklich nur Sinn, wenn wir nicht "mal eben" über 5.000 Includes reden. ^^ Da der Umfang unklar ist, bot es sich an ... und übt. ;) Ferner war ja angedacht, dass nicht nur ein Include da erfolgt ... und schon sind wir beim THema!

Sindy, was klemmt denn jetzt?! Du hast Deine Sub-Seite inkludiert, diese sollte jetzt noch erweitert werden um die Seiteninformation, die dargestellt wird - oder Du regelst dies (wie angedacht) direkt im Switch. Nach dem switch() dann ein echo mit der gesetzten Variable. Du bist eigentlich gem. Deiner Anforderungsbeschreibung "fast" da ...

Beste Grüße
 

sindyho0374

Nicht mehr ganz neu hier

Hallo Curanai. Also erstmal danke das du mir hier hilfst.
Also wenn ich im switch() eine Variable erstelle sagen wir so:
PHP:
$home= 'Startseite';
setze ich die erstellte Variable unter die include function der jeweiligen datei die ausgegeben werden soll oder muss ich das direkt in die include function reinschreiben?

LG
 

Curanai

Aktives Mitglied

Vielleicht für Dich zum Verständnis bzgl. "include": Der "include" ist nichts anderes als ein "Platzhalter für Code, Text o. ä." - Du bindest darüber etwas vollwertig in bisherigen Code bzw. in bisheriges Umfeld ein.

Angenommen Du hast ein $foo in Deiner index.php - ganz oben; direkt nach dem PHP-Tag. Jetzt wirfst Du irgendwo ein include() rein, in dem sich ein echo $foo; befindet - Ausgabe erfolgt natürlich.

Machst Du ein echo nach dem include(), funktioniert es auch noch - demnach?! Immer und ständig ... sofern DU es nicht überschreibst (der Anfangsgedanke).

Also ...

Du kannst jetzt an jeder beliebigen Stelle Dein Breadcrumb befüllen - vor dem Include(), mit diesem oder danach aufgrund eines Wertes, der im (!) include() verankert/gesetzt wurd (das war ja auch die Ausgangsidee).

Wo Du das jetzt aber hinsetzt (bspw. in den switch()), ist ganz Deine Sache. Dort würde das jetzt so denkbar sein ...

PHP:
switch(GET){
  case "startseite":
      include("./.../startseite.php");
      $breadcrumb = "Startseite";
  break;

  case "impressum":
     include("impressum.php");
     $breadcrumb = "Impressum";
  break;
}

echo "Sie befinden sich hier: " . $breadcrumb;

Wie erwähnt: das echo kann dann da erfolgen, wo Du es tatsächlich brauchst - mit und ohne HTML bzw. CSS-Formaten.
 

Curanai

Aktives Mitglied

So leid es mir tut, aber nein, mehr ist es eigentlich nicht ... zumindest nicht nach Deiner beschriebenen Ausgangssituation. "Anders" wird es, wenn Du weitere Unterbereiche ans Breadcrumb anhängen willst - sowas wie "Sie befinden sich hier: Möbel : Wohnzimmer : Couch". Kurz: Wenn weitere Untergruppen hinzukommen. Dann ist der switch() so nicht verwendbar ... jetzt scheint es aber so, dass Du durchgeblickt hast - sehr schön. ;)
 

sindyho0374

Nicht mehr ganz neu hier

Aber funktioniert nicht :mad:

habe das jetzt so gemacht wie du es mir vorhin erklärtest.
also so.
PHP:
if(isset($_GET['page'])){ // Pruefen ob der Get Parameter 'page' einen Wert entaehlt

    switch($_GET['page']){

        case 'home' :

            include('./pages/home.php');
            $breadcrumb = "home";

            break;
und in der index.php dann so:
Code:
<?php echo "Sie befinden sich hier:" . $breadcrumb; ?>

was mache ich falsch?
 

Duddle

Posting-Frequenz: 14µHz

"Funktioniert nicht" ist keine Fehlerbeschreibung. Was für ein Quellcode wird erzeugt, wie sehen die relevanten Variablen vor ihrer Benutzung aus, inwiefern weicht das erwartete vom eigentlichen Ergebnis ab?


Duddle
 

sindyho0374

Nicht mehr ganz neu hier

Also ich hole den switch() über include rein. Die zu includierenden Seiten werden auch alle angezeigt. Das klappt alles wunderbar.
Es wird nur diese $breadcrumb nicht ausgegeben.
 

Duddle

Posting-Frequenz: 14µHz

Also musst du dir anzeigen lassen, wie $breadcrumbs zu bestimmten Zeitpunkten gefüllt ist, wenn überhaupt.


Duddle
 

Curanai

Aktives Mitglied

Also ich hole den switch() über include rein. Die zu includierenden Seiten werden auch alle angezeigt. Das klappt alles wunderbar.
Ah, das war so gar nicht erklärt. Wieso kommt jetzt der switch() auch über den include?! Der sollte diese aus der index.php (!) doch nur steuern ...

Es wird nur diese $breadcrumb nicht ausgegeben.
Nach dem switch und nach allen includes, die darüber eingebunden werden ... also so aufgebaut wie Posting #9 von mir.

Daher schließe ich mich Duddle an und Du wirst Dir $breadcrumb an mehreren Stellen mal zeigen lassen dürfen - womöglich überschreibst Du es. Setze Dir einen Init-Wert ($breadcrumb = "nix") und durchlaufe Deine Includes, welche dann immer brav ein echo abfeuern ... vielleicht fehlt der auch nur im switch() bei der default-Anweisung für "home.php" o. ä. - das sehen wir hier nicht. ;)

Weiterhin viel Erfolg.
 

sindyho0374

Nicht mehr ganz neu hier

Hallo Leute.
Freu! Ich habs doch tatsächlich hinbekommen. Curanai mit deiner Lösung aus Beitrag #9 hat es dann doch hingehauen.
Danke nochmal für deine Hilfestellung.
LG
 

sindyho0374

Nicht mehr ganz neu hier

Muss mich doch nochmal melden.
Wie gesagt geht das jetzt soweit alles ganz gut. Nur noch ein vielleicht kleines Problem.
Wenn ich nun die Seite aufrufe (index.php) soll mir ja gleich der Inhalt aus pages/home.php über die index.php ausgegeben werden. Das macht es aber nicht. Erst wenn ich direkt auf den Link Home drücke kommt der Inhalt über den switch().

Sollte ich da eine Weiterleitung drauf erstellen was ich mir aber eigentlich nicht vorstellen kann. Es sollte da doch eine andere Lösung geben.

Bitte nochmals um Eure Hilfe.

LG
 

Curanai

Aktives Mitglied

Hallo,

die Lösung ist Teil des switch() ...
Code:
default :
   include('./pages/startseite.php');
break;

Default wird immer dann ausgeführt, wenn nichts via GET kommt oder er damit nichts anzufangen weiß. Trägst Du also 'startseite.php' als "default"-Fall im switch() ein, wird dies immer benutzt, wenn eben unklar ist, was er aufrufen soll - also auch im Fall des Erstbesuches (Domainaufruf ohne GET).

Wenn Du die Fehlerseite nicht "verlieren" willst, könntest Du im default noch anfragen, ob er ein GET mitbekommen hat (was ja nicht erfüllt wäre bis hierher) - falls ja, include-Fehlerseite ... sonst eben die Startseite.

Weiterhin viel Erfolg.
 
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

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.634
Beiträge
1.538.448
Mitglieder
67.556
Neuestes Mitglied
Ggirl
Oben