Ich brauche Hilfe bei einem php-include Problem - wie Seite wechseln ohne Reload

Domo
Domo
Helpful & Friendly User
HFU
Zuletzt hier
22.04.24
Registriert
31.08.03
Beiträge
11.014
Kekse
14.786
Ort
Hamburg
Ich bin gerade dabei eine neue Webseite für meine Band zu basteln. Dabei habe ich eine index2.php, in die verschiedene Inhalte mit php includet werden.

hier ein Auszug aus der index2.php:

PHP:
	<?php 
	if(isset($_GET['action']) && $_GET['action']=="news") include ("news.php");   
	elseif(isset($_GET['action']) && $_GET['action']=="bio") include ("bio.php");	
	elseif(isset($_GET['action']) && $_GET['action']=="live") include ("live.php");	
	elseif(isset($_GET['action']) && $_GET['action']=="media") include ("media.php");	
	elseif(isset($_GET['action']) && $_GET['action']=="guestbook") include ("guestbook.php");	
	elseif(isset($_GET['action']) && $_GET['action']=="contact") include ("contact.php");	
	elseif(isset($_GET['action']) && $_GET['action']=="shop") include ("shop.php");	
	else include("news.php"); 
	?>

Beim Klick auf einen Button wird dann eben <a href="?action=blabla"> aufgerufen. Funktioniert soweit auch prächtig. Problem ist, dass ich auf index2.php auch einen flashmediaplayer includet habe, der natürlich bei jedem seitenwechsel neu geladen wird. Das nervt ungemein, weil man dann immer und immer wieder die ersten paar Sekunden des selben Songs zu hören bekommt.

-> Meine Frage also: Gibt es eine Möglichkeit den Flashplayer so einzubinden, dass er bei einem Seitenwechsel nicht neu startet? Bzw gibt es eine möglichkeit die Seiteninhalte per include zu wechseln, ohne jedesmal die index2.php neu laden zu müssen?

Danke für eure hilfe :)
 
Eigenschaft
 
Das Problem hat mit PHP an sich garnichts zu tun, sondern es ist generell in HTML schwierig, Teile einer Seite beim Klicken von Links beizubehalten. Ich sehe 2 Möglichkeiten:
- Du packst den Player in ein Frame und die Seite in ein zweites Frame. So kann Seite und Player unabhängig voneinander geladen werden. Ein Link der im 2ten Frame angeklickt wird, berührt das Player-Frame nicht. Nachteil: Frames führen oft zu merkwürdigem Verhalten des Back-Button
- Du benutzt JavaScript so, dass alle Links nicht mehr zum Neuladen der Seite führen, sondern dass die entsprechenden Inhalte direkt in die bestehende Seite reingeladen werden. Nachteil: Javascript benötigt
 
- Du benutzt JavaScript so, dass alle Links nicht mehr zum Neuladen der Seite führen, sondern dass die entsprechenden Inhalte direkt in die bestehende Seite reingeladen werden. Nachteil: Javascript benötigt

das klingt mir nach einer guten lösung. wie sähe denn eine mögliche anwendung (codebeispiel?) aus?
 
habe die seiten einen horizontal fest positionierten content div, in dem die oben genannten seiten aufgerufen werden? wenn der player immer an der selben stelle steht, würde ich lieber ein zusätzliches divtag einbauen, und den contentbereich so belassen, bzw. unter/neben den div container mit dem player verschieben. besser als frames und javascript brauch auch keiner :)
 
würde ich lieber ein zusätzliches divtag einbauen, und den contentbereich so belassen, bzw. unter/neben den div container mit dem player verschieben. besser als frames und javascript brauch auch keiner :)

Gibt es denn eine Möglichkeit, den Div neu zu laden ohne die ganze Seite neu zu laden?
 
Gibt es denn eine Möglichkeit, den Div neu zu laden ohne die ganze Seite neu zu laden?

das ist die frage. die ganze seite ist in divs unterteilt, so erscheint der inhalt in einem und der player ist in einem anderen.
 
Also dass es geht ist klar, aber er meinte es ginge ohne Javascript. Bin da ja selbst nicht so der Experte...
 
Gibt es denn eine Möglichkeit, den Div neu zu laden ohne die ganze Seite neu zu laden?

meinst du den content div, oder den player div?

also so wie ich es verstanden habe, ist nur erstes gewollt.

PHP:
<div id='player'> include_once 'player'; </div>
<div id='content'>
$page = $_GET['page'];

if($page)
{
     include_once '/page/'$page'.php';
}
     else
    {
          include 'page/start.php';
    }
</div>
ein link sieht dann so aus <a href='index.php?page=test'>test</a>
 
Ja aber das erfordert ja trotzdem ein Neuladen der ganzen Seite und dabei wird der Player doch dann neugestartet.
 
ups, ich stand etwas auf der leitung. dann doch mit ajax.
 
Also das wäre die Javascript Variante: Lad dir erstmal JQuery runter: http://jqueryjs.googlecode.com/files/jquery-1.3.2.min.js
Das ist eine JavaScript Bibliothek die wir später brauchen. Benenn die Datei um in jquery.js und platziere sie im selben Ordner wie die HTML oder PHP-Dateien.

Jede HTML-Seite, die dein PHP ausgibt, muss nun diese Form haben:
PHP:
 <html>                                                                  
 <head>           
 
 <script type="text/javascript" src="jquery.js"></script>          
 <script type="text/javascript">                                         
 $(document).ready(function() {
   $("a").click(function(e) {
     $("#content").load(this+" #content");
     e.preventDefault();
     
   });
 });   
 </script>      
 
 </head>                                                                 
 <body>                                                                  
 
 <!-- hier muss der flash player hin und das Menü -->
 <a href="main.php?action=guestbook">Gaestebuch</a>
 
 
 <div id="content">
 <!-- hier den content der Startseite reinpacken; der wird dann beim klicken eines Links ersetzt -->
 </div>
 
 
 </body>   
 </html>
Also das entscheidende sind die beiden Script-Tags oben und dass der eigentlich Seiteninhalt in einem <div id="content"> enthalten ist.

Das Javascript bewirkt, dass wenn du z.B. nen Link auf "main.php?action=guestbook" anklickst, die Gästebuchseite geladen wird, das Div mit dem Namen "content" gesucht wird und dessen Inhalt in die jetzt offene Seite in den "content"-Div geladen wird.
Hat der Nutzer kein Javascript, verhält sich die Seite hingegen genau wie jetz, d.h. der Player wird beim Klicken neugeladen, aber immerhin funktioniert die Seite noch.
 
suuuuupergeil, funktioniert einwandfrei! vielen vielen dank cx01! :)
 

Unser weiteres Online-Angebot:
Bassic.de · Deejayforum.de · Sequencer.de · Clavio.de · Guitarworld.de · Recording.de

Musiker-Board Logo
Zurück
Oben