Navigeren met php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niels R

Niels R

15/08/2012 14:09:13
Quote Anchor link
Om mijn site wat dynamischer te maken ben ik aan het proberen mijn menu structuur in php te zetten...weinig succes :(

Wat ik wil:
Een navigatiebalk met submenu's
deze submenu's zijn te zien langs het "main"-textveld, dus niet uitklapbaar oid
Graag wil ik een active kleur aan de navigatiebalk EN een active kleur aan het submenu.
Het submenu moet zichtbaar blijven als er een item uit het submenu wordt weergegeven.
Hopelijk is het duidelijk wat ik zoek

Wat ik heb: misschien niet slim en ik sta open voor suggesties...
een database met de namen van menu en submenu
hoofd1 - sub1
hoofd1 - sub2
hoofd2 - sub1
etc

ik krijg de navigatiebalk opgebouwt en ik krijg er ook het submenu bij
hoe?
HOOFDMENU
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
function menu() {
        $sql = mysql_query("SELECT * FROM contentmenu WHERE C_name = C_hoofd ORDER BY C_id ASC");

        $array = array();
        $i = 0;
        while($tmp = mysql_fetch_array($sql)) {
        $array[$i]["naam"] = $tmp["C_hoofd"];

        $i++;
        }

       return $array;
        }


        $menu = menu();
        foreach($menu as $menudata) {
        $actief = $menudata["naam"] == $_GET['func'] ? ' actief' : '';
        echo "<a href = 'index_new2.php?func=".$menudata["naam"]."' class='".$menudata["naam"]. $actief ." ' >".$menudata["naam"]."</a>";
        }

          ?>

</div>
<div id="contentmenu">
<ul>
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
[b]SUBMENU[/b]
function
submenu(){

$func= mysql_real_escape_string($_GET['func']);

$sql = mysql_query ("SELECT * FROM contentmenu WHERE  C_name != C_hoofd  AND C_hoofd = '$func'  ORDER BY C_id ASC ") or die (mysql_error());
$array = array();
$i = 0;
while($tmp = mysql_fetch_array($sql)) {
$array[$i]["naam"] = $tmp["C_name"];

$i++;
}

return $array;
}


$submenu = submenu();
        foreach($submenu as $submenudata) {
        $actief = $submenudata["naam"] == $_GET['func'] ? ' actief' : '';
        echo "<li><a href = 'index_new2.php?func=".$submenudata["naam"]."' class='".$submenudata["naam"]. $actief ." ' >".$submenudata["naam"]."</a></li>";
        }


          ?>


So far so good
maar als ik nu een submenu aanklik dan verdwijnt het submenu
ook is de navigatieknop niet meer active

het doel is om in 1x heel het menu te kunnen vangen zodat ik maar 1x mijn pagina op maak.
Is het mogelijk wat ik wil...op deze manier???
Gewijzigd op 15/08/2012 14:09:44 door Niels R
 
PHP hulp

PHP hulp

30/12/2024 20:50:09
 
Chris PHP

Chris PHP

15/08/2012 14:28:10
Quote Anchor link
Ik ben eigenlijk benieuwt waarom je kiest om het menu in een database te zetten ipv php bestanden te gebruiken?
 
Niels R

Niels R

15/08/2012 14:34:10
Quote Anchor link
Chris NVT op 15/08/2012 14:28:10:
Ik ben eigenlijk benieuwt waarom je kiest om het menu in een database te zetten ipv php bestanden te gebruiken?


ik weet niet hoe ik anders kan vertellen welk submenu in welk hoofdmenu hoort.
Hoe kan het anders?
 
Chris PHP

Chris PHP

15/08/2012 14:43:32
Quote Anchor link
Je kunt het in een normale array zetten, en per menu item wat sub items heeft een sub array aanmaken. Dan kun je dat makkelijk in 1 array kwijt ipv een database gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$menu
= array("Home" => "index.php",
              "Over Ons" => "overons.php",
              "Links" => "links.php",
              "Contact" => "contact.php");

// of met submenu's
$menu = array("Home" => array("Sub1" => "submenu_1",
                              "Sub2" => "submenu_2"),
              "Over Ons" => array("Sub1" => "submenu_1",
                              "Sub2" => "submenu_2"),
              "Links" => array("Sub1" => "submenu_1",
                              "Sub2" => "submenu_2"));
?>
 
Stefan WM

Stefan WM

15/08/2012 14:49:52
Quote Anchor link
Chris z'n manier is inderdaad beter tenzij je een systeem hebt waarbij paginas online aangemaakt worden.
 
Niels R

Niels R

15/08/2012 14:53:33
Quote Anchor link
Stefan van den Broek op 15/08/2012 14:49:52:
Chris z'n manier is inderdaad beter tenzij je een systeem hebt waarbij paginas online aangemaakt worden.


sorry voor de waarschijnlijk domme vraag...ben nog niet zo heel erg thuis hierin..en het is ook phpHULP :)

maar je zet zo'n array op deze manier in je html/php?
dit komt zo niet uit een database?
 
Chris PHP

Chris PHP

15/08/2012 14:54:34
Quote Anchor link
Nee hoe jij het doet wel, daar gebruik jij je mysql_query voor.

Op de manier zoals ik het voordoe, zet je de waardes gewoon met de hand in de array door het zo te typen.

Dat sla je dan op in je config.php of menu.php of hoe je het dan ook wil noemen. Die include je vervolgens gewoon in je pagina met include ('menu.php');
Gewijzigd op 15/08/2012 14:56:08 door Chris PHP
 
Niels R

Niels R

15/08/2012 15:23:39
Quote Anchor link
maar om op de originele vraag terug te komen
hoe maak ik daar nu een menu van die aan alle eisen voldoet

als basis heb ik 1 php pagina met de html/css waarin in alle andere pagina's include en deze met een functie de juiste op het scherm laat zien index.php?func=".$submenudata["naam"]
 
Marco PHPJunky

Marco PHPJunky

15/08/2012 15:39:04
Quote Anchor link
@ Chris,

Ik snap eerlijk gezecht ook niet waarom je het in een array zet..
Hellemaal omdat hij aan geeft het dynamischer wilt gaan maken.

Dan kan je toch veel beter kiezen om het gelijk in een database te zetten..

want ik ben persoonlijk van mening dat bij een dynamisch menu ook dynamisch pagina's horen want anders zou het weinig zin hebben.

want in een array zet je ze weer 'statisch' in.
 
Reshad F

Reshad F

15/08/2012 16:31:21
 
Niels R

Niels R

26/08/2012 14:29:28
Quote Anchor link
Reshad F op 15/08/2012 16:31:21:


na deze gelezen te hebben ben ik wat gerichter gaan zoeken...en ben hierop uitgekomen
http://www.sitemasters.be/scripts/1/19/1088/PHP/Uitklap_menu

Doet redelijk wat ik wil en na wat verbouwen van het bestaande script ben ik een heel end...maar aan 1 ding kom ik nog niet uit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
    //Menu 0
    $menu[0][]    = "home";
    $menu[0]['ONTSTAAN'] = "index.php?p=ontstaan&menuid=0";
    $menu[0]['NIEUWS'] = "index.php?p=nieuws&menuid=0";
    $menu[0]['AGENDA'] = "index.php?p=agenda&menuid=0";
    $menu[0]['GASTENBOEK'] = "index.php?p=gastenboek&menuid=0";
?>


Als dit de array is voor het menu
hoe kan ik dan van "home" een pagina maken?

dit is de rest van het menu
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
<?php
    if (!isset($_GET['menuid'])) // Als menuid niet gezet is => standaard openen
    {
    $_GET['menuid'] = $standaard;
    }


    for ($i=0; $i<count($menu); $i++)
    {

    if ($i == $_GET['menuid']) // Links tonen + menu ZONDER link
    {
    echo "<a  class='actief ".$menu[$i][0]."' href=\"?menuid=".$i."\">".$menu[$i][0]."</a>";


    array_shift($menu[$i]); // Schuif een element van het begin van de array af

$p=" ";
if(isSet($_GET['p']) && file_exists('includes/'. $_GET['p'] .'.php')) {
$p = $_GET['p'];
}


    foreach($menu[$i] as $key => $value) // Key en waarde
    {

$p = strtoupper($p);

if ($p == $key)
  {

  echo "<li><a class='actief' href=\"".$value."\">".$key."</a></li>";
  }

else
  {
  echo "<li><a href=\"".$value."\">".$key."</a></li>";
  }


    }


}

else // Geen links tonen + menu MET link
{
echo "<a  class='".$menu[$i][0]."' href=\"?menuid=".$i."\">".$menu[$i][0]."</a>";
[
0]."</a>";
}
}

?>
 
Obelix Idefix

Obelix Idefix

26/08/2012 14:36:00
Quote Anchor link
Even een tip, los van je vraag. Gebruik in PHP ' en in HTML "
Scheelt je een al die \ --> overzichtelijker, minder kansen op fouten.
Zie ook http://www.phphulp.nl/php/tutorial/php-algemeen/correct-quoten/772/
 
Niels R

Niels R

26/08/2012 14:38:22
Quote Anchor link
Obelix en Idefix op 26/08/2012 14:36:00:
Even een tip, los van je vraag. Gebruik in PHP ' en in HTML "
Scheelt je een al die \ --> overzichtelijker, minder kansen op fouten.
Zie ook http://www.phphulp.nl/php/tutorial/php-algemeen/correct-quoten/772/


bedankt voor de tip...tis een gejat script wat ik heb aangepast...misschien wel slim om de \ uit te halen en single quotes te gebruiken...

misschien ook een tip ontopic ;-)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.