Avatar billede Slettet bruger
09. august 2005 - 10:53 Der er 14 kommentarer og
1 løsning

markering af aktivt link på dynamsike sider?

Hej
Jeg vil gerne have, at man på min hjemmeside kan se, hvilket menupunkt, man befinder sig på ved at markere det med fed skrift. Min hjemmeside består af dynamiske sider som f.eks. :
sidenavn.php?id=12&subid=7&subsubid=1,
sidenavn.php?id=45&subid=4,
sidenavn.php?id=67&subid=23&subsubid=5
osv.osv....
Jeg har rodet med at sammenligne url'en med et array af siderne, men jeg kan ikke få det til at virke. Nogen der ligger inde med en løsning på dette problem?
På forhånd tak
mvh Jesper
Avatar billede Slettet bruger
09. august 2005 - 12:08 #1
Hvis dine menupunkter bliver genereret dynamisk, er det jo nemt - men hvis de er statiske skal du til at lave noget ala:

if($_GET['id'] == 67)
  {
  echo "fed";
  }
Avatar billede Slettet bruger
09. august 2005 - 12:16 #2
Jeg har to tabeller, som jeg henter data fra, "kategori" som er hovedpunkter og "menupunkt" som er underpunkter. Data henter jeg ind på siden "pages.php" som derved kommer til at hedde f.eks. pages.php?kat_id=12&menu_id=23. Disse sider er der så en del af med forskellige værdier for kat_id og menu_id. Hvordan får jeg det aktuelle menupunkt, der bliver vist, gjort fed?
Avatar billede Slettet bruger
09. august 2005 - 12:19 #3
Hvis du poster det script, hvormed du genererer dine menupunkter, kan jeg prøve at hjælpe dig - jeg kan desværre ikke få så meget sammenhæng ud af ren forklaring.
Avatar billede mysli Nybegynder
09. august 2005 - 12:21 #4
Når du udskriver menupunkterne, tjekker du om $_GET['kat'] og $_GET['id'] matcher den du er ved at udskrive.

ex.
$link = "<a href=''></a>";
if ($sql['kat'] == $_GET['kat'] && $sql['id'] == _GET['id']){
$link = "<a class='active' href=''></a>";
}
Avatar billede Slettet bruger
09. august 2005 - 12:25 #5
Her er koden til visning af menuen:
<?php
$menu=mysql_query("SELECT * FROM dpc_kategori order by sortering asc");
while ($row = mysql_fetch_array($menu)) {
$kategorinavn2=$row["kategorinavn"];
$id2=$row["kat_id"];
?>
<a href="page.php?id=<?php echo "$id2" ?>"></a>
<a href="page.php?kat_id=<?php echo "$id2" ?>"><?php echo "$kategorinavn2 <br />"; ?></a>
<?php
if ($row["kat_id"] == $kat_id) {
$undermenu=mysql_query("SELECT * FROM dpc_menupunkt order by sortering asc");
while ($row = mysql_fetch_array($undermenu)) {
$menunavn2=$row["menunavn"];
$menu_id2=$row["menu_id"];
if ($row["katfk_id"] == $kat_id) { ?>
<a href="pages.php?menu_id=<?php echo "$menu_id2" ?>&kat_id=<?php echo "$id2" ?>"><?php echo "$menunavn2 <br>"; } ?></a>
<?php }}} ?>
Avatar billede neess Nybegynder
09. august 2005 - 13:30 #6
En menu som laver markering på det punkt man har valgt.

<table cellpadding="0" cellspacing="0" width="100%" class="menu">
<?
$side=23;
$subside=0;
if(isset($_GET['side']))
{
$side=$_GET['side'];
$subside=$_GET['sub'];
}
$res = mysql_query("SELECT * FROM menu WHERE submenu=0 && showp=1 order by nummer ASC");
while($row = mysql_fetch_array($res) )
{

$markering="";
extract($row);

if($id==$side)
$markering="bgcolor='990000'";

?><tr onclick="location.href='?side=<?=$id?>&sub=<?=$submenu?>'"><td class="border1" <?=$markering?> >&nbsp;&nbsp;</td><td height="20" class="border2">&nbsp;<?=$tekst?></td></tr><?
      if($id==$side || $id==$subside)
      {
      if($subside==0)
      $subside=$side;
      $resSub = mysql_query("SELECT * FROM menu WHERE submenu=$subside && showp=1 order by nummer ASC");
      while($rowSub = mysql_fetch_array($resSub) )
        {
          extract($rowSub);
          if($id==$side)
          $markering="bgcolor='990000'";
          else
          $markering="";
          ?><tr style="cursor:hand" onclick="location.href='?side=<?=$id?>&sub=<?=$submenu?>'"><td class="border1" <?=$markering?> >&nbsp;&nbsp;</td><td height="20" class="border2">&nbsp;&nbsp;&nbsp;&nbsp;<font color="#000000"><?=$tekst?></font></td></tr><?
        }
      }
}
?>
</table>
Avatar billede Slettet bruger
09. august 2005 - 15:29 #7
Det kræver vist en nærmere forklaring, for det kan jeg ikke få til at virke...Hvorfor sættes $side f.eks. til 23 og hvorfor står der submenu=0 og showp=1 i "SELECT * FROM menu WHERE submenu=0 && showp=1..." ?
Avatar billede neess Nybegynder
09. august 2005 - 15:34 #8
ER fordi i min db er der et felt der hedder showpoint som fortæller om punktet skal vises i menuen.
Submenu fortæller om det er et hovede punkt eller et underpunkt.
side sættes til 23 da det bare er min forside som har det id.
Avatar billede neess Nybegynder
09. august 2005 - 15:35 #9
DROP TABLE IF EXISTS `menu`;
CREATE TABLE `menu` (
  `id` int(11) NOT NULL auto_increment,
  `tekst` text NOT NULL,
  `link` text NOT NULL,
  `nummer` int(11) NOT NULL default '0',
  `submenu` int(11) NOT NULL default '0',
  `nyhedid` int(11) default NULL,
  `iframe` tinyint(4) default '0',
  `showp` tinyint(4) default '1',
  `ifheight` tinytext,
  PRIMARY KEY  (`id`)
) TYPE=MyISAM;

Sådan ser tabellen ud jeg tager det fra.
Avatar billede Slettet bruger
09. august 2005 - 15:49 #10
Som du kan se af nedenstående, så har jeg to tabeller, relateret til hinanden vha katfk_id (foreign key) i menupunkt-tabellen. Det er herfra jeg får kat_id og menu_id, som jeg har med i mit link beskrevet ovenfor (pages.php?menu_id=<?php echo "$menu_id" ?>&kat_id=<?php echo "$kat_id" ?> (Jeg har forøvrigt ikke en fast værdi for forside, den er lavet separat med sin egen tabel i DB)
Kan det komme til at virke, når det ser ud som  jeg har lavet det? Det vil være alletiders hvis du kunne omskrive dit eget eksempel med mine værdier, for det kan jeg simpelthen ikke gennemskue...

CREATE TABLE `kategori` (
  `kat_id` int(11) NOT NULL auto_increment,
  `kategorinavn` varchar(50) NOT NULL default '',
  `tekst` text,
  `billede` varchar(50) default NULL,
  `dato` int(11) default NULL,
  `sortering` varchar(50) default NULL,
  `type` varchar(20) default NULL,
  PRIMARY KEY  (`kat_id`)
) TYPE=MyISAM AUTO_INCREMENT=82 ;


CREATE TABLE `menupunkt` (
  `menu_id` int(11) NOT NULL auto_increment,
  `menunavn` varchar(50) NOT NULL default '',
  `tekst` text,
  `billede` varchar(50) default NULL,
  `dato` int(11) default NULL,
  `sortering` varchar(50) default NULL,
  `type` varchar(12) default NULL,
  `katfk_id` int(11) NOT NULL default '0',
  PRIMARY KEY  (`menu_id`)
) TYPE=MyISAM AUTO_INCREMENT=182 ;
Avatar billede neess Nybegynder
09. august 2005 - 15:56 #11
<?php
$menu=mysql_query("SELECT * FROM dpc_kategori order by sortering asc");
while ($row = mysql_fetch_array($menu)) {
$kategorinavn2=$row["kategorinavn"];
$id2=$row["kat_id"];
?>
<a href="page.php?id=<?php echo "$id2" ?>"></a>
<a href="page.php?kat_id=<?php echo "$id2" ?>"><?php echo "$kategorinavn2 <br />"; ?></a>
<?php
if ($row["kat_id"] == $kat_id) {
$undermenu=mysql_query("SELECT * FROM dpc_menupunkt WHERE katfk_id=$kat_id order by sortering asc");
while ($row = mysql_fetch_array($undermenu)) {
$menunavn2=$row["menunavn"];
$menu_id2=$row["menu_id"];
?>
<a href="pages.php?menu_id=<?php echo "$menu_id2" ?>&kat_id=<?php echo "$id2" ?>"><?php echo "$menunavn2 <br>"; } ?></a>
<?php }} ?>

Kan ikke helt overskue hvad for nogle variabler du sender med i dit url da du har 2 links.
Men nu skal du jo bare smide en ifsætning ind
if($id2==$_GET['Det feltet hedder i urlen'])
Avatar billede Slettet bruger
09. august 2005 - 16:08 #12
Kan godt forstå, at du ikke kan gennemskue det, det var også en fejl med de to links. Det ser altså sådan her ud :
<?php
$menu=mysql_query("SELECT * FROM dpc_kategori order by sortering asc");
while ($row = mysql_fetch_array($menu)) {
$kategorinavn2=$row["kategorinavn"];
$id2=$row["kat_id"];
?>
<a href="page.php?kat_id=<?php echo "$id2" ?>"><?php echo "$kategorinavn2 <br />"; ?></a>
<?php
if ($row["kat_id"] == $kat_id) {
$undermenu=mysql_query("SELECT * FROM dpc_menupunkt order by sortering asc");
while ($row = mysql_fetch_array($undermenu)) {
$menunavn2=$row["menunavn"];
$menu_id2=$row["menu_id"];
if ($row["katfk_id"] == $kat_id) { ?>
<a href="pages.php?menu_id=<?php echo "$menu_id2" ?>&kat_id=<?php echo "$id2" ?>"><?php echo "$menunavn2 <br>"; } ?></a>
<?php }}} ?>

En url kunne f.eks. hedde "http://minside.dk/pages.php?menu_id=205&kat_id=97. Gider du prøve at sætte if-sætningen ind i koden, så jeg kan prøve det af og se om det er det, der skal til? (Jeg er ikke nogen ørn til PHP, hvis du ikke havde gættet det allerede :-) )
Jeg vil gerne have gjort mit aktive menupunkt fed, så det må være noget med at der vælges mellem to links; enten er if-sætningen opfyldt og så er menupunktet fed, eller også er den ikke, og så er menupunktet normalt....
Avatar billede neess Nybegynder
10. august 2005 - 11:49 #13
<?php
$menu=mysql_query("SELECT * FROM dpc_kategori order by sortering asc");
while ($row = mysql_fetch_array($menu)) {
$kategorinavn2=$row["kategorinavn"];
$id2=$row["kat_id"];
?>
<a href="page.php?kat_id=<?php echo "$id2" ?>"><?php echo "$kategorinavn2 <br />"; ?></a>
<?php
//hvorfor har du denne if sætning ???
if ($row["kat_id"] == $kat_id) {
$undermenu=mysql_query("SELECT * FROM dpc_menupunkt WHERE katfk_id=$kat_id order by sortering asc");
while ($row = mysql_fetch_array($undermenu)) {
$menunavn2=$row["menunavn"];
$menu_id2=$row["menu_id"];
$bold="";
$boldend="";
$underid=$_GET['menu_id'];
if($underid==$menu_id2)
{
$bold="<b>";
$boldend="</b>";
}
?>
<a href="pages.php?menu_id=<?php echo "$menu_id2" ?>&kat_id=<?php echo "$id2" ?>"><?php echo "$bold $menunavn2 $boldend<br>"; } ?></a>
<?php }} ?>
Avatar billede Slettet bruger
14. august 2005 - 22:18 #14
Det fortjener du sgu point for, neess! Tusind tak for hjælpen. (Hvis jeg så ellers kan finde ud af at give dig point'ene....)
Avatar billede neess Nybegynder
14. august 2005 - 22:52 #15
var så lidt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester