Jump to content

site navigation help


ricky spires

Recommended Posts

hello. i wonder if anyone could help me to solve this puzzle.

 

im trying to create a dynamic navigation using a database but i keep getting stuck.

 

i have 2 database:

 

Navigation with :

 

id

navPos

pageID

level

parent

url

1

top

1

1

0

page1.php

2

top

2

2

1

page2.php

 

3

top

3

3

2

page3.php

4

top

4

3

3

page4.php

5

top

5

3

4

page5.php

6

top

6

3

5

page6.php

 

 

and

Pages with:

 

id

pageName

1

page1

2

page2

3

page3

4

page4

5

page5

6

page6

 

now, what i want to happen is on each page i have 3 functions. 1 calling the top nav, 1 calling the side nav and 1 calling the bottom nav.

 

for this each function should have 3 levels.

level 1 = main top level

level 2 = child to main top level

level 3 = child to level 2

 

so for example.

2 tabs each with 3 levels and 1 page on each level.

 

TOP NAV

levels -

TAB 1 -

TAB 2

LEVEL1 -

page1 -

page4

LEVEL2 -

page2 -

page5

LEVEL3 -

page3-

page6

 

 

 

now for the code. I'LL STICK TO JUST THE TOP NAV FOR NOW.

 

on the page that will display the navigation's i have:

I WOULD LIKE THEM TO DROP DOWN BUT THIS CODE WILL NOT DO THAT. just lists for now :)

 

<div id="navWrapper">
<?PHP $navPosion = "top"; ?>

    <div id="LEVEL1" class="LEVEL1">
    <ul><?PHP echo Navigation::NavL1($pageID, $navPosion); ?></ul>
    </div>
    <div id="LEVEL2" class="LEVEL2">
    <ul><?PHP echo Navigation::NavL2($pageID, $navPosion); ?></ul>
    </div>
    <div id="LEVEL3" class="LEVEL3">
    <ul><?PHP echo Navigation::NavL3($pageID, $navPosion); ?></ul>
    </div>
</div>

 

these is the functions im trying to put together.

 

in the Navigation class i have.

 

 

class Navigation extends Pages{-----lots of other code here....


public static function navL1($pageID, $navPosion){

                //FIND CURRENT PAGE ID
	 $page = new Pages(); //calling just the Pages class.
	$CP = $page->find_by_pageID($pageID);
	$CPid = $CP->id;



	//GET ALL PAGES FROM THE DB
	$allP = $page->find_all();

	foreach ($allP as $allPs){
	$allPname = $allPs->pageName;


		//GET INFO FROMTHE NAVIGATION TABLE
		$nav2 = new Navigation(); //calling the navigation extension
		$Cnav = $nav2->find_all();

		foreach ($Cnav as $Cnavs){
			$Nid = $Cnavs->id;
			$Npos = $Cnavs->navPos;
			$Npid = $Cnavs->pageID;
			$Nlevel = $Cnavs->level;
			$Npnt = $Cnavs->parent;
			$Nurl = $Cnavs->url;
			$Nord = $Cnavs->order;


		if($Nlevel  = '1'){

	                //FIND ACTIVE TAB
			if($CPid == $allPid){ $selected_tab='class="selected"'; }else{  $selected_tab=''; }

			echo '<li><a '.$selected_tab.' href="'.$allPname.'.php">'.$Nlevel.''.$allPname.'</a></li>'; 

		}//	if($Nlevel == $navLevel

 	 //} //end Navigation()

    }//end foreach ($allP as $allPs)

}	//end getNav($pageID)  

 

 

THEN THE SAME AGAIN FOR :

 

public static function navL2($pageID, $navPosion){

and

public static function navL3($pageID, $navPosion){

 

 

what this does is list all the pages

 

for example navL1 give me

    page1

    page2

    page3

    page4

    page5

    page6

 

i want it to only list where level is 1 or 2 or 3

 

in each of the functions i have this but it does not seem to work.

 

if($Nlevel = "1"){

 

i tried this but i nothing return.

 

if($Nlevel == "1"){

 

 

 

if i echo this out in navL1

echo "<br/>".$Nid = $Cnavs->id;
echo "<br/>".$Npos = $Cnavs->navPos;
echo "<br/>".$Npid = $Cnavs->pageID;
echo "<br/>".$Nlevel = $Cnavs->level;
echo "<br/>".$Npnt = $Cnavs->parent;
echo "<br/>".$Nurl = $Cnavs->url;

 

it gives me back the last page (page6) 6 time over which is not even level1. its level3

 

6

top

6

3

5

page6.php

 

so its missing the rest of the pages in the loop and just out putting the last one.

 

i realise that i need more if's in my function but maybe there is a better way ? for example i need an if($Npos == top) and in navL2 and navL3 i need to only show sub tabs under the correct parent. etc...

 

for now i just want to get what i can working ..

 

any thoughts ???? maybe i can roll all 3 functions into 1 amazing function ???? that would be nice. :)

 

thanks

ricky

Link to comment
Share on other sites

This thread is more than a year old. Please don't revive it unless you have something important to add.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.