webForumDet fria alternativet

PHP-MENY

PHP

13 svar · 798 visningar · startad av nummersju

Medlem sedan aug. 2005198 inlägg
Frågan#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 :)

Medlem sedan okt. 2001538 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

Medlem sedan aug. 2005198 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

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

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

Medlem sedan mars 20034 471 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?

Medlem sedan apr. 200312 679 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å.

Medlem sedan mars 20034 471 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?

Medlem sedan apr. 200312 679 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? :)

Medlem sedan apr. 200312 679 inlägg
#9

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

Medlem sedan maj 2005353 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? :)

Medlem sedan apr. 200312 679 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

Medlem sedan aug. 20002 975 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.

Medlem sedan maj 2005353 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.

Medlem sedan aug. 20002 975 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>
';
255 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)