webForumDet fria alternativet

Olika för olika sidor

PHP

4 svar · 1 198 visningar · startad av SoulGod

Medlem sedan aug. 20051 200 inlägg
Frågan#1

Jag har en meny som ser ut såhär:

<table class="menutext">
<tr class="menubg"><td width="15"><img src="img/arrows_a.png" alt=""></td><td><a href="foretag.php">Företagsinfo</a></td></tr>
<tr class="menubg"><td><img src="img/arrows.png" alt=""></td><td><a href="nyheter.php">Nyheter</a></td></tr>
</table>

Egentligen är menyn längre, men har kortat ner för att få bättre översikt ..
Jag vill att när jag är på en viss sida ( i detta fall foretag.php ), så skall en viss bild visas (arrows_a.png) .. på de sidor jag inte är inne på, så skall arrows.png visas ...

Hur går jag tillväga för att göra detta lämpligast?

Likaså - den sidan jag inte är inne på vill jag att länken ska "tas bort" på ..
Alltså är jag inne på företagsinfo ska jag inte kunna klicka på den igen ..

Finns det något bra sätt att göra detta 2 saker på?

Medlem sedan jan. 2005953 inlägg
#2

$_SERVER["PHP_SELF"] innehåller den från webbroten relativa sökvägen till det aktuella scriptet. Så med en enkel if-sats kan du kolla om det värdet är detsamma som länken du ska skriva ut.

Medlem sedan maj 2010117 inlägg
#3
<?php

$menu = array(
	'foretag.php'=>'Företagsinfo',
	'nyheter.php'=>'Nyheter'
);

?>

<table class="menutext">
<?php 
foreach ($menu as $link=>$name){
	// tänk på att modifiera detta om dina filer ej ligger i root-katalogen
	if ($link == $_SERVER["PHP_SELF"]){	
		echo '<tr class="menubg"><td width="15"><img src="img/arrows_a.png" alt=""></td><td>'+$name+'</td></tr>';
	}
	else{
		echo '<tr class="menubg"><td width="15"><img src="img/arrows.png" alt=""></td><td><a href="'+$link+'">'+$name+'</a></td></tr>';
	}
} 
?>
</table>

Denna kod borde göra som du önskar. Fyll bara på arrayen $menu i toppen.

Medlem sedan aug. 20051 200 inlägg
#4

Tack för era svar! Jag hade tänkt en if-lösning, men tänkte om det fanns något annat sätt...

Såhär blev lösningen

function menu() {
$aktiv = substr($_SERVER["PHP_SELF"], 9);
 $query = "SELECT * FROM meny WHERE id <6 ORDER BY id";
 $meny = mysql_query($query) or die(mysql_error());
 $totalRows = mysql_num_rows($meny);  	
	while($row = mysql_fetch_assoc($meny)) { 
		echo "<tr class='menubg'>";
		echo "<td width='15px'>";
		if ($aktiv == $row['lank']) { echo "<img src='img/arrows_a.png' alt=''>"; }
	 		 else
	  { echo "<img src='img/arrows.png' alt=''>"; }
		echo "</td><td>";
		if ($aktiv == $row['lank']) { echo "".$row['namn'].""; }
		   else
		{ echo "<a href='".$row['lank']."'>".$row['namn']."</a>"; }
		echo "</td></tr>";
	}
Medlem sedan aug. 20068 090 inlägg
#5

Annars gör man sånt ganska enkelt med css. Idén är att ge ett id till varje element som det ska fixas med. Därefter lägger man in stilen i head, men endast för det element som är aktuellt på just den sidan.

Om man t.ex. har den här koden i alla sidor:

<a href="foo1.html" id="1">Länk 1</a>
<a href="foo1.html" id="2">Länk 2</a>
<a href="foo1.html" id="3">Länk 3</a>

..så lägger man in följande - och inget annat - i head i "foo1.html":

#1 {bla bla min speciella stil här...}

...och detta i dokumentet "foo2.html":

#2 {bla bla min speciella stil här...}

..osv.

265 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)