Jump to content

need help getting my side nav to work with loops (depending on top nav)


ricky spires

Recommended Posts

Hello.

 

I recently posted about getting my top nav to work which it does now (with thanks) but im having trouble getting my side navs to work. i have tried various things but i think its just a case of getting the where clause right.

 

see what you think. any help would be great :)

 

these are my files.

 

includes/navL1.php  - which does the top navigation

includes/navL2.php  - which does the left navigation main

includes/navL3.php  - which does the left navigation sub

admin/layouts/admin_topnav.php

admin/layouts/admin_leftnav.php

admin/layouts/index.php

 

 

 

ok so. admin topnav.php code looks like this and works :)

 

<?PHP
require_once("../includes/initialize.php");
global $topNav;
global $pageName;
?>
<div id="navWrapper">
<?PHP
$topNav = navL1::find_all();
?>
  <div id="ddtabs3" class="solidblockmenu">
<ul>
<?PHP foreach($topNav as $topNavs): ?>

<li><a <?PHP echo ($pageName == $topNavs->title ? 'class="selected"' : '')?> href="<?PHP echo $topNavs->title; ?>.php" id="<?PHP echo $topNavs->title; ?>"><?PHP echo $topNavs->title; ?></a></li> 
<?PHP endforeach; ?>
</ul>
</div><!--  #ddtabs3-->
</div><!--  #navWrapper-->

 

 

now i need when a top nav is selected i need the correct left nav main and subs to show.

 

this is how my left nav looks at the moment

 

<?PHP
require_once("../includes/initialize.php");
global $topNav;
global $pageName;
?>

SOME ACCORDION SCRIPT GOES HERE

<div class="arrowlistmenu">
<?PHP
$nav1 = navL1::find_all();
$nav2 = navL2::find_by_nav();
$nav2 = navL2::find_by_nav();
?>
<?PHP foreach($nav2 as $nav2s): ?><h3 class="menuheader expandable">

// MAIN LEVEL

<li><a <?PHP echo ($pageName == $nav2s->title ? 'class="selected"' : '')?> href="<?PHP echo $nav2s->title; ?>.php" id="<?PHP echo $nav2s->title; ?>"><?PHP echo $nav2s->title; ?></a></li></h3>
<?PHP endforeach; ?>


// SUB LEVEL

<ul class="categoryitems">
<?PHP foreach($nav3 as $nav3s): ?>

<li><a <?PHP echo ($pageName == $nav3s->title ? 'class="selected"' : '')?> href="<?PHP echo $nav3s->title; ?>.php" id="<?PHP echo $nav3s->title; ?>"><?PHP echo $nav3s->title; ?></a></li> 
<?PHP endforeach; ?>		
</ul>

</div><!-- #End arrowlistmenu -->
<img src="images/wrapper/loading.gif" alt="loading..." id="Pageloading" height="28" width="28" style="visibility:hidden;float:left;" />

 

 

 

this is the code im trying to get to work in my includes files that i can seem to get my head around

 

 

includes/navL2.php

public static function find_by_nav(){
	global $database;
	global $topNav;
	$sql = "SELECT * FROM ".self::$table_name." WHERE title="$topNav" LIMIT 1";
	$result_array = self::find_by_sql($sql);
	return !empty($result_array) ? array_shift($result_array) : false;
}

 

the find_by_sql($sql) looks like this but i dont think you need it


public static function find_by_sql($sql){
	global $database;
	$results_set = $database->query($sql);
	$object_array = array();
	while($row = $database->fetch_array($results_set)){
		$object_array[] = self::instantiate($row);
	}
	return $object_array;
}

 

 

im trying to use the same code to pull the sub levels inside includes/navL3.php

 

 

 

if any of this makes sense please could you point out whats wrong

thanks

ricky

Link to comment
Share on other sites

$topNavs->title and $nav2s->title will need to be named the same thing if you expect that code to work.

 

Overall your code is gigantic mess and it be a lot easier to help you if you showed us exactly where the problem lies in your code and what you need to be done. You should also be debugging a bit. Make sure $pageName evaluates to the same thing in your top nav and left nav.

Link to comment
Share on other sites

ok. i have done some re-jigging and tried a couple of things but im not there yet.

basically all i need to do is pass the ids

 

in the mysql db i have:

 

navL1

navL2 - this has a row called navL1_id

navL3 - this has a row called navL2_id

 

i have managed to echo the top navigation id but its echoing the last tab id which is 5. how do i get the id of the selected tab ?

 

i tried this but that does not work

 

echo $topNavs->id 'class="selected"';

 

from this code

<?PHP
require_once("../includes/initialize.php");
global $topNavs;
global $pageName;
?>
<div id="navWrapper">
<?PHP
$topNav = navL1::find_all();
?>
  <div id="ddtabs3" class="solidblockmenu">
<ul>
<?PHP foreach($topNav as $topNavs): ?>

<li><a <?PHP echo ($pageName == $topNavs->title ? 'class="selected"' : '')?> href="<?PHP echo $topNavs->title; ?>.php" id="<?PHP echo $topNavs->title; ?>"><?PHP echo $topNavs->title; echo $topNavs->id;?></a></li> 
<?PHP endforeach; ?>
</ul>
</div><!--  #ddtabs3-->
</div><!--  #navWrapper-->

 

then pass that in a global to the left navigation using

global $topNavs;

 

thanks

rick

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.