Antworten auf deine Fragen:
Neues Thema erstellen

PHP - Seite in Div Container laden

Fuehrwehrma

Noch nicht viel geschrieben

Hallo Zusammen

Zurzeit bin ich daran, eine Website aufzubauen (PHP).
Mein derzeitiges "Handicap" ist, dass ich mich erst gerade mit PHP auseinandergesetzt habe.

Ich habe die Website so aufgebaut, das ich 3 teile habe.
- Eine horizontale Navigation,
- darunter ein Content Bereich
- und ein Footer Bereich.

Mein Problem:
Ich will die einzelnen Seiten immer im gleichen Content laden, damit nicht
immer die ganze Seite neu geladen werden muss (siehe PHP Code).

Code:
[COLOR=#000000] [COLOR=#0000bb]<? 
[/COLOR][COLOR=#007700]switch([/COLOR][COLOR=#0000bb]$sites[/COLOR][COLOR=#007700]){ 
case [/COLOR][COLOR=#dd0000]"contact"[/COLOR][COLOR=#007700]: include([/COLOR][COLOR=#dd0000]"./sites/contact.php"[/COLOR][COLOR=#007700]); break; 
case [/COLOR][COLOR=#dd0000]"aboutus"[/COLOR][COLOR=#007700]: include([/COLOR][COLOR=#dd0000]"./sites/about.php"[/COLOR][COLOR=#007700]); break;
case ".." ... 
default: include([/COLOR][COLOR=#dd0000]"home.php"[/COLOR][COLOR=#007700]); break; 
} 
[/COLOR][COLOR=#0000bb]?>[/COLOR][/COLOR]
In der navigation.php sieht das so aus:
HTML:
<a href="index.php?sites=contact.php">Contact</a>
Jetzt möchte ich, dass, wenn eine Seite nicht vorhanden ist, eine Fehlerseite angezeigt wird. Kein 404 Error.

Muss ich das mit einer "if / else" funktion mache?

Besten Dank für eure Hilfe!
 

AW: PHP - Seite in Div Container laden

dein hoster bietet in seinen configurationsprogram sei es plesk confixx etc... einen bereich wo du eigene 404 fehlerseiten erstellen kannst die kannst du dann aussehen lassen wie du willst

frag deinen anbieter

wenn nicht glaub ich geht das auch über eine .htaccess

also öffne nen editor
und schreibe folgendes rein:
ErrorDocument 404 /404.html

das speicherst du als .htaccess

jetzt brauchst du nur noch eine 404.html erstellen nach deinen wünschen gestalten und diese beiden dateien (.htaccess u. 404.html) in dein web stammverzeichnis zu packen


geht meiner meinung nach auch mit 404.php also als php seite

mfg TD0Ne
 
Zuletzt bearbeitet:
T

ThalAMorgul

Guest

AW: PHP - Seite in Div Container laden

@TheDon0ne: Das ist doch das, was er eben nicht will !?
wenn index.php?site=foobar.php ungueltig ist, soll ne Fehlerseite angezeigt werden. Da nuetzt ihm die ErrorDocument einstellung mal gar nix, da index.php immer vorhanden ist und er nur ueber den Parameter die Seiten aendern moechte.

@TE: das ganze laedt aber trotzdem die komplette Seite in jedem fall. es werden halt nur andere Unterseiten eingebunden.
Kann aber auch gut sein, dass ich
damit nicht immer die ganze Seite neu geladen werden muss
falsch verstanden habe. Aber sobald du auf nen Link aus der Navigation klickst, wird trotzdem die ganze Seite geladen.

Loesung zu Deinem Problem waere in der Tat nen if-statement.
Koenntest dir hierzu folgende Funktion anschauen:
http://de2.php.net/manual/en/function.file-exists.php
 

sokie

Mod | Web

AW: PHP - Seite in Div Container laden

@TheDon0ne: Das ist doch das, was er eben nicht will !?
wenn index.php?site=foobar.php ungueltig ist, soll ne Fehlerseite angezeigt werden
tja aber wenn das so ist, würde doch reichen wenn $_GET['site'] gesetzt ist, aber auch nicht einer der "cases' die fehlerseite als default im switch zu setzen, und wenn es nicht gesetzt ist einfach die home.php zuladen?!

Code:
if (!isset($_GET['sites'])){
  include "home.php";
} else {
   [COLOR=#000000][COLOR=#007700]switch([/COLOR][/COLOR]$_GET['sites'][COLOR=#000000][COLOR=#007700]){ 
     case [/COLOR][COLOR=#dd0000]"contact"[/COLOR][COLOR=#007700]: include([/COLOR][COLOR=#dd0000]"./sites/contact.php"[/COLOR][COLOR=#007700]); break; 
     case [/COLOR][COLOR=#dd0000]"aboutus"[/COLOR][COLOR=#007700]: include([/COLOR][COLOR=#dd0000]"./sites/about.php"[/COLOR][COLOR=#007700]); break;
     case ".." ... 
     default: include([/COLOR][COLOR=#dd0000]"error.php"[/COLOR][COLOR=#007700]);
   } 
[/COLOR][/COLOR]
}

?
 
Zuletzt bearbeitet:

Fuehrwehrma

Noch nicht viel geschrieben

AW: PHP - Seite in Div Container laden

Vielen Dank für eure schnellen Antworten.

Werde mir den Code und den Link mal genauer ansehen.

Wegen dem "Seite neu laden":
Wenn man eine .php Seite in die Haupseite (Content) included, dann wird doch
nur der conent bereich aktualiseirt / geladen und nicht die ganze seite.
Oder habe ich mich irgendwo bei "google" verlsesen?

Nochmals Danke für eure Antworten.
 

stb_87

Web-Sheriff - ohne Bild

AW: PHP - Seite in Div Container laden

Wegen dem "Seite neu laden":
Wenn man eine .php Seite in die Haupseite (Content) included, dann wird doch
nur der conent bereich aktualiseirt / geladen und nicht die ganze seite.
Oder habe ich mich irgendwo bei "google" verlsesen?

Nochmals Danke für eure Antworten.

Da hast du dich dann verlesen. Das ist nur bei Frames der Fall, aber die sind veraltet und der Gebrauch ist strikt zu vermeiden.
 

Fuehrwehrma

Noch nicht viel geschrieben

AW: PHP - Seite in Div Container laden

OK. Dann habe ich mich verlsesen.
Kann ja mal passieren. :D


Ich habe den Code von "sokie" genommen. Funktioniert einwandfrei (getestet).

Vielen Dank nochmals. Damit schliesse ich dieses Thema.
Ich mache noch ein tutorial für andere...
 

Fuehrwehrma

Noch nicht viel geschrieben

AW: PHP - Seite in Div Container laden

Hallo Nochmals!

Ich habe nun nochmals ein Problem bezüglich "PHP - Seite in div laden". Habe den code von "sokie" übernommen und erweitert. Wenn ich den
"cases" eine php vorlage zuweise, funktioniert das recht gut. Nur: Wenn ich jetzt testweise eine vorlage lösche (z.b. extras-content.php), dann kommen immer Fehlermeldungen (Warning-> siehe weiter unten). Ich habe auch schon "google" gefragt, aber habe bis jetzt keine Lösung gefunden, wo das Problem liegt. Eigentlich sollte ja, sofern nichts vorhanden ist, die "default" Seite kommen.

Code:
[LIST=1]
[*]<?php
[*] if (!isset ($_GET['sites']) )
[*] {
[*]     include './sites/content/home-content.php';
[*] }
[*] else
[*] {
[*]     switch ($_GET['sites'])
[*]     {
[*]         case 'home': include       ('./sites/content/home-content.php'); break;
[*]         case 'contact': include   ('./sites/content/contact-content.php'); break;
[*]         case 'aboutus': include   ('./sites/content/about-content.php'); break;
[*]         case 'operation': include ('./sites/content/operations-content.php'); break;
[*]         case 'program': include   ('./sites/content/program-content.php'); break;
[*]         case 'extras': include     ('./sites/content/extras-content.php'); break;
[*]         default: include            ('./sites/content/errorpage.php');
[*]     }
[*] }
[/LIST]
?>
Naviagtion Code (.php Seite).
Code:
<div class="navmenu">
<div class="navbox">

    <ul>
    <li><a class="text1" href="index.php?sites=home">Home</a></li>

    <li><a class="text2" href="index.php?sites=contact">Kontakt</a> </li>

    <li><a class="text2" href="index.php?sites=aboutus">Über uns</a> </li>

    <li><a class="text2" href="index.php?sites=operation">Einsätze</a></li>

    <li><a class="text2" href="index.php?sites=program">Programm</a></li>

    <li><a class="text3" href="index.php?sites=extras">Extras</a></li>
    
    </ul>
    
</div>
</div>
Fehlermeldung:
Warning: main(): Unable to access ./sites/content/extras-content.php in /home/www/web431/html/sites-index.php on line 15
Warning: main(./sites/content/extras-content.php): failed to open stream: No such file or directory in /home/www/web431/html/sites-index.php on line 15
Warning: main(): Unable to access ./sites/content/extras-content.php in /home/www/web431/html/sites-index.php on line 15
Warning: main(./sites/content/extras-content.php): failed to open stream: No such file or directory in /home/www/web431/html/sites-index.php on line 15
Warning: main(): Unable to access ./sites/content/extras-content.php in /home/www/web431/html/sites-index.php on line 15
Warning: main(./sites/content/extras-content.php): failed to open stream: No such file or directory in /home/www/web431/html/sites-index.php on line 15
Warning: main(): Failed opening './sites/content/extras-content.php' for inclusion (include_path='.') in /home/www/web431/html/sites-index.php on line 15

Nochmals vielen Dank für weitere Antworten.
 

sokie

Mod | Web

AW: PHP - Seite in Div Container laden

Eigentlich sollte ja, sofern nichts vorhanden ist, die "default" Seite kommen.
nein,dein switch sagt: wenn keine der angegebenen Fälle zutrifft, dann include die inhalte von errorpage.php. und wenn nichs angefragt ist (das heisst nicht auf einen der Links geklickt wurde) dann include die home-content.php

für denn Fall,dass zwar eine Seite ausgewählt, der Fall auch im switch existiert, jedoch die Seite nicht auf dem Server existiert, hast du keine vorbereitung getroffen. dafür wäre die funktion file_exists($dateiname) wie in #3 erwähnt.
PHP:
<?php
if (!isset ($_GET['sites'])){
    $seite = './sites/content/home-content.php';
}
else
{
   switch ($_GET['sites']){
    
      case 'home': 
         $seite = './sites/content/home-content.php';
         break;
      case 'contact': 
          $seite = './sites/content/contact-content.php'; 
          break;
      case 'aboutus': 
          $seite = './sites/content/about-content.php'; 
          break;
      case 'operation': 
          $seite = './sites/content/operations-content.php'; 
          break;
      case 'program': 
          $seite = './sites/content/program-content.php'; 
          break;
      case 'extras': 
          $seite = './sites/content/extras-content.php';
          break;
         
    default: $seite = './sites/content/errorpage.php';
    
    }
    if (file_exists($seite)){
       include $seite;
    } else {
       include './sites/content/errorpage.php';
    }
}

?>
 
Zuletzt bearbeitet:

stroyer

Aktives Mitglied

AW: PHP - Seite in Div Container laden

Wegen dem Seite im DIV laden: Das geht eigentlich nur mit AJAX. Einfach einen Request starten und dessen Response per document.getElementById(id).innerHTML=response; zuweisen. Ich würde dabei eine Library wie zum Beispiel mootools verwenden, damit man sich nicht um Kleinigkeiten wie das richtige AJAX Objekt zu bekommen kümmern muss.
 

sokie

Mod | Web

AW: PHP - Seite in Div Container laden

Auch wenn die Ajax Sache (wobei hier Ajax auch nicht der richtige Begriff ist) nach dem grossen Hype imer noch in aller Munde ist, darf das nicht als Lösung für deine Sache gelten. Richtig ist, dass es damit möglich wäre allein den Content des Elements auszutauschen. Es gibt eine ganze Reihe von Nachteilen. Einer dieser Nachteile ist, dass der Besucher ohneeingeschaltetes Javascript gar nichts von den Inhalten zu sehen bekommt. Viel schwerer wiegt aber, dass deine einzelnen Inhalte nicht auch einzeln per URL angesprochen werden können,somit also weder vom Anwender gebookmarkt, noch von Suchmaschinen gelistet werden können.
In der Form ist dann das XMLHttpRequest ein (vielleicht noch ungünstigerer) Ersatz für Iframe-Lösungen.
Das nur ganz kurz dazu, warum eine Überlegung in die Richtung nicht sinnvoll ist, wo du einfach nur eine funktionierende PHP-Lösung für Deine Seite suchst.
 

stroyer

Aktives Mitglied

AW: PHP - Seite in Div Container laden

Wobei Javascript hat (fast) jeder Browser aktiviert. Eine Möglichkeit für AJAX gibt es auch (fast) immer. Das Bookmark-Problem lässt sich lösen, in dem man der Adresse immer eine Varibale anhängt, über die man ebenfalls navigieren kann. Dementsprechend kann man AJAX nicht als Ersatz sondern als Zusatz programmieren. Die Links bleiben normal, was auch das Problem mit den Suchmaschinen löst. Wenn AJAX nun geht, wird das onClick genutzt um den Link "lahmzulegen" und dafür per dann sicher funktionierendem AJAX nur den DIV-Inhalt zu ersetzen.
 

Fuehrwehrma

Noch nicht viel geschrieben

AW: PHP - Seite in Div Container laden

Hallo nochmals.
Vielen Dank für deine Zeit "sokie". Ich habe deinen php code übernommen und getestet.
Er funktioniert fast, d.h. wenn keine Seite auf dem Server vorhanden ist, kommt die fehlerseite (was auch richtig ist).
Wenn ich jetzt meine Webseit aufrufe, kommt nur die Navi und der Footer bereich. Der Content bereich ist / bleibt leer.

Mit
Code:
[COLOR=#000000][COLOR=#007700]if (!isset ([/COLOR][COLOR=#0000bb]$_GET[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]'sites'[/COLOR][COLOR=#007700]])){
    [/COLOR][COLOR=#0000bb]$seite [/COLOR][COLOR=#007700]= [/COLOR][COLOR=#dd0000]'./sites/content/home-content.php'[/COLOR][COLOR=#007700];
}[/COLOR][/COLOR]
sollte doch die "startseite" definiert sein und auch geladen werden?

Noch zur Info: wenn ich hauf den "Home" button klicke, dann erscheint die "startseite" (content).
 

sokie

Mod | Web

AW: PHP - Seite in Div Container laden

edit:
Entschuldigung, da habe ich beim geposteten Code einen fehler gemacht, das include nur dann wirklich ausführen lässt, wenn der 'else' fall eintritt.
richtig,der Teil
Code:
[COLOR=#000000][COLOR=#007700]    if ([/COLOR][COLOR=#0000bb]file_exists[/COLOR][COLOR=#007700]([/COLOR][COLOR=#0000bb]$seite[/COLOR][COLOR=#007700])){
       include [/COLOR][COLOR=#0000bb]$seite[/COLOR][COLOR=#007700];
    } else {
       include [/COLOR][COLOR=#dd0000]'./sites/content/errorpage.php'[/COLOR][COLOR=#007700];
    }[/COLOR][/COLOR]
muss natürlich ausserhalb des if/else bereichs notiert werden.

hiernochmalkomplett (und hoffentlich richtig):
PHP:
<?php
if (!isset ($_GET['sites'])){
    $seite = './sites/content/home-content.php';
}
else
{
   switch ($_GET['sites']){
    
      case 'home': 
         $seite = './sites/content/home-content.php';
         break;
      case 'contact': 
          $seite = './sites/content/contact-content.php'; 
          break;
      case 'aboutus': 
          $seite = './sites/content/about-content.php'; 
          break;
      case 'operation': 
          $seite = './sites/content/operations-content.php'; 
          break;
      case 'program': 
          $seite = './sites/content/program-content.php'; 
          break;
      case 'extras': 
          $seite = './sites/content/extras-content.php';
          break;
         
    default: $seite = './sites/content/errorpage.php';
    
    }
}
if (file_exists($seite)){
    include $seite;
} else {
    include './sites/content/errorpage.php';
}
?>
 
Zuletzt bearbeitet:

Fuehrwehrma

Noch nicht viel geschrieben

AW: PHP - Seite in Div Container laden

Entschuldigung angenommen...
Das ist mir nicht aufgefallen... Ich habe jetzt den code abgeändert und getestet.
Und siehe da, es funktioniert! :daumenhoch:

Nochmals Danke für deine Zeit. Damit schliesse ich das Thema zum 2. mal. :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.613
Beiträge
1.538.345
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben