new: Seite includen

Hallo liebe Leute,

ich versuche mich daran eine php-Seite umzusetzen.

Die Seite ist folgendermaßen aufgebaut:

div: cavigation: Hier sind Buttons untergebracht, die auf div. Seiten verlinken.
div: content: Hier soll der content der php-Seiten eingebaut werden.
3 weitere divs: Hier werden per iframe youtube, fotos und reverbnation widgets eingebunden.

Ich möchte, dass die Seite nicht immer neu lädt, sodass die User Musik oder Videos abpsielen können und gleichzeitig der Textcontent abgerufen werden kann.

Ich habe es schon folgendermaßen probiert:

Navigationverklinkung:

<a class="homebutton" href="http://seiten/news.php?content=news"></a>  
    <a class="musikbutton" href="http://seiten/music.php?content=music"></a>  
    <a class="contactbutton" href="http://seiten/contact.php?content=contact"></a>  
    <a class="biobutton" href="http://seiten/bio.php?content=bio"></a>  
    <a class="linksbutton" href="http://seiten/links.php?content=links"></a>

im div content:

<?php  
        switch($_GET['go'])  
        {  
  
            case 'home':    $content = 'news.php';  
                            break;  
  
            case 'music':  $content = 'music.php';  
                            break;  
  
            case 'contact':    $content = 'contact.php';  
                            break;  
  
            case 'bio':  $content = 'bio.php';  
                            break;  
							  
			case 'links':  $content = 'links.php';  
                            break; 							  
  
            default:        $content = 'news.php';  
        }  
?>

Aber es funktioniert leider nicht. Beim klicken auf einen Button macht er die gewünschte php-Seite neu auf. Die Seiten werden nicht inkludiert. Auch die index ist eine php. Hat jemand einen Tipp?

Danke und lg
new

  1. Hallo,

    Ich möchte, dass die Seite nicht immer neu lädt, sodass die User Musik oder Videos abpsielen können und gleichzeitig der Textcontent abgerufen werden kann.
    Aber es funktioniert leider nicht. Beim klicken auf einen Button macht er die gewünschte php-Seite neu auf. Die Seiten werden nicht inkludiert.

    Das lässt sich nicht mit serverseitigen Techniken alleine erreichen.

    PHP wird auf dem Server ausgeführt. PHP baut in der Regel vollständige HTML-Dokumente zusammen. PHP-Includes dienen dazu, um einzelne HTML-Teile zu einem HTML-Dokument zusammenzufügen. Das passiert auf dem Server. Zum Browser wird ein vollständiges HTML-Dokument geschickt.

    Wenn du einen normalen Link setzt und der Nutzer ihn aktiviert, so wird das aktuelle Dokument durch ein neues ausgetauscht, das ein PHP-Script auf dem Server erzeugt hat und das zum Browser gesendet wurde. Durch das Auswechseln des Dokuments werden natürlich Musik und Videos gestoppt.

    Das Auswechseln von Teilen des Dokuments lässt sich nur clientseitig lösen. Entweder mit http://de.selfhtml.org/html/frames/eingebettete.htm@title=Iframes und Links mit target-Attribut. Oder (schwieriger) mit JavaScript. Mit dem XMLHttpRequest-Objekt lassen sich Daten vom Server im Hintergrund laden und in das bestehende Dokument einfügen, ohne dass eine neue Seite geladen wird.

    Beides ist nicht unproblematisch. Zum Beispiel geht ohne weitere Maßnahmen die Verlinkbarkeit verloren. Im Falle von Iframes haben die Dokumente im Iframe typischerweise keine Navigation. Das ist unschön, wenn man sie z.B. über Suchmaschinen findet.

    Grüße,
    Mathias

    1. PHP-Includes dienen dazu, um einzelne HTML-Teile

      oder php-Teile

      zu einem HTML-Dokument zusammenzufügen. Das passiert auf dem Server. Zum Browser wird ein vollständiges HTML-Dokument geschickt.

      Genau. Das beschreibt es ja schon bestens.

      Eine weitere Möglichkeit zu der Framset oder iframe Lösung wäre noch diese: Öffne den Player in einem Popup (kann ohne die normalen Bedienelemente eines Browserfensters geschehen. Dieses Popup läuft dann parallel weiter wenn der User die Hauptseite bedient. Auch dies hat Nachteile, aber lässt sich relativ schnell erledigen.

      Cheers,
      Baba

    2. Moin!

      Das Auswechseln von Teilen des Dokuments lässt sich nur clientseitig lösen. Entweder mit http://de.selfhtml.org/html/frames/eingebettete.htm@title=Iframes und Links mit target-Attribut. Oder (schwieriger) mit JavaScript. Mit dem XMLHttpRequest-Objekt lassen sich Daten vom Server im Hintergrund laden und in das bestehende Dokument einfügen, ohne dass eine neue Seite geladen wird.

      Nicht zu vergessen: Scripteinbindung durch DOM-Manipulation. Man koennte also ein generisches JS nachtraeglich ins DOM einbinden. Das duerfte aber wohl eine eher selten anzutreffende Methode sein.

      Eine andere Loesung waere die Umstrukturierung der Seite. Man kann die Mediendaten auf einer Seite starten die einen (i)Frame enthaelt, in dem die normale Seite dargestellt wird. Bleibt natuerlich das Problem der Verlinkung. Die meisten User nehmen das was in der Browserzeile steht. Das uebliche Problem mit Frames halt.

      Evtl. sind popups eine Loesung?

      --
      Signaturen sind bloed.
  2. Hallo,

    Aber es funktioniert leider nicht. Beim klicken auf einen Button macht er die gewünschte php-Seite neu auf.

    Ja, was hast du erwartet? Dies ist ein stinknormaler Link auf eine neue Seite:

    <a class="linksbutton" href="http://seiten/links.php?content=links"></a>

    Die Seiten werden nicht inkludiert. Auch die index ist eine php. Hat jemand einen Tipp?

    Um Teile einer angezeigten Seite nachzuladen, braucht der Browser Javascript und Ajax. Der PHP-Begriff include ist hier falsch.

    Linuchs

  3. Tach!

    Ich möchte, dass die Seite nicht immer neu lädt, sodass die User Musik oder Videos abpsielen können und gleichzeitig der Textcontent abgerufen werden kann.
    Aber es funktioniert leider nicht. Beim klicken auf einen Button macht er die gewünschte php-Seite neu auf. Die Seiten werden nicht inkludiert. Auch die index ist eine php. Hat jemand einen Tipp?

    Das ist kein Problem, das man mit PHP (allein) lösen kann. Wenn nur Teile der Seite im Browser ausgetauscht werden sollen, brauchst du eine clientseitige Lösung. Eine solche hört landläufig auf den Namen Ajax.

    dedlfix.

  4. @@new:

    nuqneH

    Divitis ist heilbar.

    div: cavigation: Hier sind Buttons untergebracht, die auf div. Seiten verlinken.

    Dafür ist das HTML5-Element nav angebracht. Siehe neue Elemente für die Seitenstruktur.

    div: content: Hier soll der content der php-Seiten eingebaut werden.

    Dafür ist das HTML5-Element main angebracht. Siehe … – ähm … Spec.

    3 weitere divs: Hier werden per iframe youtube, fotos und reverbnation widgets eingebunden.

    Dafür sind die HTML5-Elemente article bzw. aside angebracht. Siehe Inhalte strukturieren.

    Qapla'

    --
    „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)