zurück zur Startseite
  


Zurück XHTMLforum > (X)HTML und CSS > CSS
Seite neu laden Links in <div>-Container laden ohe Frames zu verwenden

Antwort
 
LinkBack Themen-Optionen Ansicht
  #1 (permalink)  
Alt 03.10.2003, 14:21
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.10.2003
Beiträge: 3
diablodroid befindet sich auf einem aufstrebenden Ast
Standard Links in <div>-Container laden ohe Frames zu verwenden

Hi !
Hoffe ihr könnt mir bei meinem Problem helfen:
Ich habe mir eine Seite mit 3 div-Containern erstellt. Einen für die Titelzeile, 1 für die Navigation und 1 für den Inhalt. Ist es möglich, einen Link (ohne Frames) aus der Navigation in den Inhalt-Container zu laden ohne das die ganze Seite neu laden muss. Sonst müsste ich ja für jeden Inhalt eine eigene Seite schreiben, die aber immer die gleiche Navigation und die gleiche Titelzeile enthält. Ich hoffe ihr versteht mein Problem und könnt mir helfen. Falls das nicht möglich ist, was ich vor habe: Wie kann man das sonst lösen (außer mit Frames) ?

Thx & Greetz,
Bastian
Mit Zitat antworten
Sponsored Links
  #2 (permalink)  
Alt 03.10.2003, 15:10
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 22.09.2003
Beiträge: 129
Alex befindet sich auf einem aufstrebenden Ast
Standard

ich habe sowas vor jahren mal probiert. damals war es möglich einem div eine source-angabe zu geben, genau wie beim iframe. allerdings war das glaub eine internet explorer und nicht standard konforme lösung.

mit xhtml 1.0 strict gibt es meines wissens keine lösung für dein problem. du musst die seite auf jeden fall neu laden. allerdings kannst du das problem über eine serverseitige scriptsprache wie php oder asp lösen.
Mit Zitat antworten
Sponsored Links
  #3 (permalink)  
Alt 03.10.2003, 15:19
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 13.05.2003
Beiträge: 129
Thomas (css 4 you) befindet sich auf einem aufstrebenden Ast
Standard

Hi diablodroid,
das ist nicht möglich. CSS 4 You hat auch für jeden Inhalt eine eigene Seite und beinhaltet jedesmal die gleiche Navigation. Das ist aber gar nicht so schlimm. Wenn du darauf achtest, dass die Navigation im Quellcode auf jeder Seite exakt gleich geschrieben ist, kannst du Änderungen über dateiübergreifendes Ersetzen ändern. Oder du verwendest wie ich PHP.
Dann kannst du das Menü mit einer Funktion ausgeben.

Gruß
Thomas
Mit Zitat antworten
  #4 (permalink)  
Alt 03.10.2003, 21:07
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.10.2003
Beiträge: 3
diablodroid befindet sich auf einem aufstrebenden Ast
Standard Dnake

Danke für deine Hilfe. Schade, dass es nicht geht. Aber wie sieht das mit der XHTML Lösung aus. Und mit PHP, wie sähe das aus. Wird dafür mySQL benötigt ?

Hoffe du kannst mir nochmal helfen !
Bastian
Mit Zitat antworten
  #5 (permalink)  
Alt 04.10.2003, 13:10
Neuer Benutzer
neuer user
 
Registriert seit: 04.10.2003
Beiträge: 8
H.Wiedow befindet sich auf einem aufstrebenden Ast
Standard Re: Links in <div>-Container laden ohe Frames zu verwe

Hallo Bastian,
ich habe gerade für ein kleineres Web meine Geschichten mit XSLT definiert. Naviagtion, Sitemape, Header und Footer werden aus einer XML-Datei generiert.
Ich erstelle die Seiten serverseitig, so das der Client davon nichts merkt.
Ich bin mit der Lösung sehr zufrieden.
Einziger Nachteil: XPath und XSLT-Syntax kannst Du nicht an einem Vormittag lernen!

Gruß
Heinz

Zitat:
Zitat von diablodroid
Hi !
Hoffe ihr könnt mir bei meinem Problem helfen:
Ich habe mir eine Seite mit 3 div-Containern erstellt. Einen für die Titelzeile, 1 für die Navigation und 1 für den Inhalt. Ist es möglich, einen Link (ohne Frames) aus der Navigation in den Inhalt-Container zu laden ohne das die ganze Seite neu laden muss. Sonst müsste ich ja für jeden Inhalt eine eigene Seite schreiben, die aber immer die gleiche Navigation und die gleiche Titelzeile enthält. Ich hoffe ihr versteht mein Problem und könnt mir helfen. Falls das nicht möglich ist, was ich vor habe: Wie kann man das sonst lösen (außer mit Frames) ?

Thx & Greetz,
Bastian
Mit Zitat antworten
  #6 (permalink)  
Alt 04.10.2003, 17:44
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 22.09.2003
Beiträge: 129
Alex befindet sich auf einem aufstrebenden Ast
Standard

mit php geht das extrem einfach. du benötigst kein mysql dazu. es gibt dabei 2 verfahren:

a) du bindest die immer wiederkehrenden teile der seite (also header, menü und footer) in jeder einzelnen seite via include oder require ein.

b) du hast eine rahmendatei und bindest die jeweiligen module/seiten in diese ein.

ich persönlich bevorzuge letztere lösung. das sieht dann in etwa so aus: du hast eine ganz normale html-seite mit allem drum und dran, nur statt den inhalt, der auf jeder seite anders ist statisch drinstehen zu haben, fügst du an der entsprechenden stelle folgenden code ein:

Code:
<?php
if (!isset($_GET["file"])) {
    if (file_exists($_GET["file"].".php"))
        include ($_GET["file"].".php");
    else
        include ("error404.php");
} else {
    include ("start.php");
}
?>
links sehen dann folgendermaßen aus:
Code:
...
die einzelnen inhalts-seiten sind dann keine eigenständigen html-seiten, sondern nur der entsprechende ausschnitt. der php-parser setzt das dann durch den include-befehl zusammen und liefert es an den client.
Mit Zitat antworten
  #7 (permalink)  
Alt 04.10.2003, 20:16
Neuer Benutzer
neuer user
Thread-Ersteller
 
Registriert seit: 03.10.2003
Beiträge: 3
diablodroid befindet sich auf einem aufstrebenden Ast
Standard Danke

Danke für eure Hilfe !
Ich habe jetzt eine Vorstellung davon, wie man das macht !

Bastian
Mit Zitat antworten
  #8 (permalink)  
Alt 03.03.2006, 16:09
Neuer Benutzer
neuer user
 
Registriert seit: 03.03.2006
Beiträge: 2
Horror Kids befindet sich auf einem aufstrebenden Ast
Standard

Zitat:
Orginal von Alex

[...]

b) du hast eine rahmendatei und bindest die jeweiligen module/seiten in diese ein.

ich persönlich bevorzuge letztere lösung. das sieht dann in etwa so aus: du hast eine ganz normale html-seite mit allem drum und dran, nur statt den inhalt, der auf jeder seite anders ist statisch drinstehen zu haben, fügst du an der entsprechenden stelle folgenden code ein:

Code:
<?php 
if (!isset($_GET["file"])) { 
    if (file_exists($_GET["file"].".php")) 
        include ($_GET["file"].".php"); 
    else 
        include ("error404.php"); 
} else { 
    include ("start.php"); 
} 
?>

links sehen dann folgendermaßen aus:

Code:
...
die einzelnen inhalts-seiten sind dann keine eigenständigen html-seiten, sondern nur der entsprechende ausschnitt. der php-parser setzt das dann durch den include-befehl zusammen und liefert es an den client.

Das wäre so genau das was ich suche, um das iframe von meiner Seite zu verbannen!^^
Nur klappt es bei mir irgendwie nicht mit dem Link. Ich habe drei dateien aufgebaut, eine Datei als Rahmendatei (index.php) und zwei weitere als Inhalte (i1.php und i2.php) die an die Stelle kommen sollen wo auch der php Code drin ist. Wenn ich aber in der index.php Datei den Link zu einem Inhalt machen möchte, passiert nichts. Jetzt weiß ich nicht woran das liegt, habe ich den Link falsch gesetzt oder muss ich noch irgendetwas in die Dateien einfügen.

Was ich biser gemacht habe:

index.php

Zitat:
<table border=1>
<tr>
<td>Inhalt 2</td>
</tr>
<tr>
<td>

<?php
if (!isset($_GET["file"])) {
if (file_exists($_GET["file"].".php"))
include ($_GET["file"].".php");
else
include ("i1.php");
} else {
include ("i1.php");
}
?>

</td>
</tr>
</table>
Als Test habe ich das mal ganz einfach in eine kleine Tabelle eingefügt, in der oberen Zeile sollen die Links sein, die dann, beim Anklicken, in der unteren Zeile angezeigt werden. Ob ich den Link da oben jetzt richtig umgeändert habe oder was ich noch ergänzen und verbessern müsste, wüsste ich jetzt zu gerne, ich hoffe ihr könnt mir helfen. Ich habe jetzt sämtliches ausprobiert und bei google nachgesehen, aber ich bin zu keiner Lösung gekommen.

In die anderen beiden dateien, also die Inhalte, habe ich einfach nur einen Text reingeschrieben, ohne sonst irgendetwas.

Hier noch die Beispieldatei:
index.php Vorschau
Mit Zitat antworten
  #9 (permalink)  
Alt 03.03.2006, 16:26
Erfahrener Benutzer
XHTMLforum-Mitglied
 
Registriert seit: 26.10.2005
Beiträge: 165
tesa befindet sich auf einem aufstrebenden Ast
Standard

Dein GET-Parameter heißt open. Dann darfst Du nicht file abfragen
Code:
$_GET["open"]
Edit: ups, zu früh abgeschickt....
oder $open wenn register_globals gesetzt ist:
http://www.php.net/manual/de/reserve....variables.get
__________________
"Das macht nicht wirklich Sinn" hat eigentlich keinen Sinn!
Mit Zitat antworten
Sponsored Links
  #10 (permalink)  
Alt 03.03.2006, 17:44
Benutzer
neuer user
 
Registriert seit: 13.06.2005
Beiträge: 48
tobias-digital befindet sich auf einem aufstrebenden Ast
Standard

Hallo!

Du kannst auch einen AJAX-Ansatz wagen. Hierbei würdest Du sozusagen wie in obigem Beispiel einen Seitenrahmen laden und dann immer nur den Inhalt eines divs ändern, ohne immer die ganze Seite neu laden zu müssen. Und so funktionierts:
index.php:
Code:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
  <head>
    <title>Test</title>
    <script type="text/javascript" src="request.js"></script>
  </head>
  <body>
    <ul>[*]Seite 1[*]Seite 2[*]Seite 3[/list]    <div id="content">
      <script type="text/javascript">
      sndReq('getSeite1');
      </script>
    </div>
  </body>
</html>
request.js:
Code:
function createRequestObject() {
    var ro;
    var browser = navigator.appName;
    if(browser == "Microsoft Internet Explorer"){
        ro = new ActiveXObject("Microsoft.XMLHTTP");
    }else{
        ro = new XMLHttpRequest();
    }
    return ro;
}

var http = createRequestObject();

function sndReq(action) {
    http.open('get', 'output.php?action='+action);
    http.onreadystatechange = handleResponse;
    http.send(null);
}

function handleResponse() {
    if(http.readyState == 4){
        var response = http.responseText;
        var update = new Array();

        if(response.indexOf('|' != -1)) {
            update = response.split('|');
            document.getElementById(update[0]).innerHTML = update[1];
        }
    }
}
output.php
Code:
<?php
switch($_REQUEST['action']) {
  default:
  case 'getSeite1':
    $filename = 'seite1.htm';
    break;
  case 'getSeite2':
    $filename = 'seite2.htm';
    break;
  case 'getSeite3':
    $filename = 'seite3.htm';
    break;
}
$handle = fopen($filename, 'r');
$content = fread($handle, filesize($filename));
fclose ($handle);
echo 'content|'.$content;
?>
seite1.htm:
Code:
<h1>Seite 1</h1>


Lorem Ipdum dolor.</p>
seite2.htm:
Code:
<h1>Seite 2</h1>


Lorem Ipdum dolor.</p>
seite3.htm:
Code:
<h1>Seite 3</h1>


Lorem Ipdum dolor.</p>
Grüße, Tobias

PS: Und ja, ich hatte viel Zeit.
__________________
slideshow: iTunes-music-store-like Slideshow-Script
Mit Zitat antworten
Sponsored Links
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Elemente in einem Div Container links & rechts ausrichte oliwa CSS 8 16.07.2004 14:39
Problem bei Positionierung eines <div> im Container Robse CSS 2 12.06.2004 12:43
<div> container ausrichten. IE6 u. Mozilla1.6 scan CSS 3 04.03.2004 13:16
<div> container verschwindet?! Gilbert CSS 3 30.09.2003 13:55
<div> container dynamisch vergrößern Anonymous CSS 7 27.07.2003 11:40


Alle Zeitangaben in WEZ +2. Es ist jetzt 01:45 Uhr.