09. januar 2006 - 22:46Der er
43 kommentarer og 1 løsning
Include indhold
Hej Eksperter,
jeg er temmelig ny til PHP og vil derfor være taknemmelig hvis nogen kunne hjælpe mig med mit spørgsmål.
Jeg har en html skabelon som skal gå igen på alle sider og skal derfor kun skifte selve indholdet, altså 'home' skal have en fil for sig selv, 'about' en fil osv... - hvordan gør jeg det? noget med skabelon.php?side=home eller noget.. og så definere de forskellige sider et sted også?
Jeg kan ikke anbefale bryrup's løsning. Den giver brugerne adgang til at få køre en hvilken som helst php fil på serveren. Men lidt ekstra kode kan dog rette op på det :o)
<?php
// Vi laver lige et array som indeholder "tilladte" sider. $sider = array('home' => 'index.php', 'about' => 'about.php', 'links' => 'links.php');
Jeg får fejl, men jeg har en lille mistanke om at det er min server, da den printer kinesiske tegn og alt muligt.. hehe.. jeg ser på det i morgen - tusind tak for hjælpen!
Hm.. Siden begynder at opføre sig mærkeligt når jeg sætter <?php include($filnavn); ?> ind. Alt andet kode er inde, men når jeg så prøver at hente en fil så loader siden ikke.. har du nogen idé om hvad problemet kan være?
if (!array_key_exists($side, $sider)) $side = $sider['home']; ?> <!-- starten af din html / din menu starter her --> <ul id="nav"> <?php // Her udskriver vi lige din menu foreach ($sider as $navn => $dummy) { $active = ($navn == $side) ? ' class="active"' : ''; echo ' <li id="' . $navn . '"><a href="test.php?side=' . $navn . '"' . $active . '>' . $navn . "</a></li>\n"; } ?> </ul> <!-- HTML mellem menu og indhold --> <?php if (file_exists($sider[$side])) { require($sider[$side]); } else { echo "Siden findes ikke"; } ?> </body> </html>
Hey igen, hvad gør jeg hvis jeg gerne vil kalde en fil fra en undermappe? Altså istedet for 'galleri.php' ligger den her 'galleri/galleri.php'. Jeg har prøvet at ændre til 'galleri' => 'galleri/galleri.php' men det gør åbenbart ingen forskel..
- har du iøvrigt nogen idé om hvorfor alle æ-ø-å bliver til mærkelig tegn på alle siderne?? (ikke index.php, men about.php, fun.php osv.) det er ikke min css og heller ikke noget mærkelig kode i filerne... det er temmelig underligt!
Jeg kan se at du har pillet med serveren, så jeg kan ikke se hvad du mener. Hvis æøå bliver til æ ø og å så er den god nok. Det er såkaldte HTML entities som bruges til at vise tegn som ikke er standard på alle sprog.
Ellers kan det skyldes at du har angivet en forkert character encoding.
Jeg kan se at du har et meta tag som angiver at character encoding er utf-8. Det skal du lige ændre til iso-8859-1. Derudover er jeg ret sikker på at HTML 4.01 ikke har xmlns og xml:lang atributter.
Ok, det ser ud til at du har gemt index.php i utf-8 og about.php i iso-8859-1. De to filer skal være i samme format, ellers går der ged i det. Og du skal jo så angive det format du vælger.
Og husk forresten at du ikke skal have <html>, <head> og <body> tags i de filer du inkluderer. Det bliver jo klippet ind midt i den side som inkluderer den (index.php). Højre-klik på siden og vælg 'Vis kilde' hvis du vil se den resulterende HTML.
Jeg kan iøvrigt anbefale W3C's HTML Validator, som kan hjælpe dig med at lave gyldig HTML. http://validator.w3.org
Ja så er jeg desværre tilbage igen med et spørgsmål mere, hehe.. Jeg er villig til at smide 30 point mere efter dig (Rednex) fordi du har været så behjælpelig :)
Problemet er at gerne vil tilføje to menupunkter (kontakt og links) et andet sted på siden... (se http://www.froghead.dk/test/index.php) men det kan jeg ikke medmindre jeg tilføjer dem sådan her: 'kontakt' => 'kontakt.php', 'links' => 'links/links.php'.. og gør jeg det, kommer de jo også i den anden menu..
er der løsning på dette?
Alt virker ellers som det skal og jeg er RIGTIG glad for den løsning du har givet mig!
Hvis disse links også skal tildeles class="active" når du har klikket på dem, så er du nødt til at lave et array mere ligesom det der bliver brugt til hovedmenuen. Koden skal være magen til det som laver hovedmenuen, bortset fra at det selvfølgelig skal bruge det nye array.
Ahh ja, nu kan jeg se problemet. Jeg tror det smarteste er at rette lidt så vi kan lave links som ikke automatisk kommer med i hovedmenuen. Ret foreach loopet så det ser sådan ud:
Det er min fejl. Jeg har haft lidt travlt med at rydde op så jeg kunne få plads til min nye (enorme) skrivebord som kom idag :oD
Slet denne linie igen (det var en tanketorsk). Så skulle den gerne kunne finde den side du henviser til. $side = preg_replace('/^_(.*)/', "\\1", $side);
Hvis du vil lave et link til spil.php (ikke index.php?side=spil), så laver du den bare på den gammeldags facon (<a href="spil.php">spil</a>). Hvis du vil henvise til en side vha. index.php?side=test og ikke vil have at den skal dukke op i menuen, så indsætter du , '_test' => 'test.php' i arrayet. Linket skal så hedde <a href="index.php?side=_test">Test</a>.
Du kan sagtens oprette en ny tråd med titlen "Point til Rednex" og smide point der. Bare du husker at referere til dette spm.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.