Avatar billede simonbjensen Nybegynder
29. maj 2008 - 09:02 Der er 16 kommentarer og
1 løsning

Dynamisk include med PHP

Mit problem er, at den ikke henter indholdet fra mine andre sider, men blot indholdet fra forsiden.
Hvad er det jeg gør forkert?

Jeg har benyttet mig af http://www.hjemmesideskolen.dk/html/dynphp.php?page=s3 's guide.

i min fil har jeg skrevet flg.:

toppen:
<?
$sider = array (
'Forside' => 'forside',
'Event' => 'event',
'Fordele' => 'fordele',
'Konkurrencer' => 'konkurrencer',
'Kontakt' => 'kontakt',
);
$code='forside'; $title=$sider[$code];  /* default indhold hvis intet er specifiseret */
$order=$_GET['page'];
if (isset($sider[$order])) {
$code=$order;
$title=$sider[$order];
}
$content=$code.'.php';
?>

menu:
<?php
foreach($sider AS $navn => $url) {
if($url == $_GET['page'] || empty($_GET['page']) && $url == "forside") {
  echo '<a href="?page='.$url.'" class="tabactive_100">'.$navn.'</a>'."\n";
}else{
  echo '<a href="?page='.$url.'" class="tabinactive_100">'.$navn.'</a>'."\n";
}
}
?>

content:
<?php
include($content);
?>
Avatar billede majbom Novice
29. maj 2008 - 09:31 #1
så den viser altid 'forside' eller hvad?
Avatar billede dkfire Nybegynder
29. maj 2008 - 11:05 #2
Tror du lige har glemt et par '.
Ret:
foreach($sider AS $navn => $url) {
if($url == $_GET['page'] || empty($_GET['page']) && $url == "forside") {
  echo '<a href="?page='.$url" class="tabactive_100">'.$navn.'</a>'."\n";
}else{
  echo '<a href="?page='.$url" class="tabinactive_100">'.$navn.'</a>'."\n";
}
}
Til:
foreach($sider AS $navn => $url) {
if($url == $_GET['page'] || empty($_GET['page']) && $url == "forside") {
  echo '<a href="?page='.$url.'" class="tabactive_100">'.$navn.'</a>'."\n";
}else{
  echo '<a href="?page='.$url.'" class="tabinactive_100">'.$navn.'</a>'."\n";
}
}
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 13:33 #3
splazz > ja, den viser alid forsiden.
dkfire > den kommer med en fejlmeddelse.
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 13:33 #4
splazz > ja, den viser alid forsiden.
dkfire > den kommer med en fejlmeddelse.
Avatar billede dkfire Nybegynder
29. maj 2008 - 13:34 #5
Og hvad skriver den fejlmeddelelse ??
Avatar billede dkfire Nybegynder
29. maj 2008 - 13:37 #6
Hmmm hvad er det lige jeg selv har skrevet. Prøv denne
foreach($sider AS $navn => $url) {
if($url == $_GET['page'] || empty($_GET['page']) && $url == "forside") {
  echo '<a href="?page='.$url.'" class="tabactive_100">'.$navn.'</a>'."\n";
}else{
  echo '<a href="?page='.$url.'" class="tabinactive_100">'.$navn.'</a>'."\n";
}
}
Avatar billede dkfire Nybegynder
29. maj 2008 - 13:38 #7
Det var da underligt, det er som om at eksperten sletter .' fra min tekst
Avatar billede dkfire Nybegynder
29. maj 2008 - 13:42 #8
Prøver lige en sidste gang:
foreach($sider AS $navn => $url) {
if($url == $_GET['page'] || empty($_GET['page']) && $url == "forside") {
  echo '<a href="?page='.$url.'" class="tabactive_100">'.$navn.'</a>'."\n";
}else{
  echo '<a href="?page='.$url.'" class="tabinactive_100">'.$navn.'</a>'."\n";
}
}
Hvis det ikke sætter .' efter $url, så burde dette her virke:
foreach($sider AS $navn => $url) {
if($url == $_GET['page'] || empty($_GET['page']) && $url == "forside") {
  echo "<a href=\"?page=$url\" class=\"tabactive_100\">".$navn.'</a>'."\n";
}else{
  echo "<a href=\"?page=$url\" class=\"tabinactive_100\">".$navn.'</a>'."\n";
}
}
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 13:51 #9
jeg prøvede lige med dem begge, og indatte .' efter url, og den anden, men det stadig forsiden den viser.
Avatar billede majbom Novice
29. maj 2008 - 14:00 #10
prøv lige for sjov skyld at echo'e dine variabler inden du includer filen
Avatar billede dkfire Nybegynder
29. maj 2008 - 14:02 #11
Jeg tror problemet ligger i at alle keys i dit $sider array er med store bogstaver, mens value er med små. Jeg mener at kunne huske at $sider['Event'] er forskellig fra $sider['event'].
Dette bevirker at php ikke kan finde noget i $sider på denne linje:
if (isset($sider[$order])) {

Det kan løses ved at vende dit array samt at ændre lidt på din foreach.
Måske noget ala:
<?
$sider = array (
'forside' => 'Forside',
'event' => 'Event',
'fordele' => 'Fordele',
'konkurrencer' => 'Konkurrencer',
'kontakt' => 'Kontakt',
);
$code='forside'; $title=$sider[$code];  /* default indhold hvis intet er specifiseret */
$order=$_GET['page'];
if (isset($sider[$order])) {
$code=$order;
$title=$sider[$order];
}
$content=$code.'.php';
?>

menu:
<?php
foreach($sider AS $url => $navn) {
if($url == $_GET['page'] || (!isset($_GET['page']) && $url == "forside")) {
  echo "<a href=\"?page=$url\" class=\"tabactive_100\">".$navn.'</a>'."\n";
}else{
  echo "<a href=\"?page=$url\" class=\"tabinactive_100\">".$navn.'</a>'."\n";
}
}
?>

content:
<?php
include($content);
?>
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 14:08 #12
kan du komme med et eksempel på det?
jeg er forholdsvis ny i forhold til php.
Avatar billede dkfire Nybegynder
29. maj 2008 - 14:10 #13
Har du prøvet den kode jeg lige har givet dig ??
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 14:14 #14
dkfire > løsningen du kom med, virkede - mange tak for hjælpen.
og i det hele taget tak til jer begge to.
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 14:14 #15
du må lige oprette et "svar" :-)
Avatar billede dkfire Nybegynder
29. maj 2008 - 14:21 #16
Det gør jeg :-)

Håber du forstod det med at der er forskel på store og små bogstaver i et array's nøgle.
Avatar billede simonbjensen Nybegynder
29. maj 2008 - 14:24 #17
jeg tror jeg forstod det med forskellen på store og små bogstaver, og så vil jeg lige tage et kig på hvad du har gjort anderledes i resten af koden.
men i hvert fald, så tak. :-)
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester