• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

eingebundener PHP-Code verschiebt das Layout nach unten

nick_riviera

Neues Mitglied
hallo,
ich sitze jetzt seit Stunden an einem Problem, für das ich keine Erklärung habe. In eine html-Datei möchte ich direkt unterhalb des body-Tags eine PHP-Datei einbinden, die nichts weiter tut, als unsichtbar statistische Informationen in eine mysql-Datenbank zu schreiben.

Das Layout ist so formatiert, dass es mittig am oberen Bildschirmrand "klebt". Sobald ich unter dem body-Tag folgenden Code einfüge

<?php
/* Include */
include("function_01.php");
include("dbconnect.php"); ?>

verschiebt sich das Layout um etwa 50 Pixel nach unten.

Nachdem ich keinen Programmierfehler finden konnte, habe ich testweise die include-Funktionen entfernt, und nur die php-Klammern stehen gelassen. hier war die Darstellung wieder einwandfrei. Um auszuschließen, dass in den eingebundenen Dateien irgendwas drin ist, was den Fehler verursacht, habe ich eine Datei test.php angelegt, die nichts weiter enthält, als leere php-Klammern. Sobald mit <?php include('test.php'); ?> diese leere Datei einbinde, rutscht das Layout wieder nach unten. Es ist auch egal, wo ich den php-Code innerhalb der html-Datei positioniere, der Effekt ist immer der gleiche.

Wenn ich den Code aus den eingebundenen Dateien direkt in die html-Datei schreibe, gibt es komischerweise keine Probleme. Hat jemand eine Idee, was ich falsch mache ? In meinen Büchern und beim Googeln habe ich nur Lösungen gefunden, wie man solche Verschiebeeffekte provozieren kann, aber nicht, wie man sie verhindert.

danke und Gruß

Frank

Nachsatz - ich habe jetzt nochmal probiert, Teile des html-Codes in php mit echo auszugeben, und hier die include-Anweisungen "unterzujubeln". Es liegt eindeutig am include, alles andere funktioniert einwandfrei.
 
Zuletzt bearbeitet:
So ein Verhalten habe ich noch nie gehört. Hast du dir mal den HTML-Code, den der Browser bekommt, angesehen?
 
danke für die Nachfrage, im Quellcode, den der Browser bekommt, sieht man aber gar nichts, der sieht in beiden Fälle gleich aus.

Hier noch mal ausführlich:

Ohne PHP sieht die Seite im Kopfbereich so aus:
fehler_01.jpg


Der Code bis zum body sieht so aus:

<!doctype html>
<html lang="de" id="top"> <!-- ID fuer Toggle Navigation -->
<head>
<!-- Uebersicht Kopfparameter HTML5-Buch, Seite 74 ff. -->
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/normalize.css" rel="stylesheet" media="all">
<link href="css/styles.css" rel="stylesheet" media="all">
<link href="css/960_12_col.css" rel="stylesheet" media="all">
<title>Willkommen zur W210 Fan-Seite</title>
</head>
<body id="menu"> <!-- ID fuer Toggle Navigation -->
<div class = "container_12"> <!-- Container fuer 960grid ---------------------------------------->

Wenn ich jetzt direkt unter <body> die php-Klammern einfüge

<?php ?>

bleibt das Layout, wie es soll.

Auch wenn ich zwischen die Klammern konkrete Anweisungen schreibe, tut sich am Layout nichts, sofern die Anweisungen keinen html-Code erzeugen, alles korrekt.

Dann lege ich eine Datei mit Namen test.php an, mit folgenden Inhalt:

<?php ?>

Wenn ich dann in der index.php die PHP-Klammer unter <body> wie folgt erweitere

<?php include("test.php"); ?>

verändert sich das Layout wie folgt:

fehler_02.jpg


Das ganze Layout rutscht nach unten, und über der blauen Menüzeile erscheint ein grauer Balken (=Hintergrundfarbe von body).

Es ist auch egal, wo ich die PHP-Zeile in der html-Datei einbaue, und welche Dateien ich includiere. Sobald ich einen include Befehl einbaue, rutscht das Layout nach unten.

Wenn ich den Quelltext im Browser anzeigen lasse ( Firebug oder Befehl Seitenquelltext anzeigen ), erkenne ich keinerlei Unterschiede. Damit ich fertig werde, behelfe ich mir zunächst so, dass ich die php-Anweisungen direkt in die html-Datei schreibe. Dann funktioniert alles, auf Dauer ist das aber keine Lösung.

Ach ja, die Seite ist responsiv, sie wird entweder als Grid-Layout angezeigt wie in den Abbildungen zu sehen, oder auf schmalen Displays in Breite 100% mit allen Elementen untereinander und Ausklappmenü. Der Fehler ist aber immer gleich - sobald ich ein php-include einfüge, rutscht das Layout nach unten. Ich habe schon hunderte Webseiten so gebaut, ein derartiger Fehler ist mir noch nicht untergekommen.

Einen Verdacht habe ich noch - ich benutze einen UltraEdit zum Programmieren, und obwohl ich als Zeichensatz überall utf-8 eingestellt hat, gibt es Probleme, wenn Umlaute in die mySQL Datenbank eingetragen werden. Hin und wieder werden bei mit UltraEdit bearbeiteten html-Dateien die Umlaute im Browser nicht korrekt angezeigt, ohne dass es einen erkennbaren Grund dafür gibt. Vielleicht steckt ja noch ein unsichtbares Zeichen dahinter, das einen Zeilenvorschub o.ä. auslöst. Ansonsten bin ich mit meinem Latein echt am Ende.

Ach ja, ich habe die test.php nochmal ganz leer gemacht, also auch noch die Klammern entfernt, es ändert sich nichts. Ich includiere eine leere Datei, und das Layout springt runter.

Gruß Frank
 
hallo,

sorry, dass ich mich erst jetzt melde, ich musste gestern lange arbeiten.

Also - die korrekt funktionierende Datei findest Du unter http://www.w210-freunde.de bzw. http://www.w210-freunde.de/index.php .

Die Datei, wo ich die leere test.php direkt unterhalb des body-Tags eingebunden habe, findest Du unter http://www.w210-freunde.de/index2.php .

index.php und index2.php unterscheiden sich wirklich nur durch eine Zeile, und die steht direkt unter <body> und lautet <?php include("test.php"); ?> Die Datei test.php ist leer, es stehen nicht mal die php-Klammern drin.

Gruß Frank
 
hallo,

sorry, dass ich mich erst jetzt melde, ich musste gestern lange arbeiten.

Also - die korrekt funktionierende Datei findest Du unter http://www.w210-freunde.de bzw. http://www.w210-freunde.de/index.php .

Die Datei, wo ich die leere test.php direkt unterhalb des body-Tags eingebunden habe, findest Du unter http://www.w210-freunde.de/index2.php .

index.php und index2.php unterscheiden sich wirklich nur durch eine Zeile, und die steht direkt unter <body> und lautet <?php include("test.php"); ?> Die Datei test.php ist leer, es stehen nicht mal die php-Klammern drin.

Gruß Frank

BOM ;)
 
das ist natürlich eine gute Idee, danke.

Die UTF8-BOM taucht in der Datei einmal auf, und zwar ganz am Anfang. Löschen gelingt aber mit dem UltraEdit nicht. Man kann im HEX-Mode die Zeichen löschen, und nach dem Speichern sind sie wieder da. Auch wenn ich Datei zuerst als DIN/ISO speichere und dann konvertiere, fügt der Editor die BOM wieder ein.

Mit dem DIN/ISO-Format ist das Verschiebeproblem zwar weg, dafür gibt es wieder die altbekannten Darstellungsprobleme mit Umlauten. Zumindest weiß ich jetzt, woran es liegt, und werde mal rausfinden, ob ein Update auf den neuen UltraEdit hilft, oder ob es sonst einen Editor gibt, mit dem man die Zeichenkette trotz UTF-8 Format entfernen kann.

Eine Sache wundert mich allerdings - als ich es vor zwei Tagen probiert habe, habe ich die include-Zeile testweise an bestimmt zehn Stellen eingefügt, und immer ist das Layout am oberen Rand nach unten geschoben worden. Heute ist es so, dass die include Zeile den Zwischenraum da einfügt, wo ich sie einbaue. Wenn ich das include z.B. zwischen Banner und Inhaltsbereich einbaue, erscheint der graue Balken da.

Wie dem auch sei, ich versuche mal, eine brauchbare Lösung zu finden, und poste sie hier. Bis dahin füge ich das include einfach am Ende der Datei ein, denn wenn unten ein kleiner Zwischenraum entsteht, stört das nicht so sehr.

UTF-8 macht alles leichter :confused:.

Gruß Frank
 
das ist natürlich eine gute Idee, danke.

Die UTF8-BOM taucht in der Datei einmal auf, und zwar ganz am Anfang. Löschen gelingt aber mit dem UltraEdit nicht. Man kann im HEX-Mode die Zeichen löschen, und nach dem Speichern sind sie wieder da. Auch wenn ich Datei zuerst als DIN/ISO speichere und dann konvertiere, fügt der Editor die BOM wieder ein.

Mit dem DIN/ISO-Format ist das Verschiebeproblem zwar weg, dafür gibt es wieder die altbekannten Darstellungsprobleme mit Umlauten. Zumindest weiß ich jetzt, woran es liegt, und werde mal rausfinden, ob ein Update auf den neuen UltraEdit hilft, oder ob es sonst einen Editor gibt, mit dem man die Zeichenkette trotz UTF-8 Format entfernen kann.

Eine Sache wundert mich allerdings - als ich es vor zwei Tagen probiert habe, habe ich die include-Zeile testweise an bestimmt zehn Stellen eingefügt, und immer ist das Layout am oberen Rand nach unten geschoben worden. Heute ist es so, dass die include Zeile den Zwischenraum da einfügt, wo ich sie einbaue. Wenn ich das include z.B. zwischen Banner und Inhaltsbereich einbaue, erscheint der graue Balken da.

Wie dem auch sei, ich versuche mal, eine brauchbare Lösung zu finden, und poste sie hier. Bis dahin füge ich das include einfach am Ende der Datei ein, denn wenn unten ein kleiner Zwischenraum entsteht, stört das nicht so sehr.

UTF-8 macht alles leichter :confused:.

Gruß Frank

Einfach überall UTF-8 verwenden.
Kenne UltraEdit zwar nicht, denke auch nicht dass es noch zeitgemäß ist, aber Google leitet mich hier her ;)
https://superuser.com/questions/379...save-in-utf-8-without-the-byte-order-mark-bom
 
so, BOM ist weg, die include-Zeile wird immer noch nach unten geschoben. Ich werd wahnsinnig.

Gruß Frank

Edit: Hat doch noch geklappt - man muss natürlich die eingebundenen PHP-Dateien auch noch von der BOM befreien. Die Einstellung findet man im deutschen UltraEdit unter Extras/Optionen/Speichern . Danke nochmal, ohne Euch hätte ich das nie gefunden.
 
Zuletzt bearbeitet:
Zurück
Oben