By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
459,292 Members | 1,354 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 459,292 IT Pros & Developers. It's quick & easy.

Need help to code collapsing menu

P: n/a
Hi,

I am trying to code a menu for a webpage, the menu is broken up to groups
i.e:

Home
Group1
*menuitem1
*menuitem2
*menuitem3
Group2
**menuitem1
**menuitem2
*menuitem3
And so on.

What I want to achieve is that the groups are shown in a collapsed state
depending on the page which is currently being displayed i.e so it starts
out like this

Home
Group1
Group2

If you click on Group1 it loads the first menuitem page and highlights it
and redraws the page expanding that group i.e. (note * denotes highligthed)
Home
Group1
**menuitem1
***menuitem2
***menuitem3*
Group2

And the same would apply if you click on Group2 i.e:
Home
Group1
Group2
**menuitem1
****menuitem2
****menuitem3*

What is the best way to go about this? I have coded it 'the long way' where
there is lots of duplication of code.

I hope this all makes sense and that I have explained it clearly.

I am new to php so would really appreciate your help as I am totally at a
loss on how to best do this.

Many thanks

Rigga
Jul 17 '05 #1
Share this Question
Share on Google+
11 Replies


P: n/a
SOR
<comp.lang.php , rigga , ri***@hasnomail.com>
<42***********************@ptn-nntp-reader01.plus.net>
<Fri, 08 Jul 2005 19:12:36 +0100>
What is the best way to go about this? I have coded it 'the long way' where
there is lots of duplication of code.

I hope this all makes sense and that I have explained it clearly.

I am new to php so would really appreciate your help as I am totally at a
loss on how to best do this.


Using includes should make it quite easy - even for a newbie like me .

blah.php?pass=1 on your main group link .

Assuming you have the nav menu as a include you could do a 'if' and if
the value is 1 then display the extra sub menu links .

Although , You would need the ?pass=1 on all the sub links as well or
the sub menu would disappear when you clicked on sub link .

As a fellow php newbie i've found getting stuff working first and then
trying to tweak and fine tune it later can be useful .
Jul 17 '05 #2

P: n/a
SOR wrote:
<comp.lang.php , rigga , ri***@hasnomail.com>
<42***********************@ptn-nntp-reader01.plus.net>
<Fri, 08 Jul 2005 19:12:36 +0100>
What is the best way to go about this? I have coded it 'the long way'
where there is lots of duplication of code.

I hope this all makes sense and that I have explained it clearly.

I am new to php so would really appreciate your help as I am totally at a
loss on how to best do this.


Using includes should make it quite easy - even for a newbie like me .

blah.php?pass=1 on your main group link .

Assuming you have the nav menu as a include you could do a 'if' and if
the value is 1 then display the extra sub menu links .

Although , You would need the ?pass=1 on all the sub links as well or
the sub menu would disappear when you clicked on sub link .

As a fellow php newbie i've found getting stuff working first and then
trying to tweak and fine tune it later can be useful .

Could you explain further?, how would I get it to highlite the active link?

Jul 17 '05 #3

P: n/a
SOR
<comp.lang.php , rigga , ri***@hasnomail.com>
<42**********************@ptn-nntp-reader04.plus.net>
<Sat, 09 Jul 2005 09:11:39 +0100>
Could you explain further?, how would I get it to highlite the active link?


www.snipe.net this guys nav menu uses the sort of thing you want to do -
it might be worth a email to ask him for the source code as his method
is probably better than mine .
Jul 17 '05 #4

P: n/a
SOR
<comp.lang.php , SOR , we*******@sparesorrepair.co.uk.INVALID>
<MP************************@no-cancel.newsreader.com>
<Sat, 9 Jul 2005 13:30:08 +0100>
Could you explain further?, how would I get it to highlite the active link?


www.snipe.net this guys nav menu uses the sort of thing you want to do -
it might be worth a email to ask him for the source code as his method
is probably better than mine .


www.ganjahost.co.uk/rigga

www.ganjahost.co.uk/rigga/rigga.zip

Keep in mind i'm a newbie like yourself and this is probably the worse
way to do it .

Jul 17 '05 #5

P: n/a
I noticed that Message-ID:
<MP************************@no-cancel.newsreader.com> from SOR contained
the following:
www.ganjahost.co.uk/rigga


doesn't work in FF.
--
Geoff Berrow (put thecat out to email)
It's only Usenet, no one dies.
My opinions, not the committee's, mine.
Simple RFDs http://www.ckdog.co.uk/rfdmaker/
Jul 17 '05 #6

P: n/a
SOR
<comp.lang.php , Geoff Berrow , bl******@ckdog.co.uk>
<is********************************@4ax.com>
<Sat, 09 Jul 2005 15:30:54 +0100>
www.ganjahost.co.uk/rigga


doesn't work in FF.


Then try it at normal speed :-))
Jul 17 '05 #7

P: n/a
On Sat, 09 Jul 2005 15:32:33 +0100, SOR wrote:
<comp.lang.php , Geoff Berrow , bl******@ckdog.co.uk>
<is********************************@4ax.com>
<Sat, 09 Jul 2005 15:30:54 +0100>
>www.ganjahost.co.uk/rigga


doesn't work in FF.


Then try it at normal speed :-))

Thank you thats exactly what I was trying to achieve, I will look over the
code and see if I understand it. Like Geoff said it doesn't work in
Firefox though, but I will look in to that.

I really appreciate you taking the time to help me with this.

all the best

Jul 17 '05 #8

P: n/a
SOR
<comp.lang.php , rigga , ri***@hasnomail.com>
<pa****************************@hasnomail.com>
<Sat, 09 Jul 2005 21:31:34 +0100>
Like Geoff said it doesn't work in
Firefox though, but I will look in to that.


Putting a <br> at the end of the <a> tags would probably sort it .

Fartfox often screws things up :-)
Jul 17 '05 #9

P: n/a
SOR
<comp.lang.php , SOR , we*******@sparesorrepair.co.uk.INVALID>
<MP************************@no-cancel.newsreader.com>
<Sun, 10 Jul 2005 01:06:53 +0100>
Putting a <br> at the end of the <a> tags would probably sort it .


Either way the following is probably a better way of doing it as it does
away with 2 include files .
inc_nav.php

<?php $rigga = $_GET['pass']; ?>

<a href="index.php" class="butnav">HOME</a><br>
<a href="group_one.php?pass=1" class="butnav">GROUP ONE</a><br>
<?php if ($rigga==1) {g_one();} ?>
<a href="group_two.php?pass=2" class="butnav">GROUP TWO</a><br>
<?php if ($rigga==2) {g_two();} ?>
<a href="index.php" class="butnav">HOME</a><br>

<?php
function g_one()
{
print "<a href=index.php?pass=1 class=butnav>..... GROUP ONE</a><br>";
print "<a href=index.php?pass=1 class=butnav>..... GROUP ONE</a><br>";
}
?>

<?php
function g_two()
{
print "<a href=index.php?pass=2 class=butnav>..... GROUP TWO</a><br>";
print "<a href=index.php?pass=2 class=butnav>..... GROUP TWO</a><br>";
}
?>
Jul 17 '05 #10

P: n/a
SOR
<comp.lang.php , SOR , we*******@sparesorrepair.co.uk.INVALID>
<MP************************@no-cancel.newsreader.com>
<Sun, 10 Jul 2005 16:08:21 +0100>
inc_nav.php


Being a newbie I was curious how to do it without using stuff like
?pass=1 in the url and came up with this .

Do a cut-n-paste into inc_nav.php

<?php $filename=$_SERVER["REQUEST_URI"]; ?>

<a href="index.php" class="butnav">HOME</a><br>
<a href="group_one.php" class="butnav">GROUP ONE</a><br>
<?php if ($filename=="/rigged/group_one.php") {g_one();} ?>
<a href="group_two.php" class="butnav">GROUP TWO</a><br>
<?php if ($filename=="/rigged/group_two.php") {g_two();} ?>
<a href="index.php" class="butnav">HOME</a><br>

<?php
function g_one()
{
print "<a href=index.php class=butnav>..... GROUP ONE</a><br>";
print "<a href=index.php class=butnav>..... GROUP ONE</a><br>";
}
?>

<?php
function g_two()
{
print "<a href=index.php class=butnav>..... GROUP TWO</a><br>";
print "<a href=index.php class=butnav>..... GROUP TWO</a><br>";
}
?>


<?php if ($filename=="/rigged/group_one.php") {g_one();} ?>

"/rigged/group_one.php"

/rigged/ being the folder name i used and you will need to adjust this
to suit your own webspace .
Jul 17 '05 #11

P: n/a
SOR
<comp.lang.php , SOR , we*******@sparesorrepair.co.uk.INVALID>
<MP************************@no-cancel.newsreader.com>
<Sun, 10 Jul 2005 19:51:41 +0100>
Being a newbie I was curious how to do it without using stuff like
?pass=1 in the url and came up with this .

Do a cut-n-paste into inc_nav.php

<?php $filename=$_SERVER["REQUEST_URI"]; ?>

<a href="index.php" class="butnav">HOME</a><br>
<a href="group_one.php" class="butnav">GROUP ONE</a><br>
<?php if ($filename=="/rigged/group_one.php") {g_one();} ?>
<a href="group_two.php" class="butnav">GROUP TWO</a><br>
<?php if ($filename=="/rigged/group_two.php") {g_two();} ?>
<a href="index.php" class="butnav">HOME</a><br>


And perhaps a good reason why you shouldnt listen to a newbie .

If you clicked on a sub menu link - the sub menu would disappear .

This seems to work quite well though , Thanks for asking the question
dude as I learnt loads from doing it .


inc_nav.php

<?php $filename=$_SERVER["REQUEST_URI"]; ?>

<?php $g1=0; $g2=0; ?>

<?php

if ($filename=="/rigged/group_one.php") {$g1=1;}
if ($filename=="/rigged/anythings.php") {$g1=1;}
if ($filename=="/rigged/bigjobbys.php") {$g1=1;}

if ($filename=="/rigged/group_two.php") {$g2=1;}
if ($filename=="/rigged/blahblahs.php") {$g2=1;}
if ($filename=="/rigged/foofoofoo.php") {$g2=1;}

?>

<a href="index.php" class="butnav">HOME</a><br>
<a href="group_one.php" class="butnav">GROUP ONE</a><br>
<?php if ($g1==1) {g_one();} ?>
<a href="group_two.php" class="butnav">GROUP TWO</a><br>
<?php if ($g2==1) {g_two();} ?>
<a href="index.php" class="butnav">HOME</a><br>

<?php
function g_one()
{
print "<a href=index.php class=butnav>..... GROUP ONE</a><br>";
print "<a href=index.php class=butnav>..... GROUP ONE</a><br>";
}
?>

<?php
function g_two()
{
print "<a href=index.php class=butnav>..... GROUP TWO</a><br>";
print "<a href=index.php class=butnav>..... GROUP TWO</a><br>";
}
?>

Jul 17 '05 #12

This discussion thread is closed

Replies have been disabled for this discussion.