webForumDet fria alternativet

PHP-MENY

13 svar · 797 visningar · startad av nummersju

nummersjuMedlem sedan aug. 2005190 inlägg
#1

Jag skulle vilja ha lite hjälp med en php meny som gör att när jag är på en sida så ska den vara "aktiv" i menyn.

Alltså om jag har en färg på länkarna i menyn, vi säger blå, så vill jag att när man är på just den sidan man just klickade sig in på så är den röd, tills man byter sida då den blir röd osv...

Ni kan kolla Gonace.com . Där finns ett praktexempel, hans meny är dock i asp, så jag kunde inte få hjälp av honom...

Tack på förhand :)

Patrik81Medlem sedan okt. 2001537 inlägg
#2

Hejsan :)

Om man i en fil, som man sedan inkluderar på varje sida, lägger en array innehållandes typ index.php, guestbook.php etc. alla sidor man vill skall visas i navbaren, så skulle man ju sedan med en foreach loop kunna loopa ut alla dessa poster, och lägga till html-länkar runt värdena, och i loopen ha en if-sats som kollar om posten som nu skall skrivas ut, är detsamma som filens namn, som just nu anropats, och är det så, så skriver man istället ut en <span class="red"></span> runt posten.

Då blir alla andra värden länkar, och värdet som pekar på den sida man är på blir rött istället, om man nu har definerat upp en css-klass som gör den röd :)

Detta är nog ett tämligen enkelt sätt att göra det på, även om det säkert kan finnas mer optimala sätt att göra det på. Det är lite för mycket söndag, och skallebank, för att jag skall våga komma med någon exempelkod, men nu har du ju teorin iaf. :)

MVH Patrik

nummersjuMedlem sedan aug. 2005190 inlägg
#3

Min kod ser ut såhär!

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>yea</title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<div id="content">

<? if ($_GET['part'] == "höjdhopp") { ?> 
		höjdhopp<br>

		<? } elseif ($_GET['part'] == "spjut") { ?> 
		spjut<br>

		<? } elseif ($_GET['part'] == "längdhopp") { ?> 
		längdhopp<br>

		<? } elseif ($_GET['part'] == "kula") { ?> 
		kula<br>

		<? } elseif ($_GET['part'] == "800m") {  ?> 
		800m<br>
		
		<? } elseif ($_GET['part'] == "200m") {  ?> 
		200m<br>

		<? } elseif ($_GET['part'] == "heck") {  ?> 
		häck<br>
		
		<?  } else { ?> 
		sjukamp<br>
		
		<? } ?>

	<div id="meny">
		<ul class="meny">
			<li><a href="index.php">sjukamp</a></li>
			<li><a href="index.php?part=höjdhopp">höjdhopp</a></li>
			<li><a href="index.php?part=spjut">spjut</a></li>
			<li><a href="index.php?part=längdhopp">längdhopp</a></li>
			<li><a href="index.php?part=kula">kula</a></li>
			<li><a href="index.php?part=800m">800m</a></li>
			<li><a href="index.php?part=200m">200m</a></li>
			<li><a href="index.php?part=heck">100m häck</a></li>
		</ul>
	</div>
</div>
</body>
</html>

Hur ska jag göra för att fixa det där med "aktiva" länkar då? jag är inte så haj på php, menyscriptet är tagit från gruvsjö....

Så här ser det ut

silfverMedlem sedan apr. 20039 709 inlägg
#4
<li><a href="#" <?=$sidnamn; ?>>länk</a></li>
$sidnamn = 'id="active"';

Så gör jag. Smidigt? Jag tycker det. :)

aasahMedlem sedan mars 20033 451 inlägg
#5

silfver skrev:

<li><a href="#" <?=$sidnamn; ?>>länk</a></li>
$sidnamn = 'id="active"';

Så gör jag. Smidigt? Jag tycker det. :)

Va? Det där funkar väl inte om du alltid ska ha, tex länkarna
Hem, Nyheter, Info, Gästbok och du vill att de tre du inte står på ska vara blå och den fjärde röd? Hur ser du till att de alltid dyker upp i samma ordning med rätt färg på alla sidor? :q

Är det inte det nummersju vill?

silfverMedlem sedan apr. 20039 709 inlägg
#6

aasah skrev:

silfver skrev:

<li><a href="#" <?=$sidnamn; ?>>länk</a></li>
$sidnamn = 'id="active"';

Så gör jag. Smidigt? Jag tycker det. :)

Va? Det där funkar väl inte om du alltid ska ha, tex länkarna
Hem, Nyheter, Info, Gästbok och du vill att de tre du inte står på ska vara blå och den fjärde röd? Hur ser du till att de alltid dyker upp i samma ordning med rätt färg på alla sidor? :q

Är det inte det nummersju vill?

Man får ju ha php-koden på varje sida man har. Sen så får man ju leka med css också.

aasahMedlem sedan mars 20033 451 inlägg
#7

silfver skrev:

aasah skrev:

silfver skrev:

<li><a href="#" <?=$sidnamn; ?>>länk</a></li>
$sidnamn = 'id="active"';

Så gör jag. Smidigt? Jag tycker det. :)

Va? Det där funkar väl inte om du alltid ska ha, tex länkarna
Hem, Nyheter, Info, Gästbok och du vill att de tre du inte står på ska vara blå och den fjärde röd? Hur ser du till att de alltid dyker upp i samma ordning med rätt färg på alla sidor? :q

Är det inte det nummersju vill?

Man får ju ha php-koden på varje sida man har. Sen så får man ju leka med css också.

Jo, alltså, så långt är jag med. Men hur ser då resten av dina länkar ut?

silfverMedlem sedan apr. 20039 709 inlägg
#8

För att ta mitt exempel så ser min meny ut så här:

		<li><a href="/"<?=$startsida; ?>>start</a></li>
		<li><a href="/filmer/"<?=$filmer; ?>>filmer</a></li>
		<li><a href="/bilder/"<?=$bilder; ?>>bilder</a></li>
		<li><a href="/lasvart/"<?=$lasvart; ?>>läsvärt</a></li>
		<li><a href="/kontakt/"<?=$kontakt; ?>>kontakt</a></li>
		<li><a href="/gastbok/"<?=$gastbok; ?>>gästbok</a></li>

Förstår du hur jag gör nu? Vet inte riktigt hur jag ska förklara? :)

silfverMedlem sedan apr. 20039 709 inlägg
#9

Tja nummersju. Jag har gjort en meny till dig nu.

HelmertzMedlem sedan maj 2005342 inlägg
#10

Borde det inte fungera med en array som loopas igenom egentligen? Den kan ju undersöka med php_self (om det gäller gastbok.php) eller pathinfo (om det gäller /gastbok/) om den ska skriva ut id="active". Eller är jag ute och cyklar? :)

silfverMedlem sedan apr. 20039 709 inlägg
#11

Helmertz skrev:

Borde det inte fungera med en array som loopas igenom egentligen? Den kan ju undersöka med php_self (om det gäller gastbok.php) eller pathinfo (om det gäller /gastbok/) om den ska skriva ut id="active". Eller är jag ute och cyklar? :)

Det finns säkert smidigare och smartare sätt än det jag har gjort. Så är det nån som vill dela med sig så blir jag också glad. :D

MatteMedlem sedan aug. 20002 970 inlägg
#12

silfver skrev:

Helmertz skrev:

Borde det inte fungera med en array som loopas igenom egentligen? Den kan ju undersöka med php_self (om det gäller gastbok.php) eller pathinfo (om det gäller /gastbok/) om den ska skriva ut id="active". Eller är jag ute och cyklar? :)

Det finns säkert smidigare och smartare sätt än det jag har gjort. Så är det nån som vill dela med sig så blir jag också glad. :D

Annars borde det gå att göra något i stil med:

$pages = array(
  'sjukamp'=>'blue',
  'höjdhopp'=>'blue', 
  'spjut'=>'blue', 
  'längdhopp'=>'blue', 
  'kula'=>'blue', 
  '800m'=>'blue', 
  '200m'=>'blue', 
  'häck'=>'blue'
);

if (isset($_GET['part']) && array_key_exists($_GET['part'], $pages)) {

   echo $_GET['part']."<br />\n";
   $pages[$_GET['part']] = 'red';

} else {

   echo "sjukamp<br />\n";
   $pages['sjukamp'] = 'red';

}

echo '
	<div id="meny">
		<ul class="meny">
';

foreach ($pages as $part => $color) {
   echo "<li><a href=\"index.php?part=$part\" style=\"color:$color\">$part</a></li>\n";
}

echo '
		</ul>
	</div>
';

Men kanske använda class istället för style/color.

HelmertzMedlem sedan maj 2005342 inlägg
#13

Matte; hur skulle ditt exempel se ut om du istället för /index.php?part=200m har /200m/? (200m är alltså en mapp med en index.php i.

MatteMedlem sedan aug. 20002 970 inlägg
#14

Helmertz skrev:

Matte; hur skulle ditt exempel se ut om du istället för /index.php?part=200m har /200m/? (200m är alltså en mapp med en index.php i.

Då skulle det kunna se ut något liknande detta:

$page = basename(dirname($_SERVER['PHP_SELF']));

$pages = array(
  'sjukamp'=>'blue',
  'höjdhopp'=>'blue', 
  'spjut'=>'blue', 
  'längdhopp'=>'blue', 
  'kula'=>'blue', 
  '800m'=>'blue', 
  '200m'=>'blue', 
  'häck'=>'blue'
);

if (array_key_exists($page, $pages)) {

   echo "$page<br />\n";
   $pages[$page] = 'red';

} else {

   echo "sjukamp<br />\n";
   $pages['sjukamp'] = 'red';

}

echo '
	<div id="meny">
		<ul class="meny">
';

foreach ($pages as $part => $color) {
   echo "<li><a href=\"index.php/$part/\" style=\"color:$color\">$part</a></li>\n";
}

echo '
		</ul>
	</div>
';
Genererad på 386 ms · cache AV · v20260730165559-full.f96bc7eb