Gå til innhold

Utheve aktiv link


Anbefalte innlegg

Hei. Jeg har et navigasjonssystem basert på PHP. Alle sider inkluderes i index.php.

Hovedsiden (index.php) består av en tabell med to kolonner. Linkene står i venstre kolonne og innholdet kommer opp i høyre.

 

For å se hvilken side man er på (aktiv side) har jeg fått hjelp til å lage en preg_replace setning. Altså, når jeg klikker på en link på venstre side skal denne linken utheves i forhold til de andre linkene.

 

Det er gjort noen endringer på webserveren jeg har sidene mine på, og etter dette virker ikke denne uthev funksjonen lenger. Håper noen kan komme med tips til hva som kan gjøres. Misstenker selv at preg_replace setningen må endres på et vis, men er ikke helt bevandret i bruken av regular expressions.

 

 

Nedenfor er koden min :

 

 

innhold av index.php :

<!-- Hovedtabell -->
<table>
<tr>
<td valign=top>
<!-- Navigasjons side, venstre side -->
<? require ("nav.php"); ?>
</td>

<!-- Høyre side, med selve innhold -->
<td valign=top>
<!-- Navigasjons kjernen -->
<?
$cat=$HTTP_GET_VARS['cat'];
if(isset($cat) and file_exists($cat)) {
include("$cat");
} else {
include("./home.php");
}
?>
</td>
</tr>
</table>

 

 

 

Og nedenfor er innholdet av navigasjons filen nav.php :

 

<table>

<?
$link = "http://www.domenenavn.no";

if ($cat)
 {
  echo "<tr><td><a href=$link>Home</a></td></tr>";
 }
else
 {
  echo "<tr><td><a href=$link><font color=red>Home</font></a></td></tr>";
 }
?>

<!------------------------------------------------------------------------------->

<?
$myFiles=array();
$homedir = "filer";
$dir = opendir("$homedir");
while(FALSE !== ($file = readdir($dir))) {
if($file=="."||$file==".."||ereg("index|forum|webmail|search", $file)) {
} else {
$myFiles[] = "$file";
}} closedir($dir);
sort($myFiles);
reset($myFiles);
$active=preg_replace("/^.*\/([^\/]+)\.php$/","$1",$cat);
foreach($myFiles as $file) {
if ($file!=$active) {
print "<tr><td><a href=index.php?cat=filer/$file/$file.php>".ucfirst($file)."</a></td></tr>";
} else {
print "<tr><td><a href=index.php?cat=filer/$file/$file.php>".ucfirst($file)."</a></td></tr>";
}}
?>

</table>

 

Håper på noen tips.

 

 

Mvh

CD

Lenke til kommentar
Videoannonse
Annonse

Forferdelig klønete å bruke så mye server-side til det der.

 

prøv sånn her istedet:

<body id="$id">
   <div id="nav">
       <ul>
           <li id="h">home</li>
           <li id="a">about</li>
       </ul>
   </div>
</body>

 

/*css, bruk dine egne body id'er her for å få riktig definisjoner*/
body#home #nav li#h a, 
body#about #nav li#a a {
color: red;
}

 

eneste du da bruker server-side til er å definere id utifra hvilken underside du er på, kan f. eks være en GET variabel...

Lenke til kommentar
Bare for å spesifisere det.

Det er ikke når jeg klikker på linken at fargen skal skriftes. Det er etter man har klikket på linken fargen skal endres. Dette for å vise hvilken side man er inne på.

 

Håper dere skjønner hva jeg mener.

er akkurat det som skjer med den css koden jeg la ut over her...

Lenke til kommentar

<?php
$id = $_GET['id'];
echo("<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>
<!DOCTYPE
html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\"
\"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\">
<head>
 <style type=\"text/css\" media=\"all\">@import \"/style.css\";</style>
</head>
<body id=\"$id\">
   <div id=\"mainnav\">
    <ul>
     <li id=\"h\"><a href=\"/\" title=\"home\">home</a></li>
     <li id=\"a\"><a href=\"/about/\" title=\"about\">about</a></li>
    </ul>
   </div>
</body>
</html>");
?>

<-- = home.php

 

style.css = -->

body#home #nav li#h a,
body#about #nav li#a a {
color: red;
}

 

 

forstå du nå?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...