Scriptersatz für iframes

Hallo, ihr helferlein.

Da ich mich ja nun aus anderen Theads dazu entschlossen habe meine “iframes” zu vernichten (sihe meine Homepage), bräuchte ich nun aber einen Ersatz in Form von PHP. Damit meine ich die Funktion des bekannten Seiten einblendens.

Es wäre schön, wenn mir jemand ein Scriptbeispiel vorschlagen könnte.

als alternative für iframes in php wäre nur include und require

Was anderes fällt mir auch nicht ein. Die grundsätzliche PHP-Syntax für include ist:

was meinst du mit “einblenden”?

es gibt noch file_get_contents und eval oder echo (je nach Inhalt der Datei)

1.) du musst die Seite (oder die ID, oder eine Kennung, …) über GET weitergeben
2.) du musst den IDs, Kennungen, … eine Datei zuordnen
3.) du musst die Datei einbinden

zB: index.php

<?php

include "files/header.html";

$pages = array(
    "index" => "index.html",
    "impressum" => "impressum.html" );

if(empty($_GET['page']) || !isset($pages[$_GET['page']]))
   $page=$pages['index'];
else
   $page=$pages[$_GET['page']];

include "files/$page";


include "files/footer.html";

Die Dateien befinden sich hier in “files/”. Der Teil vor dem dynamischen Inhalt ist “files/header.html”, der danach “files/footer.html”;

Eigene Seiten kannst du ins Array $pages eintragen :wink:

Links sehen dann so aus: “index.php?page=impressum” oder “index.php?page=index”

Wenn ich das auf der Seite richtig gesehen habe, geht das
auch einfacher.

Dazu bastelt man sich ein (X)HTML-Fragment (also keine
komplette Datei, etwas, was im Element html stehen kann
vielmehr), in dem das Menü steht - bei gehobenen Ansprüchen
wird man das Menü an die Seite anpassen wollen, dann steht
da auch noch etwas PHP drin.

Diese Datei jedenfalls bindet man per include/require (wenn mit
PHP) in die anderen Dateien an passender Stelle in den Quelltext
ein. Gibt es darin kein PHP, so kann man auch readfile nehmen.

Die Verfeinerung mit PHP des Menüs besteht etwa darin, daß es
keinen Sinn ergibt, daß die Seite auf sich selbst verweist,
deswegen guckt man da vor der Ausgabe, in welche Datei das
Menü eingebunden ist und gibt den entsprechenden Verweis nicht
aus - alternativ etwa nur Text. Wenn bestimmte Seite ein anderes
Menü oder ein weiteres Menü haben sollen, kann man das
natürlich auch mit reinbasteln.

Das macht es überflüssig, GET-Parameter anzugeben oder
auszulesen, jedenfalls sofern man nicht mehrere Inhalte hat, die
man unabhängig voneinander kombinieren kann, wo als bei der
Erstellung der Fragmente nicht klar ist, was in welcher
Kombination dargestellt werden soll, da wird man dann der
Einfachheit erstmal nicht drum herumkommen, GET-Parameter
zu verwenden.

Also, ich habe das mal anders probiert, was eigendlich auch so zu realisieren wäre.
Die Links habe ich so geändert:

Und das Script sieht wie folgt aus:

[code]

<? if($_GET['id'] == 1){ include("ich_suche.php");} elseif($_GET['id'] == 2){ include("ich_biete.php");} elseif($_GET['id'] == 3){ include("hobbys.php");} elseif($_GET['id'] == 4){ include("gaestebuch/gaestebuch.php");} elseif($_GET['id'] == 5){ include("sonstiges.php");} elseif($_GET['id'] == 6){ include("webmasterlinks.php");} elseif($_GET['id'] == 7){ include("webmaster.php");} elseif($_GET['id'] == 8){ include("gute_links.php");} elseif($_GET['id'] == 9){ include("Fr_Links.php");} ?>[/code]

Dieses script liegt in der “fenster_nav.php” und wird per include (<?php include("fenster_nav.php"; ?>) in eine Tabellenzelle geladen, wobei sich dann beim klicken eines Linkes die Zelle mit dem entsprechenden Inhalt füllen sollte. Dies geschieht aber nur teilweise. Das heißt, die Seiten werden in einem neuen Fenster geladen, was aber nicht mein Ziel war. Wie kann man dies nun ändern?

Wenn der Verweis wirklich so aussieht und nirgends andere
Angaben zum ‘Basisfenster’ gemacht werden, scheint es mir
unwahrscheinlich, daß der browser das ohne weitere besondere
Aktivitäten in einem neuen Fenster öffnet. Da sollte eigentlich der
komplette Inhalt neu im alten Fenster kommen.

Kannst ja mal die exakte URI angeben, wo man auf so einen
Verweis klickert, worauf sich dann ein neues Fenster öffnet.

So, ich kam jetzt endlich mal dazu für das Problem eine Lösung zu finden. Habe auch eine gefunden. Die ganzen Seitenlinks lassen sich jetzt per PHP in ein kleinen Fenster einfügen.
Dazu habe ich einfach in einem DIV’s Container folgendes Script eingesetzt:

<?
if    ($_GET['suche']==1){include("ich_suche.php");}
elseif($_GET['biete']==2){include("ich_biete.php");}
elseif($_GET['hobby']==3){include("hobbys.php");}
elseif($_GET['gb']==4){include("gaestebuch/gaestebuch.php");}
elseif($_GET['sonstiges']==5){include("sonstiges.php");}
elseif($_GET['wml']==6){include("webmasterlinks.php");}
elseif($_GET['wme']==7){include("webmaster.php");}
elseif($_GET['gute_links']==8){include("gute_links.php");}
elseif($_GET['freunde_links']==9){include("Fr_Links.php");}
elseif($_GET['cat'])
 {echo "<img src=\"".$dir.$ordner."/".$bilder."\" />\n";}
?>

Dazu habe ich als Verweise diese Form geschrieben:

<a href="index.php?suche=1">was ich suche</a>

Nun habe ich aber ein Problem bei dem Einfügen von meinen Bildern. Da ich ja eine kleine Gallerie habe und ich nicht für jedes Bild eine Zeile schreiben möchte, weiß ich jetzt nicht wie ich das anstellen soll, das wenn man ein Bild aus der Zahlreichen Sammlung anklickt, es auch in dem selben kleinen Fenster angezeigt werden soll wie mein Navigationsmenü.
Ich habe zwar schon gegoogelt, aber nichts brauchbares finden können. Zu mal die Script’s alle sehr lang und unverständlich angeboten wurden. Ich kann mir nicht vorstellen, das die selbe Funktion wie bei meinem Menü durch ein solch großes Script zu realisieren ist. Ich müsste nur wissen, wie man das anstellt, dass wenn man ein Bild klickt, es dann von dem Script erkannt wird und es dann an der richtigen Stelle angezeigt wird. Ich hoffe, ich habe mich auch einigermaßen verständlich ausgedrückt.
Mein bisheriges Ergebnis kann man auf meiner Homepage sehen (macht bei Opera aber noch kleine Probleme).

Jedenfalls wäre es schön, wenn mir da jemand einen guten Tipp geben könnte.

meinst du vielleicht sowas:

[code]<?php

//…dein toller if-block
elseif($_GET[‘cat’]==“gallerie”)
{
if(!isset($_GET[‘bild’])){
//liste ausgeben, bsp.:
echo ‘’;
echo ‘’;
echo ‘’;
}else{
echo ‘’;
}
}

?>[/code]

ich denke das ist mehr oder weniger verständlich oder?
ich gehe hierbei davon aus, dass es drei Bilder gibt, die jeweils in Mini-form (thumbnail) und in Originalgröße existieren.
Je nach dem welches von den Thumbnails angeklickt wird, sollte es dann in groß erscheinen.

Das Script ist ungetestet, und man kann es noch verbessern.

Edit: übrigens ist deine art der Links ein bisschen unüblich.
Normalerweise macht man immer in etwa so:
index.php?v=gb
index.php?v=hobby
index.php?v=sonstiges
etc.
und fragt dann wie folgt ab:

switch($_GET['v']){
    case 'gb':
        include('gb.php');
        break;
    case 'hobby':
        include('hobby.php');
        break;
    case 'sonstiges':
        include('sonstiges.php');
        break;
    //usw.
}

mfg Balmung

Ich danke dir erst mal auch für die Kretik über mein Menü. Nun ja, ich lerne gerade erst PHP und hatte nur ein zerstückeltes Script gefunden und musste es erst mal ausbessern und anpassen. Da ich gerade nicht zu hause bin, werde ich mich erst später damit beschäfftigen können.

Nun zu deinem Vorschlag:
Soweit habe ich das erst mal verstanden. Aber fehlt da nicht noch ein paar Zeilen, welches erkennt, was für ein Bild gerade geklickt wurde?
Das hätte ich vielleicht noch dazuschreiben sollen. Mein Filesystem ist schon so ziehmlich gut strukturiert. Also zahlreiche unterordner und natürlich auch die zwei Größen der Bilder.

Ich habe das bei meiner Galerie so umgesetzt, daß

  1. Die Bilder eines Themenbereiches in einem Verzeichnis sind,
    in dem auch ein Unterverzeichnis ist, indem die Vorschaubilder
    mit gleichem Namen stecken.

  2. Zu jedem Themenbereich gibt es ein array mit den Dateinamen
    der Bilder (da ich die nicht sinnlos umbenennen will, könnte man
    sicher auch automatisieren, indem man das jeweilige Verzeichnis
    mit PHP untersucht, hat dann aber kaum noch Einfluß darauf,
    in welcher Reihenfolge was angeordnet wird oder darauf, daß
    man vielleicht einige Bilder im Verzeichnis hat, die man nicht
    (mehr) angezeigt haben will, weswegen ich lieber bei einer
    Ergänzung neuer Bilder auch das array manuell ergänze.

  3. Der GET-Parameter ist dann die Nummer des array-Eintrages,
    im array guckt man den Dateinamen nach und fügt das in die
    URI des Elementes ein, welches das Bild darstellen will (ich habe
    sowohl eine XHTML- als auch SVG-Ausgabe, daher können das
    unterschiedliche Elemente sein).

Beim Menü - sofern man das Einbinden sinnvoll
sicherheitstechnisch eingeschränkt hat, muß man da auch nicht
jede Datei einzeln in einer case-Liste untersuchen, kann
stattdessen entweder auch ein array verwenden oder einfach
gucken, ob es im dafür vorgesehen Verzeichnis eine gleichnamige
Datei zum Einbinden gibt (man sollte eben nur unterbinden, daß
auch mit manipulierten GET-Parametern im falschen Verzeichnis
gesucht werden kann).

Man könnte ja z.b. Die Kategorien, unter denen die Bilder sortiert sind, und die Dateien auf denen zugegriffen werden darf, in XML-Dateien einpacken und von php mittels simplexml (oder DOMDocument, wenn man es komplizierter machen will) auslesen, und das entsprechende ausgeben.
Natürlich müssen diese funktionen aktiviert sein, und soweit ich weiß, ist das bei bplaced der Fall (also sie sind aktiviert und einsatzbereit).
Auf diese Art kann man zusätzlich zu den Bildern und Kategorien, noch einen Titel, Beschreibung etc. angeben wenn man möchte.

mfg Balmung