CSS-Formatierung in PHP echo
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
angabe
auto
browser
code
dank
dokument
ende
index
jemand
laden
methode
position
quellcode
sagen
stelle
syntax
text
tun
url
verwenden
-
Hallo.
Ich habe Probleme bei der Formatierung von einem DIV in einem PHP-echo.. Eigentlich funktioniert eh alles soweit, nur das zentrieren komischerweise nicht.. Wenn ich die Seite durch PHP auseben lasse, sind die Divs (also genau genommen der Layer, der alles andere beinhaltet) einfach linksbündig ausgerichtet. er ist mit margin-left: auto; margin-right: auto; formatiert..
Die betroffene Seite ist nicht online, aber sie ist gleich aufgebaut wiewww.theyorecords.de
, nur halt in einem PHP-echo.
Weiß jemand wieso das so ist und was ch dagegen tun kann?
danke im Voraus! -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
hackyourlife schrieb:
yorecords schrieb:
Quellcode des
Weiß jemand wieso das so ist und was ch dagegen tun kann?
posten, eventuell noch die Ausgabe (also im Browser den Seitenquelltext an der Stelle).echo()
Also das ist der Quelltext der vom Script ausgegeben wird:
<html> <head> <link rel='icon' href='img/favicon.png' type='image/png'> <link rel='shortcut icon' href='img/favicon.png' type='image/png'> <title>ACCESS DENIED</title> <link rel='stylesheet' type='text/css' href='css/divs.css'> <link rel='stylesheet' type='text/css' href='css/font.css'> <script type='text/javascript' src='/js/ga.js'></script> </head> <body> <div id='layer'> <div id='top'></div> <div id='sdlayer' style='color: #FF0000;'> <h1>ACCESS DENIED!!</h1> Invalid Code! </div> </div> </body> </html>
Und hier die Divs:
#layer { width: 1100px; height: 100%; position: relative; border-left: 3px solid #000000; border-right: 3px solid #000000; top: 0px; margin-left: auto; margin-right: auto; background-color: #000000; z-index: 1; } #top { width: 1100px; height: 120px; position: relative; overflow: hidden; border-left: 3px solid #000000; top: 0px; margin-left: auto; margin-right: auto; background-image: url(http://www.theyorecords.de/img/topbg.jpeg); background-repeat: repeat; z-index: 2; } #sdlayer { width: 1100px; height: auto; border-left: 3px solid #000000; position: absolute; top: 120px; left: 0px; bottom: 0px; margin: 0px; padding: 0px; background-color:#000000; text-align: center; overflow-x: hidden; overflow-y: scroll; scrollbar-base-color:#29342e; scrollbar-3dlight-color:#242923; scrollbar-arrow-color:#FFFFFF; scrollbar-darkshadow-color:#000000; scrollbar-face-color:#29342e; scrollbar-shadow-color:#000000; scrollbar-track-color:#4f6559; z-index: 3; }
Komischerweise ist der sdlayer auch nur so hoch wie sein Inhalt, anstatt bis zum unteren Rand zu gehen. Das ist aber alles nur so wenn ich den Code über ein echo ausgebe...
Und das ist das PHP-Script:
<?php $acc = " // Anderer Quelltext */ "; $den = " // Der Quelltext der oben steht */ "; $code = $_POST["code"]; $c001 = "AbCd123"; if ($code == $c001) { echo $acc; } else { echo $den; } ?>
(Und eine Seite davor wird dieser Code halt abgefragt.. Aber das tut ja nichts zur Sache.)
Beitrag zuletzt geändert: 22.5.2012 23:28:46 von yorecords -
Hast du mal probiert, die Seite ohne Php auszugeben ? Vielleicht ist ein Fehler im Css oder so !
-
yorecords schrieb:
Versuch mal nowdoc zu verwenden um den String zu laden, also so:
Weiß jemand wieso das so ist und was ch dagegen tun kann?<?php $acc = irgendwas; $den <<< 'EOT' <html> <head> <link rel='icon' href='img/favicon.png' type='image/png'> <link rel='shortcut icon' href='img/favicon.png' type='image/png'> <title>ACCESS DENIED</title> <link rel='stylesheet' type='text/css' href='css/divs.css'> <link rel='stylesheet' type='text/css' href='css/font.css'> <script type='text/javascript' src='/js/ga.js'></script> </head> <body> <div id='layer'> <div id='top'></div> <div id='sdlayer' style='color: #FF0000;'> <h1>ACCESS DENIED!!</h1> Invalid Code! </div> </div> </body> </html> EOT;
Wenn du es so machst kommt der HTML-Code ganz sicher richtig aus und wird nicht von PHP verändert.
Ansonsten schau dir mal an, ob die Seite ohne PHP funktioniert, wenn du den HTML-Code als .html verwendest... -
Versuch mal nowdoc zu verwenden um den String zu laden, also so:<?php $acc = irgendwas; $den <<< 'EOT' .... EOT;
Die nowdoc Syntax ist bei dir falsch : Es sollte heißen :
<<<'EOD' ..... 'EOD' /code] oder die andere Variante (Herodoc ?) [code]<<< EOD ... EOD
Beitrag zuletzt geändert: 23.5.2012 10:19:05 von ohgspringe7l -
Also wenn ich das richtig sehe, versuchst du halt den Quelltext über Echo auszugeben. Problematisch kann da sein, dass vielleicht der Quellcode nicht richtig escaped ist. Dabei spielt es beispielsweise eine Rolle, ob du
ist oder$code = '<html> [...]</html>';
. Da das aus deinem Code nicht ersichtlich ist, kann man dazu leider wenig sagen. Möglich wäre beispielsweise, dass am Ende im Dokument etwas wie$code = "<html> [...] </html>";
steht. ( Wobei dann die CSS-Datei nicht richtig gefunden wird. )\'css/div.css\'
Ich persönlich umgehe sowas gerne, indem ich Fehlerseiten, etc. gerne auslager, also eine errdoc.php habe, in der am Ende dann nur der Statische Inhalt steht, welche ich dann ggf. inlcude. Damit hat man dann eine errdoc.php
welche dann im eigentlichen Dokument eingebunden wird:<?php /* Platz für zusätzlichen Stuff */ ?> <html> <head> <link rel='icon' href='img/favicon.png' type='image/png'> <link rel='shortcut icon' href='img/favicon.png' type='image/png'> <title>ACCESS DENIED</title> <link rel='stylesheet' type='text/css' href='css/divs.css'> <link rel='stylesheet' type='text/css' href='css/font.css'> <script type='text/javascript' src='/js/ga.js'></script> </head> <body> <div id='layer'> <div id='top'></div> <div id='sdlayer' style='color: #FF0000;'> <h1>ACCESS DENIED!!</h1> Invalid Code! </div> </div> </body> </html>
Wenn du aber an der echo-Methode festhälst, solltest du prüfen, ob das Dokument wirklich richtig angezeigt wird ( Also den Quellcode im Browser prüfen ) oder halt die angesprochenen Nowdoc-Methode benutzen.<?php $code = $_POST["code"]; $c001 = "AbCd123"; if ($code == $c001) { include("anderesdoc.php"); } else { include("errdoc.php"); } ?>
-
kelserific schrieb:
Also wenn ich das richtig sehe, versuchst du halt den Quelltext über Echo auszugeben. Problematisch kann da sein, dass vielleicht der Quellcode nicht richtig escaped ist. Dabei spielt es beispielsweise eine Rolle, ob du
ist oder$code = '<html> [...]</html>';
. Da das aus deinem Code nicht ersichtlich ist, kann man dazu leider wenig sagen.$code = "<html> [...] </html>";
Er benutzt die "" Syntax . Das sient man bei der Variablen zuweisung : $acc = "..... " -
ohgspringe7l schrieb:
Nein, das was wirklich falsch ist ist, dass ich ein = vergessen hab...
Die nowdoc Syntax ist bei dir falsch : Es sollte heißen :
<<<'EOD' ..... 'EOD'
oder die andere Variante (Herodoc ?)
<<< EOD ... EOD
So wie du das meinst ist es ungültig, das EOD muss in einer eigenen Zeile sein, es dürfen keine Zeichen davor und danach sein, nur der Strichpunkt am Ende.
kelserific schrieb:
Deshalb nowdoc, dort hast du das Problem nicht und kannst den HTML-Code in PHP einbetten.
Problematisch kann da sein, dass vielleicht der Quellcode nicht richtig escaped ist.
Und jetzt nochmal den Code ohne Fehler:<?php $acc = irgendwas; $den = <<< 'EOT' <html> <head> <link rel='icon' href='img/favicon.png' type='image/png'> <link rel='shortcut icon' href='img/favicon.png' type='image/png'> <title>ACCESS DENIED</title> <link rel='stylesheet' type='text/css' href='css/divs.css'> <link rel='stylesheet' type='text/css' href='css/font.css'> <script type='text/javascript' src='/js/ga.js'></script> </head> <body> <div id='layer'> <div id='top'></div> <div id='sdlayer' style='color: #FF0000;'> <h1>ACCESS DENIED!!</h1> Invalid Code! </div> </div> </body> </html> EOT;
-
Die Verbesserung bezog sich darauf , dass du meines Wissens nach <<<Eot gleich beenden musst, nicht einmal mit '' und einmal ohne !
Beitrag zuletzt geändert: 23.5.2012 11:25:41 von ohgspringe7l -
ohgspringe7l schrieb:
Das hier:
Die Verbesserung bezog sich darauf , dass du meines Wissens nach <<<Eot gleich beenden musst, nicht einmal mit '' und einmal ohne !$var = <<< EOT irgendwas mit $variablen und \n-Sequenzen EOT;
nennt sich Heredoc, es werden Variablen und Escape-Sequenzen ausgewertet.
Hingegen hier:$var = <<< 'EOT' etwas ohne Auswertung EOT;
nennt sich nowdoc, es werden Variablen und Escape-Sequenzen ignoriert. Das 'EOT' soll vermutlich andeuten, dass es sich so wie ein String in
verhält.'
ohgspringe7l schrieb:
So wie ich es gerade beschrieben habe stimmt es.
nicht einmal mit '' und einmal ohne !
Jetzt ist nur noch die Frage, ob das dem TE hilft... -
yorecords schrieb:
Jaja.. dieses PHP-echo ist schon manchmal etwas eigenwillig ;)
Ich habe Probleme bei der Formatierung von einem DIV in einem PHP-echo..
Mir half es stets, wenn ich beide Seiten im Browser aufrief, mir dann die Quelltexte aus dem Browser heraus *zack* in meinen Editor kopierte.
Wenn es im direkten Vergleich dann Abweichungen gibt, prüfe ich, woran es liegt.
Schon mal ausprobiert?
Oftmals sind es nur Kleinigkeiten, die man nicht bedachte.
LG,
Menschle -
Danke für eure Antworten!
ohgspringe7l schrieb:
Hast du mal probiert, die Seite ohne Php auszugeben ? Vielleicht ist ein Fehler im Css oder so !
Ne, wie gesagt ohne PHP funktioniert es.
hackyourlife schrieb:
Versuch mal nowdoc zu verwenden um den String zu laden
Das schaut schon mal gut aus, werd ich gleich morgen (später) versuchen.
kelserific schrieb:
Also wenn ich das richtig sehe, versuchst du halt den Quelltext über Echo auszugeben. Problematisch kann da sein, dass vielleicht der Quellcode nicht richtig escaped ist. Dabei spielt es beispielsweise eine Rolle, ob du
ist oder$code = '<html> [...]</html>';
. Da das aus deinem Code nicht ersichtlich ist, kann man dazu leider wenig sagen. Möglich wäre beispielsweise, dass am Ende im Dokument etwas wie$code = "<html> [...] </html>";
steht. ( Wobei dann die CSS-Datei nicht richtig gefunden wird. )\'css/div.css\'
Ich persönlich umgehe sowas gerne, indem ich Fehlerseiten, etc. gerne auslager, also eine errdoc.php habe, in der am Ende dann nur der Statische Inhalt steht, welche ich dann ggf. inlcude. Damit hat man dann eine errdoc.php
Wenn du aber an der echo-Methode festhälst, solltest du prüfen, ob das Dokument wirklich richtig angezeigt wird ( Also den Quellcode im Browser prüfen ) oder halt die angesprochenen Nowdoc-Methode benutzen.
Der HTML-Code den ich unten gepostet habe ist der, der vom Script ausgegeben wurde.
Ich werd es aber zuest mal mit Nowdoc versuchen, und wenn das nicht hilft wird mir eh keine andere Möglichkeit bleiben als die Codes auszulagern.
menschle schrieb:
Jaja.. dieses PHP-echo ist schon manchmal etwas eigenwillig ;)
Mir half es stets, wenn ich beide Seiten im Browser aufrief, mir dann die Quelltexte aus dem Browser heraus *zack* in meinen Editor kopierte.
Wenn es im direkten Vergleich dann Abweichungen gibt, prüfe ich, woran es liegt.
Schon mal ausprobiert?
Oftmals sind es nur Kleinigkeiten, die man nicht bedachte.
LG,
Menschle
Das einzige was da anders ist, sind eben die Anführungszeichen. In einem HTML-Dokument werden ja " " verwendet, und in PHP muss ich ' ' verwenden. Kann schon sein, dass es was damit zu tun hat, glaub ich aber eher nicht, da ja sonst viel mehr nicht funktionieren würde.
-
yorecords schrieb:
Du kannst aber in PHP genaosu ein
Das einzige was da anders ist, sind eben die Anführungszeichen. In einem HTML-Dokument werden ja " " verwendet, und in PHP muss ich ' ' verwenden.
ausgeben:"
echo("Text mit \"Anführungszeichen\"");
Allerdings wird das irgendwann zu viel Arbeit, deshalb verwendet man dann heredoc oder nowdoc. -
hackyourlife schrieb:
yorecords schrieb:
Du kannst aber in PHP genaosu ein
Das einzige was da anders ist, sind eben die Anführungszeichen. In einem HTML-Dokument werden ja " " verwendet, und in PHP muss ich ' ' verwenden.
ausgeben:"
echo("Text mit \"Anführungszeichen\"");
Allerdings wird das irgendwann zu viel Arbeit, deshalb verwendet man dann heredoc oder nowdoc.
Cool, gut zu wissen. Danke!
Edit:
Hab es jetzt mit Nowdoc versucht, hat aber leider nichts verändert.. Es ändert auch nichts wenn ich die Style-Angaben gleich in den Div-Tag schreibe..
Edit 2:
Hab den Fehler gefunden... Ich hab die Doctype-Angabe vergessen. Anscheinend funktioniert das Zentrieren mit margin-left: auto; margin-right: auto ohne Doctype nicht..
Beitrag zuletzt geändert: 26.5.2012 1:42:33 von yorecords -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage