Avatar billede mivroth Nybegynder
12. oktober 2008 - 21:11 Der er 40 kommentarer og
1 løsning

Hjælp til at lave menu?

Hej

Sidder og laver en menu, men har et lille problem.
Koden ses her:

<?php
  echo"
    <ul id='tabnav'>
        <li><a href='../Index.php' class='active'>Forside</a></li>
        <li><a href='../Produkter/Index.php'>Produkter</a></li>
        <li><a href='../Download/Index.php'>Download</a></li>
        <li><a href='../Webservice/Index.php'>Webservice</a></li>
        <li><a href='../Kontakt.php'>Kontakt</a></li>
    </ul>";
?>

Vil gerne have lavet sådan, at når et link bliver trykket på, skal class='active' bruges, ved det link der er aktiv?
Avatar billede majbom Novice
12. oktober 2008 - 21:16 #1
<li><a href='../Produkter/Index.php'";
if($_GET[site==produkter])echo "class='active'";
echo ">Produkter</a></li>

nu ved jeg ikke hvordan dit site er bygget op, da alle dine punkter linker til forsiden...
Avatar billede mivroth Nybegynder
12. oktober 2008 - 21:21 #2
de linker til en forside en hver sin mappe?
Avatar billede mivroth Nybegynder
12. oktober 2008 - 21:29 #3
i hver sin mappe
Avatar billede showsource Seniormester
12. oktober 2008 - 22:32 #4
Du kan

<?php
function href_class($var) {
$str = "";
    if($_SERVER["PHP_SELF"] == $var) {
    $str = " class='ative'";
    }
return $str;
}

echo"

    <ul id='tabnav'>
        <li><a href='../Index.php'".href_class("/Index.php").">Forside</a></li>
        <li><a href='../Produkter/Index.php'".href_class("/Produkter/Index.php").">Produkter</a></li>
        <li><a href='../Download/Index.php'".href_class("/Download/Index.php").">Download</a></li>
        <li><a href='../Webservice/Index.php'".href_class("/Webservice/Index.php").">Webservice</a></li>
        <li><a href='../Kontakt.php'".href_class("/Kontakt.php").">Kontakt</a></li>
    </ul>";
?>

Hvorfor linker du "direkte"

<a href='/Download/Index.php'>
eller
<a href='/Download/'>
Avatar billede showsource Seniormester
12. oktober 2008 - 22:32 #5
du IKKE "direkte"
Avatar billede majbom Novice
13. oktober 2008 - 08:28 #6
ja, det havde jeg så ikke lige set, sorry
Avatar billede jakobdo Ekspert
13. oktober 2008 - 08:40 #7
Hvad med en kode ala:

<?php

$menu = array(
    'Forside' => '/Index.php',
    'Produkter' => '/Produkter/Index.php',
    'Download' => '/Download/Index.php',
    'Webservice' => '/Webservice/Index.php',
    'Kontakt' => '/Kontakt.php'
);
echo '<ul id="tabnav">';
foreach($menu AS $title => $url){
    echo '<li><a href="'.$url.'"'.(($_SERVER["PHP_SELF"] == $url) ? ' class="active"' : '').'>'.$title.'</a></li>';
}

echo '</ul>';
?>

Og lad vær med at brug store bogstaver i dine filnavne, hold dig altid til de små. :o)
Avatar billede mivroth Nybegynder
13. oktober 2008 - 22:23 #8
jakobdo > din kode er perfekt, mne der er et lille problem. vil gerne havde sådan at Forside er aktiv når man kommer ind på side, og ikke først når man har trykket på linket.
Avatar billede showsource Seniormester
14. oktober 2008 - 00:12 #9
/
Avatar billede jakobdo Ekspert
14. oktober 2008 - 08:09 #10
Den burde da trigge, når din forside hedder Index.php og den åbnes som standard.
Har du et link til din side ?
Prøv evt. at udskriv: $_SERVER["PHP_SELF"] i toppen af siden, og se hvad den udskriver, når du "starter" siden.
Avatar billede mivroth Nybegynder
14. oktober 2008 - 20:21 #11
min side køre local, den skriver ikke noget når jeg bruger udskriv: $_SERVER["PHP_SELF"]
Avatar billede jakobdo Ekspert
14. oktober 2008 - 20:56 #12
Heller ikke hvis du åbner en anden side ?
Avatar billede jakobdo Ekspert
14. oktober 2008 - 20:56 #13
<?php
phpinfo();
?>

Smid det i index.php
Åben så: localhost/mappe/
mappe = den mappe hvor index.php er lagt i.
Kan du finde et sted den udskriver index.php i info på skærmen ?
Avatar billede mivroth Nybegynder
14. oktober 2008 - 21:04 #14
nej, den udskriver slet ikke noget....

hmm, forstod ikke helt det sidste?
Avatar billede jakobdo Ekspert
14. oktober 2008 - 21:17 #15
På din localhost, opret en mappe i din htdocs.
Kald f.eks. mappen: /eks
Gem indholdet herunder som index.php i mappen.
<?php
phpinfo();
?>

Åben så:
http://localhost/eks/

Udskrives der en masse info på skærmen ?
Hvis ja, så se om du kan finde en _SERVER variabel som indeholder index.php
Avatar billede majbom Novice
14. oktober 2008 - 21:17 #16
hvordan har du sat din server op? har du selv installeret apache og php, eller har du kørt en wamp-installation?
Avatar billede mivroth Nybegynder
14. oktober 2008 - 22:30 #17
Ja, har selv sat det hele op?

syndes ikke rigtig jeg kan finde noget med noget _SERVER variavel?

Kan det have noget at gøre med den hedder Index.php og ikke index.php, når jeg har brugt index.php i httpd.
Avatar billede jakobdo Ekspert
15. oktober 2008 - 08:01 #18
Viser den noget på din skærm, når du åbner http://localhost/eks/
Eller får en fejl om siden ikke kan vises ?
Avatar billede mivroth Nybegynder
15. oktober 2008 - 08:47 #19
Ja, den viser php's info side
Avatar billede jakobdo Ekspert
15. oktober 2008 - 09:16 #20
Kan du evt. copy/paste hele skidtet herind ?
Avatar billede mivroth Nybegynder
15. oktober 2008 - 18:30 #21
Siden er delt op i flere sider, vil du havde dem alle?
Avatar billede jakobdo Ekspert
15. oktober 2008 - 20:07 #22
Prøv at vis os forsiden ?
Avatar billede mivroth Nybegynder
15. oktober 2008 - 21:40 #23
top.php

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <meta name="generator" content="TSW WebCoder">
   
    <link type="text/css" media="screen" rel="stylesheet" href="../Style.css">
    <title>Home Media</title>
  </head>

<body>

<div id="container">

    <div id="header">
        <em>Ho</em>me Data & Media
    </div>

menu.php

<?php

$menu = array(
    'Forside' => '/Index.php',
    'Produkter' => '/Produkter/Index.php',
    'Download' => '/Download/Index.php',
    'Webservice' => '/Webservice/Index.php',
    'Kontakt' => '/Kontakt.php'
);
echo '<ul id="tabnav">';
foreach($menu AS $title => $url){
    echo '<li><a href="'.$url.'"'.(($_SERVER["PHP_SELF"] == $url) ? ' class="active"' : '').'>'.$title.'</a></li>';
}

echo '</ul>';
?>

index.php

<?php

include ("Include/Top.php");
include ("Include/Menu.php");
include ("Include/Nyheder.php");

  echo"
    <div id='content'>
        <h3>Velkommen</h3>
        <p>Velkommens tekst her</p>
        <h3>Nye produkter</h3>
        <p>Nye produkter her</p>
        <h2></h2>
        <p></p>
    </div>";
   
include ("Include/Bund.php");

?>


nyheder.php

    <div id="sidebar">
        <h3>Nyheder</h3>
        Nyheder her
    </div>   

bund.php

    <div id="footer">
    <p>| Copyright &copy; <a href="mailto:">Home Media</a> |</p>
    </div>
   
</div>

</body>
</html>
Avatar billede jakobdo Ekspert
15. oktober 2008 - 22:08 #24
Prøv at lav en fil som indeholder:

<?php
echo '<pre>';
print_r($_SERVER);
echo '</pre>';
?>

Udskriver den ingen data ?
Avatar billede mivroth Nybegynder
15. oktober 2008 - 22:15 #25
Array
(
    [HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    [HTTP_ACCEPT_LANGUAGE] => da
    [HTTP_UA_CPU] => x86
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
    [HTTP_HOST] => localhost
    [HTTP_CONNECTION] => Keep-Alive
    [PATH] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\php;C:\mysql\bin;C:\Programmer\Samsung\Samsung PC Studio 3\
    [SystemRoot] => C:\WINDOWS
    [COMSPEC] => C:\WINDOWS\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
    [WINDIR] => C:\WINDOWS
    [SERVER_SIGNATURE] => Apache/2.0.63 (Win32) PHP/5.2.6 Server at localhost Port 80

    [SERVER_SOFTWARE] => Apache/2.0.63 (Win32) PHP/5.2.6
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => 127.0.0.1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 127.0.0.1
    [DOCUMENT_ROOT] => C:/apache/Apache2/htdocs
    [SERVER_ADMIN] => mivroth@hotmail.com
    [SCRIPT_FILENAME] => C:/apache/Apache2/htdocs/index1.php
    [REMOTE_PORT] => 3796
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [REQUEST_URI] => /Index1.php
    [SCRIPT_NAME] => /Index1.php
    [PHP_SELF] => /Index1.php
    [REQUEST_TIME] => 1224101720
)
Avatar billede jakobdo Ekspert
15. oktober 2008 - 22:24 #26
Er du så sikker på:
$_SERVER['PHP_SELF'] ikke indeholder noget, hvis du smider den i Index.php og åbner den ?

Prøv lige at smid samme kode i toppen af f.eks. top.php og åben: localhost/

hvad smider den så ud ?
Du skulle gerne kunne finde index.php eller Index.php et sted.
Avatar billede mivroth Nybegynder
16. oktober 2008 - 18:54 #27
Kom til og tænke på om det skulle havde noget at gøre med jeg include, alle siderne?
Avatar billede jakobdo Ekspert
16. oktober 2008 - 20:22 #28
Hvis alle sider bliver vist via: index.php?page=top
Så kan det godt være problemet.
Avatar billede mivroth Nybegynder
16. oktober 2008 - 20:51 #29
det gør det heller ikke, min index ser jo sådan ud

<?php

include ("Include/Top.php");
include ("Include/Menu.php");
include ("Include/Nyheder.php");

  echo"
    <div id='content'>
        <h3>Velkommen</h3>
        <p>Velkommens tekst her</p>
        <h3>Nye produkter</h3>
        <p>Nye produkter her</p>
        <h2></h2>
        <p></p>
    </div>";
   
include ("Include/Bund.php");

?>
Avatar billede mivroth Nybegynder
16. oktober 2008 - 20:52 #30
og jeg skriver kun index.php, og så ligger det hele jo i siden
Avatar billede jakobdo Ekspert
16. oktober 2008 - 21:03 #31
Prøv at test:

<?php
include ("Include/Top.php");
include ("Include/Menu.php");
include ("Include/Nyheder.php");

echo '<pre>';
print_r($_SERVER);
echo '</pre>';

  echo"
    <div id='content'>
        <h3>Velkommen</h3>
        <p>Velkommens tekst her</p>
        <h3>Nye produkter</h3>
        <p>Nye produkter her</p>
        <h2></h2>
        <p></p>
    </div>";
 
include ("Include/Bund.php");

?>

Og se så om du kan finde index.php nogen steder.
Avatar billede mivroth Nybegynder
16. oktober 2008 - 21:39 #32
den udskriver dette

Array
(
    [HTTP_ACCEPT] => image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    [HTTP_ACCEPT_LANGUAGE] => da
    [HTTP_UA_CPU] => x86
    [HTTP_ACCEPT_ENCODING] => gzip, deflate
    [HTTP_USER_AGENT] => Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727)
    [HTTP_HOST] => localhost
    [HTTP_CONNECTION] => Keep-Alive
    [PATH] => C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\php;C:\mysql\bin;C:\Programmer\Samsung\Samsung PC Studio 3\
    [SystemRoot] => C:\WINDOWS
    [COMSPEC] => C:\WINDOWS\system32\cmd.exe
    [PATHEXT] => .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH
    [WINDIR] => C:\WINDOWS
    [SERVER_SIGNATURE] => Apache/2.0.63 (Win32) PHP/5.2.6 Server at localhost Port 80

    [SERVER_SOFTWARE] => Apache/2.0.63 (Win32) PHP/5.2.6
    [SERVER_NAME] => localhost
    [SERVER_ADDR] => 127.0.0.1
    [SERVER_PORT] => 80
    [REMOTE_ADDR] => 127.0.0.1
    [DOCUMENT_ROOT] => C:/apache/Apache2/htdocs
    [SERVER_ADMIN] => mivroth@hotmail.com
    [SCRIPT_FILENAME] => C:/apache/Apache2/htdocs/Index.php
    [REMOTE_PORT] => 2764
    [GATEWAY_INTERFACE] => CGI/1.1
    [SERVER_PROTOCOL] => HTTP/1.1
    [REQUEST_METHOD] => GET
    [QUERY_STRING] =>
    [REQUEST_URI] => /
    [SCRIPT_NAME] => /index.php
    [PHP_SELF] => /index.php
    [REQUEST_TIME] => 1224185858
)
Avatar billede jakobdo Ekspert
16. oktober 2008 - 21:43 #33
[PHP_SELF] => /index.php
Ergo skal $_SERVER['PHP_SELF'] altså virke...

Kan du ikke prøve at kontakte mig på msn: jakobdo (at) hotmail {dot} com
Ellers tror jeg ikke vi finder en løsning på denne.
Avatar billede mivroth Nybegynder
16. oktober 2008 - 22:04 #34
Har lige tilføjet dig :)
Avatar billede mivroth Nybegynder
16. oktober 2008 - 22:47 #35
Jakobdo, fik lavet det over msn. Her er løsningen

<?php

$menu = array(
    'Forside' => '/Index.php',
    'Produkter' => '/Produkter/Index.php',
    'Download' => '/Download/Index.php',
    'Webservice' => '/Webservice/Index.php',
    'Kontakt' => '/Kontakt.php'
);

echo '<ul id="tabnav">';
foreach($menu AS $title => $url){
    echo '<li><a href="'.$url.'"'.((strtolower($_SERVER["PHP_SELF"]) == strtolower($url)) ? ' class="active"' : '').'>'.$title.'</a></li>';
}

echo '</ul>';
?>
Avatar billede jakobdo Ekspert
17. oktober 2008 - 07:16 #36
Problemet var Windows relateret.
Når man kalder / som åbner apache som default index.php
Brugeren havde dog en Index.php fil liggende, som windows stiller sig tilfreds med.
Men når man sammenlignede index.php og Index.php, så matchede det jo ikke. :o)

Og du får et svar.
Avatar billede jakobdo Ekspert
17. oktober 2008 - 07:16 #37
Jeg vil nok også anbefale dig at ændre navnene på mapper og filer, så alt er med små bogstaver.
Avatar billede mivroth Nybegynder
17. oktober 2008 - 16:57 #38
tak for hjælpem, filnavet vil blive rette som noget af det næste :)
Avatar billede jakobdo Ekspert
17. oktober 2008 - 17:35 #39
Du skal lige acceptere svaret. :o)
Avatar billede mivroth Nybegynder
18. oktober 2008 - 00:07 #40
sorry sådan
Avatar billede jakobdo Ekspert
18. oktober 2008 - 08:52 #41
Takker for point.
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