PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : PHP Problem


Geldmann3
2009-08-15, 22:58:21
Kennt ihr das wenn euch etwas passiert und ihr euch denkt wie kann das sein???

Naja ich habe gerade so ein Problem, ich habe eine .php Datei mit folgendem Inhalt auf den Server hochgeladen.

Der Inhalt

<? include ("over.html"); ?>
<p class="dunkel">
<? include ("kunde.html"); ?>
</p>
<br>
<hr noshade width="600" size="4" align="center">
<br>
<? include ("work.html"); ?>
<? include ("under.html"); ?>


Die includes funktionieren alle doch das von mir hervorgehobene </p> verschwindet einfach. Wenn ich mir den Quelltext ansehe kommt es nicht nach
kunde.html
sondern taucht einfach zirka in der Mitte von kunde.html auf.

Weiss jemand woher das kommen könnte? In allen eingebundenen Dateien befindet sich nur .html code.

Wenn ich nicht davon ausgehen würde, dass es so ziehmlich unmöglich ist würde ich sagen, mein Quellcode wird falsch geparst.:freak:

creave
2009-08-15, 23:13:47
Kannst noch den HTML-Output posten? Kann mir nicht vorstellen, warum das so sein sollte (irgendwo output buffering benutzt?)

Geldmann3
2009-08-16, 10:44:26
Was ist output buffering?:confused: Noch nie bewusst verwendet.

Der Code der aus dem kunde.html includet wird sieht so aus, doch das </p> kommt nicht am Ende sondern mitten im Inhalt der kunde.html
<br>
<big style="font-family: Comic Sans MS;"><span style="font-weight: bold;">immer wieder Sonntags</span></big><br>
<br>
<span style="font-weight: bold; font-family: Comic Sans MS;">Das bieten wir an</span><br>
<br>
</p><ul>
<li style="font-weight: bold; font-family: Comic Sans MS;">Überschrift</li>

<li style="font-weight: bold; font-family: Comic Sans MS;">Noch ein Listenpunkt</li>
<li style="font-weight: bold; font-family: Comic Sans MS;">Noch ein Listenpunkt</li>
<li><span style="font-weight: bold; font-family: Comic Sans MS;">Untericht
geschlechtlich getrennt</li>
<li><span style="font-weight: bold; font-family: Comic Sans MS;">Und es geht weiter</span></li>
</ul>


Das </p> müsste eigentlich am Ende der kunde.html erscheinen. Doch es erscheint vor der Auflistung in der kunde.html.

dead.line
2009-08-16, 11:13:18
Hm und wenn du die PHP so schreibst:



<?php
include ("over.html");
echo '<p class="dunkel">';
include ("kunde.html");
echo '</p>
<br>
<hr noshade width="600" size="4" align="center">
<br>';
include ("work.html");
include ("under.html");
?>

Geldmann3
2009-08-16, 11:59:43
Super Idee. -komplett in php.
Werde es versuchen, ich wette das klappt.

Trotzdem verstehe ich nicht warum das erste nicht funktioniert.

Geldmann3
2009-08-16, 12:21:34
Ich habe es getestet. Mit deiner reinen .php Version passiert genau das selbe wie mit meiner zusammengefriemelten.

Exakt selber Fehler!:eek:

Was mir jetzt noch einfällt wäre das p direkt im Quelltext der kunde.html einzubringen. Doch dann könnte ich die Datei nicht mehr global verwenden weil das generierte html ansonsten nicht mehr überall valide wäre.
---------------------------------------------------------
LoL alles funktioniert ansonsten einwandfrei doch der Server will kein </p> nach der kunde.html ausgeben. So etwas hatte ich noch nie. Gibt es da in Php vielleicht irgend eine Regel, dass dieser 'Tag' nicht funktioniert?
Vielleicht darf keine Auflistung vor einem </p> sein oder etwas in der Art?

DanMan
2009-08-16, 12:42:07
Mal ganz davon abgesehen darf ein <p> keine weiteren Blockelemente (deine Liste z.B.) enthalten. Wo hast du den Quelltext denn rauskopiert? Wenn der aus Firebug stammt, dann wunderts mich nicht. Das gibt nämlich nur gültiges HTML aus, und schreibt sozusagen das HTML um, obwohl es im Quelltext tatsächlich anders steht.

Geldmann3
2009-08-16, 12:43:42
Jetzt habe ich auch versucht beide p's direkt in kunde.html unterzubringen.

Es funktioniert auch nicht!

Das kann doch wohl nicht wahr sein. ;(:freak:

Das p verschwindet einfach.

PS: Ich habe den Quelltext aus dem Mozilla Firefox-->Seitenquelltext anzeigen
Der Internet Explorer zeigt aber das selbe.

Mal ganz davon abgesehen darf ein <p> keine weiteren Blockelemente (deine Liste z.B.) enthalten.
Danke für den Tipp! Dann werde ich es anders regeln. Trotzdem, hat php jetzt eine automatische Korrekturfunktion oder was?

---------------------------
---------------------------
Update!
Mit einem <div> funktioniert es!

Gast
2009-08-16, 16:33:24
Vielleicht liegt das daran, dass die Browser die Ergebinsse unterschiedlich interpretieren? In dem Fall könnte das </p> bei allen Browsern wegfallen, weil der Quellcode keinen Sinn ergibt irgendwie?

Geldmann3
2009-08-17, 00:28:54
Und wie kann ich an den originalen Quelltext kommen?
:confused:

Den, den die Browser über http bekommen??

esistich
2009-08-17, 13:40:43
...

Mit der kunden.html die du gepostet hast, kann das nicht funktionieren, da sich ein </p> in der Datei befindet also ein ausgehendes Tag ohne vorher ein einleitendes zu setzen. Somit hasst du vor dem includen ein <p> in der kunden.html ein </p> und nach dem includen nochmal ein </p>.

Dennoch würde PHP das genauso parsen, wie die Browser das dann umsetzen ist eine andere Geschichte.