Avatar billede perool Nybegynder
27. juni 2007 - 10:34 Der er 26 kommentarer og
1 løsning

Simpel menu

Jeg ønsker at lave en menu der ser på hvad side jeg er på og ud fra det laver min menu.Tænkt som nedenstående:

switch("nuværende side")
case "side1"
                        <td>
                <a href="../side2.php">side2</a>
            </td>
            <td>
                <a href="../side3.php">side3</a>
            </td>
            <td>
                <a href="../side4.php">side4</a>
            </td>
case "side2"
                        <td>
                <a href="../side1.php">side1</a>
            </td>
            <td>
                <a href="../side3.php">side3</a>
            </td>
            <td>
                <a href="../side4.php">side4</a>
            </td>
case "side3"
                        <td>
                <a href="../side1.php">side1</a>
            </td>
            <td>
                <a href="../side2.php">side2</a>
            </td>
            <td>
                <a href="../side4.php">side4</a>
            </td>

OSV.
Hvordan griber jeg det an?
Avatar billede jakobdo Ekspert
27. juni 2007 - 11:18 #1
Du kan lave dine links ala:

index.php?menu=side1
index.php?menu=side2
osv...
og husk at ret til: switch($_GET['menu'])
Avatar billede perool Nybegynder
27. juni 2007 - 11:32 #2
Den forstod jeg ikke.
Jeg har en header.php hvor menuen er og så ønsker jeg at den sætter menuen alt efter hvilken side den er på.
Hvordan henter jeg oplysning om hvilken side jeg er på?
Avatar billede jakobdo Ekspert
27. juni 2007 - 11:37 #3
Det kommer an på hvordan dine sider bygges op.
Hvis du laver:

index.php?page=side1
index.php?page=side2
osv.
Så kan man trække variablen: $_GET['page'] ud og den vil så indeholde: side1, side2 eller hvilken side man måtte være på.
Avatar billede perool Nybegynder
27. juni 2007 - 12:31 #4
Hej jakobdo!
Jeg er total begynder så det skal skæres ud i pap :-)
Hvordan kan jeg lave det i en headerfil jeg includer.
Håber du bærer over med mig.
Avatar billede perool Nybegynder
27. juni 2007 - 18:31 #5
Jeg har lavet følgende i min header.php:
[code]<body>
    <table class="mainTable">
        <tr>
            <td class = "overskrift" colspan = "4">
                r-olsen.dk
            </td>
        </tr>
        <tr>
        <?php
        $page = $_GET["page"];
       
        switch ($page) {
          case "default.php":
              ?>
              <td>
                <a href="joern.php">Jørn</a>
            </td>
            <td>
                <a href="peder.php">Peder</a>
            </td>
            <td>
                <a href="lars.php">Lars</a>
            </td>
              <?php
          case "peder.php":
              ?>
              <td>
                <a href="joern.php">Jørn</a>
            </td>
            <td>
                <a href="default.php">Forside</a>
            </td>
            <td>
                <a href="lars.php">Lars</a>
            </td>
            <?php
          case "joern.php":
              ?>
              <td>
                <a href="peder.php">Peder</a>
            </td>
            <td>
                <a href="default.php">Forside</a>
            </td>
            <td>
                <a href="lars.php">Lars</a>
            </td>
                        <?php
          case "lars.php":
              ?>
              <td>
                <a href="peder.php">Peder</a>
            </td>
            <td>
                <a href="default.php">Forside</a>
            </td>
            <td>
                <a href="joern.php">Jørn</a>
            </td>

              <?php
          default:
              ?>
              <td>
                <a href="joern.php">Jørn</a>
            </td>
            <td>
                <a href="peder.php">Peder</a>
            </td>
            <td>
                <a href="lars.php">Lars</a>
            </td>
              <?php
        }
        ?>[/code]
og i de filer der kalder ser det sådan ud:
[code]<?PHP
    include("header.php");
?>
    <h1>DETTE ER EN TEST AF PEDER</h1>
    <?PHP
    include("footer.php");
    ?>   
[/code]
Avatar billede perool Nybegynder
27. juni 2007 - 18:32 #6
Det overstående virker ikke, HJÆLP :-(
Avatar billede jakobdo Ekspert
27. juni 2007 - 21:08 #7
Måske ikke optimalt, men se her:

<?php
//http://www.eksperten.dk/spm/785172

//Menu
$menu = array(
    array('title' => 'Side1', 'subs' => array('Sub1_1' => 'sub1_1', 'Sub1_2' => 'sub1_2')),
    array('title' => 'Side2', 'subs' => array('Sub2_1' => 'sub2_1', 'Sub2_2' => 'sub2_2', 'Sub2_3' => 'sub2_3')),
    array('title' => 'Side3', 'subs' => array('Sub3_1' => 'sub3_1', 'Sub3_2' => 'sub3_2')),
    array('title' => 'Side4', 'subs' => array('Sub4_1' => 'sub4_1', 'Sub4_2' => 'sub4_2', 'Sub4_3' => 'sub4_3', 'Sub4_4' => 'sub4_4'))
);

if(is_array($menu) && count($menu)>0)
{
    echo '<ul>';
    foreach($menu AS $id => $item)
    {
        echo '<li><a href="?menu=' . $id . '">' . $item['title'] . '</a></li>';
    }
    echo '</ul>';
}

if(isset($_GET['menu']) && is_numeric($_GET['menu']))
{
    $id = intval($_GET['menu']);
    echo '<hr />';
    echo '<ul>';
    foreach($menu[$id]['subs'] AS $link => $item)
    {
        echo '<li><a href="?menu='.$id.'&sub=' . $link . '">' . $item . '</a></li>';
    }
    echo '</ul>';
}

?>

Du kan se koden i aktion her: http://www.codebreaker.dk/exp/785172exp.php
Avatar billede perool Nybegynder
27. juni 2007 - 21:17 #8
Det ser godt ud men er alt for komplekst. Her er et link til den side jeg roder med http://r-olsen.dk/test/ det eneste jeg skal have det til er at når jeg går fra forsiden til f eks Peder så skifter menuen således at der er link til Jørn, Lars og Forsiden, og går jeg på Lars skifter menuen til Jørn, Peder og Forsiden osv.
Avatar billede jakobdo Ekspert
27. juni 2007 - 22:03 #9
Noget ala:

<?php
//http://www.eksperten.dk/spm/785172

$menu = array('Forside' => 'index.php', 'Jørn' => 'joern.php', 'Peder' => 'peder.php', 'Lars' => 'Lars');

$url = $_SERVER['SCRIPT_URL'];
$lastSlash = strrpos($url,'/') + 1;
$file = substr($url, $lastSlash);

foreach($menu AS $title => $link)
{
    if($file != $link)
    {
        echo '<a href="'.$link.'">'.$title.'</a> ';
    }
}
?>
Avatar billede perool Nybegynder
27. juni 2007 - 23:14 #10
Hej jakobdo!
Nu ser min header således ud:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>
    r-olsen.dk
</title>

<link rel="stylesheet" type="text/css" href="styles/pederStyle.css" />
<script type="text/javascript" src="scripts/tid.js"></script>
</head>
<body>
    <table class="mainTable">
        <tr>
            <td class = "overskrift" colspan = "4">
                r-olsen.dk
            </td>
        </tr>
        <tr>
        <?php
//http://www.eksperten.dk/spm/785172

$menu = array('Forside' => 'default.php', 'Jørn' => 'joern.php', 'Peder' => 'peder.php', 'Lars' => 'lars.php');

$url = $_SERVER['SCRIPT_URL'];
$lastSlash = strrpos($url,'/') + 1;
$file = substr($url, $lastSlash);

foreach($menu AS $title => $link)
{
    if($file != $link)
    {
        echo '<td><a href="'.$link.'">'.$title.'</a></td> ';
    }
}
?>
</tr>
</table>

Det virker!!! SUPER TAK FOR STOR TÅLMODIGHED!!
Avatar billede perool Nybegynder
27. juni 2007 - 23:16 #11
skriv et svar så du kan få point
Avatar billede perool Nybegynder
27. juni 2007 - 23:19 #12
jeg havde håbet på at lave således at linket til den side man er på ikke bliver vist, men kan godt leve med dette :-)
Avatar billede jakobdo Ekspert
28. juni 2007 - 07:44 #13
Men gør koden ikke det da?
Avatar billede perool Nybegynder
28. juni 2007 - 09:03 #14
Jo den laver menuen, men den ændre den ikke alt efter hvilken side jeg er på.
Det gør den heller ikke når jeg laver den som switch, noget tyder på at jeg ikke får fat i url'en
Avatar billede jakobdo Ekspert
28. juni 2007 - 09:24 #15
Jeg tror du gør noget galt.
Samme kode hos mig, giver denne effekt: http://www.codebreaker.dk/exp/785172/
Avatar billede perool Nybegynder
28. juni 2007 - 12:15 #16
Det forstår jeg ikke en lyd af, som du kan se af ovenstående har jeg lavet copy/paste og mit virker ikke som du kan se på http://www.r-olsen.dk/test
Avatar billede jakobdo Ekspert
28. juni 2007 - 12:18 #17
Det forstår jeg så ikke nej. :o(
Avatar billede perool Nybegynder
28. juni 2007 - 13:59 #18
Det virker som om jeg ikke får fat i URL'en, er der andre måder at fange den på?
Avatar billede jakobdo Ekspert
28. juni 2007 - 17:07 #19
Prøv at debug.
Prøv at skriv: echo 'FIL : ' . $_SERVER['SCRIPT_URL'];

Du kan evt. også prøve at lave filen info.php:
<?php
phpinfo();
?>

Så kan jeg se hvad den linie evt. skal rettes til.
Avatar billede perool Nybegynder
28. juni 2007 - 18:36 #20
Så er det lavet, håber du kan bruge det til noget.
Avatar billede perool Nybegynder
28. juni 2007 - 18:41 #21
Har fundet fejlen!!
Det skal hedde:
$url = $_SERVER['SCRIPT_NAME'];
og ikke:
$url = $_SERVER['SCRIPT_URL'];
Avatar billede jakobdo Ekspert
28. juni 2007 - 19:06 #22
Ja, den kan du også bruge!
Du kan faktisk også bruge: $_SERVER['PHP_SELF']
Men du får et svar.
Avatar billede jakobdo Ekspert
28. juni 2007 - 19:45 #23
Takker for point.
Avatar billede perool Nybegynder
28. juni 2007 - 19:51 #24
De er velfortjent.
Hvis du har testet min side vil du se at linksene hopper til den ene side når man går fra forsiden, har du en hurtig løsning?
:-)
Avatar billede jakobdo Ekspert
28. juni 2007 - 20:03 #25
Jeg ville nok lave det på følgende måde:

tabel = width = 100%
td = width = 33%
text = centreret i TD
Så burde det ikke hoppe og danse.
Avatar billede perool Nybegynder
28. juni 2007 - 20:27 #26
Super! tak det virker :-)
Jeg vender tilbage hvis jeg får flere problemer.
Avatar billede jakobdo Ekspert
28. juni 2007 - 20:38 #27
:o)
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