Mærkelig opførsel af include

Tags:    php css html

<< < 12 > >>
Hej Udviklere,

Jeg sidder lidt og laver videre på min hjemmeside, men får en meget mærkelig opførsel af mine php includes. Selve koden, virker absolut fint, når den kommer direkte ind i html filen, men ikke efter at den kommer ind i html filen via include.

Med Include.
Fold kodeboks ind/udPHP kode 

Savner lidt at kunne indsætte et billede når man skriver spørgsmål.

Uden Include.
Fold kodeboks ind/udPHP kode 


Og her er koden der bliver inkluderet fra commonHead.php
Fold kodeboks ind/udPHP kode 


Det mærkelige der foregår er at når den bliver inkluderet via php, så danner headeren en ca. 30px margin, men når den ikke er inkluderet så er der ingen margin.

Er der nogen der har nogle gode idéer til, hvordan jeg kan gøre det så jeg stadigvæk kan have mine fælles stylesheets i "commonHead" ?



17 svar postet i denne tråd vises herunder
6 indlæg har modtaget i alt 19 karma
Sorter efter stemmer Sorter efter dato
Nåå tror jeg misforstod.
Altså det virker fint UDEN at bruge include.

Så er det nok fordi du i din commonHead.php fil outputter nogen tegn for eksempel mellemrums tegn eller linieskift eller BOM tegn hvis du har gemt din fil i UTF-8 med BOM for eksempel. Så prøv og gem commonHead.php uden BOM.

Og check at du ikke outputter noget først eller sidste i commonHead.php før <?php og efter ?> der må højst være et linieskift efter ?> hvis der er mere bliver det output som kommer med på din HTML side.



Hvad mener du med 30px margin? Kommer der margin på body elementet?

Umiddelbart er der ikke nogen fejl at se- men tjek dine tegn. På en mac fx, der kommer der en non breaking space unicode char hvis du får trykket alt+space istedet for space - eller der kommer en flot unicode doublequote ved alt+2 og ikke den man forventer med shift+2. Faktisk har alt-space irriteret mig så meget at jeg har mappet alt+space til space.

Så prøv at gå " og spaces efter; Slet dem og lav dem igen. Det samme med indents - det kan være at der er et specielt tegn du ikke kan se, og som får browseren til at choke.

Line-endings ( \n, \r\n ) kan også drille under særlige omstændigheder.

Har du kigget i kildekoden i browseren (evt med dev-tools) når du bruger include?



Har du prøvet at åbne siden i Chrome og gå den igennem med deres Dev Tools? Du kan trace css selectors og properties og inspicere elementerne meget indgående. Det burde være muligt at finde svaret derigennem. Kan du give et link til siden, så vil jeg med glæde hjælpe.

En mulighed kan være at browseren ikke læser dine < og > som den skal, og tror det er tekst i headeren. Det kunne måske godt resultere i en ekstra margin i toppen ( tænk tekst i et visibility:hidden element) - men det burde jo så give udslag i at de ressourcer som loades i dit include ikke ville blive brugt - og dermed nogen manglende styling.



Mellemrum bliver jo ignoreret i head (ellers tænk på hvad indents ville gøre). BOM er en mulighed - men det er der da vel ingen editors der fejler på mere?? Anyway - her er et link: http://en.wikipedia.org/wiki/Byte_order_mark



Du kan læse om BOM her (rul ned til encoding) : http://scootergrisen.dk/htmlgrisen/programmer_tekstredigering.php

UTF-8 kan bådes gemmes med og uden BOM.
BOM er nogen tegn først i filen, det vil sige hvis du gemmer en tom fil med UTF-8 med BOM så indenholer den 3 byte selvom du ikke har skrevet noget i den.



Du kan skrive en kommentar med tegn som æøå i filen så skifter den ikke til ansi : http://scootergrisen.dk/htmlgrisen/programmer_tekstredigering.php#tip



Indlæg senest redigeret d. 05.09.2012 14:44 af Bruger #13010
Hej Gustav,
Tak for dit svar, det har da helt sikkert gjort at jeg har fået øjenene op for nogle ellers usynlige fejl, det kan være at filerne ligger i to forskellige encodings eller andre usynlige fejl, som du nævner.
Men når jeg tjekker i browseren er koden fuldstændig ens, både med include og uden include dog er der den der 30px margin i toppen af body elementet med include.



Jeg har dog kun sidden liggende på en local webhost, så er desværre ikke mulig at give link til den, ellers gav jeg med glæde linket videre :)

tja, jeg har forsøgt at kigge lidt videre på det, men den opføre sig så mærkeligt, at jeg for øjeblikke bare har accepteret at jeg må bruge manual copy paste, når jeg vil ændre i headeren på alle sites :P (har kun en 3 stykker i øjeblikke,så det er ikke så slemt som det lyder :) )



Det må være noget af din CSS kode i enten styling2.css eller brugerpanel.css der laver den margin.

Det er 1000 gange lettere for mig/os at finde fejlen hvis du kan lægge siden på nettet.

Ellers kan du i for eksempel firefox højdeklikke på der hvor margin er og vælge "inspicer element". Så kan du se koden.
Kræver muligvis du har firebug eller DOM inspector addons installeret.

Ellers vis os koden til de 2 CSS filer.



@scootergrisen - næppe - eftersom det er de samme stylesheets som der henvises til uanset om de kommer fra en inkluderet fil eller det står i selve filen.

@Kevin, kom til at tænke på om det kunne have noget med paths at gøre? Ligger alle filer der henviser til css filerne, i roden af din webroot?



<< < 12 > >>
t