Menüpunkt MySQL->"Active"
ftdesigner
- php
0 suit0 ftdesigner0 ChrisB0 suit0 ftdesigner0 ChrisB0 ftdesigner0 suit0 ftdesigner0 suit0 ChrisB
Servus Leuts
Ich weiß, dieses Thema wurde hier schon mal besprochen, doch komm ich einfach nicht weiter.
Ich möchte eine menüliste erstellen, die die einzelne menüpunkte aus der DB hohlt.
Geht alles wunderbar, ist ja auch kein großes ding.
nun möcht ich aber, dass wenn ich den einen Link anklicke, dass der sowas wie "active" ist.
Doch active, funktoniert ja nur solang, wie die maustaste gedrückt ist.
Wie könnt ich denn das nun lösen?
hier könnt ihr euch die menüliste anschauen:
neu.sic-raum.ch
Ich danke euch jetzt schon.
Grüße
ftdesigner
Wie könnt ich denn das nun lösen?
gib ihm eine id oder klasse "current" (wenn du mehrere menüs hast, die ggf den selben punkt haben)
alternativ, ersetze das element durch ein span-element
den aktuell aktiven menüpunkt verlinken ist ohnehin eine schlechte idee
Wie könnt ich denn das nun lösen?
gib ihm eine id oder klasse "current" (wenn du mehrere menüs hast, die ggf den selben punkt haben)
Ich habe ihnen ja schon ne klasse gegeben, ich kann ihm ja nicht noch ne klasse anhängen, oder doch?
und die klasse current wird dann erkennen, welcher link grade aktiv ist?
alternativ, ersetze das element durch ein span-element
den aktuell aktiven menüpunkt verlinken ist ohnehin eine schlechte idee
Was meinst du damit? Verlinken womit?
Hi,
gib ihm eine id oder klasse "current" (wenn du mehrere menüs hast, die ggf den selben punkt haben)
Ich habe ihnen ja schon ne klasse gegeben,
Welche und warum?
ich kann ihm ja nicht noch ne klasse anhängen, oder doch?
Doch, natuerlich.
und die klasse current wird dann erkennen, welcher link grade aktiv ist?
Nein.
Das hat dein Script zu erkennen - und dann nur dem "aktiven" Link die Klasse current zu verpassen, so dass du ihn darueber gesondert formatieren kannst.
alternativ, ersetze das element durch ein span-element
den aktuell aktiven menüpunkt verlinken ist ohnehin eine schlechte idee
Was meinst du damit? Verlinken womit?
Mit der Seite, die sowieso gerade angezeigt wird. Warum willst du innerhalb dieser auf sie selbst verlinken?
Ersetze den Link auf die aktuellen Seite durch einen span, dann kannst du den direkt gesondert formatieren.
MfG ChrisB
Ich habe ihnen ja schon ne klasse gegeben, ich kann ihm ja nicht noch ne klasse anhängen, oder doch?
natürlich kannst du das, aber wenn du jetzt in deinem link schon eine klasse hast, ist das ein indiz dafür, dass du den nachfahren-selektor noch nicht kennst
und die klasse current wird dann erkennen, welcher link grade aktiv ist?
das hängt von deinem stylesheet ab - die klasse selbst erkennt das nicht
dein menüscript muss erkennen, welcher menüpunkt der aktuelle ist (nicht der aktive)
unterscheide bitte zwischen "aktiv" (ich halte grade in diesem moment den daumen drauf) und "current" (der derzeitig gewählte punkt)
Was meinst du damit? Verlinken womit?
mit nichts
der derzeitig gewählte menüpunkt sollte eigentlich nicht verlinkt sein, da das den benutzer unnötig verwirrt - aber die programmlogik dahinter ist die selbe - ob du nun statt einem link ein span-element erzeugst oder eine klasse einfügst und sonst nicht ist egal
btw:
dein codebespiel ist übrigens nicht aufrufbar, von der seite ist es schwierig sich ein bild davon zu machen
Also, das mit dem Verlinken, weiß ich nicht so genau, ob ich das nun mach oder nicht.
Aber hier ist mein Navi php code.
<?php
if ($_GET["lang"] == "de" OR $_GET["lang"] == "") {
while ($fetch = mysql_fetch_assoc($select)) {
?>
<div class="navi-button" id="<?php $_GET["content"] ?>">
<a href="index.php?content=<?php echo "" .$fetch["id"]. ""; ?>&lang=de"><?php echo "" .$fetch["de"]. "";?></a>
</div>
<?php }} ?>
Was ich auch noch nicht verstehe ist, wie programmier ich denn die erkennung des aktuellen links?
Hi,
Was ich auch noch nicht verstehe ist, wie programmier ich denn die erkennung des aktuellen links?
In dem du erst mal ermittelst, ueber welchen Link die aktuelle Scriptinstanz denn aufgerufen wurde.
$_GET und ggf. $_SERVER liefern dir alle relevanten Informationen. (Wenn du dir ueber deren Inhalte im unklaren bist, schau sie dir mit print_r/var_dump an.)
MfG ChrisB
Also, ChrisB, ich glaub, du möchtest mir ganz hilfreiche dinge beibringen, doch ich verstehs nicht.
In dem du erst mal ermittelst, ueber welchen Link die aktuelle Scriptinstanz denn aufgerufen wurde.
Was ist ein scriptinstanz?
$_GET und ggf. $_SERVER liefern dir alle relevanten Informationen. (Wenn du dir ueber deren Inhalte im unklaren bist, schau sie dir mit print_r/var_dump an.)
$_GET verwende ich ja und verstehs auch $_Server ist wahrscheinlich ne ähnliche funktion die aus der Adresse liest.
Doch wie setz ich das zusammen mit current ein?
so?
if ($_Get["content"] == "3") {
<style> {
.current a {
font:
etc.
}
</style>
}
wahrscheinlich nicht...
In dem du erst mal ermittelst, ueber welchen Link die aktuelle Scriptinstanz denn aufgerufen wurde.
Was ist ein scriptinstanz?
die aktuelle ausprägung deines scripts
wenn 5 besucher deine seite aufgrufen, mit 5 verschiedenen menüpunkten, soll natürlich jeder nur den menüpunkt auf "current" gesetzt bekommen, der ihn gerade in dieser form aufgerufen hat
Doch wie setz ich das zusammen mit current ein?
wahrscheinlich nicht...
fast
ich würds eher mit sowas versuchen:
if link zu meine menüpunkt == link der gerade in der adresszeile steht then
<a class="current" />
else
<a />
end if
im übrigen, deine html ausgabe ist nicht so optimal, wie sie sein sollte - wenn du schon code generierst, warum verwendest du dann nicht ordentlichen code?
eine unsortierte liste zb - anhand ingos beispiel
ich würds eher mit sowas versuchen:
if link zu meine menüpunkt == link der gerade in der adresszeile steht then
Wie zeig ich den den link an? das heisst, dass ich alle 5 menüpunkte manuel bearbeiten muss?
<a class="current" />
else
<a />
end if
das versteh ich alles
im übrigen, deine html ausgabe ist nicht so optimal, wie sie sein sollte - wenn du schon code generierst, warum verwendest du dann nicht ordentlichen code?
Weil ich nicht weiß, was daran falsch ist
eine unsortierte liste zb - anhand ingos beispiel
Was willst du mir dabei zeigen
ich würds eher mit sowas versuchen:
if link zu meine menüpunkt == link der gerade in der adresszeile steht then
Wie zeig ich den den link an? das heisst, dass ich alle 5 menüpunkte manuel bearbeiten muss?
wenn du eine scriptsprache verwendest und musst etwas an 5 stellen manuell bearbeiten, dann hast du etwas gewaltig falsch gemacht :)
an 2 stellen bearbeiten (konfiguration und aufruf der konfiguration) ist ok, aber 5x ist ein fehler
du gibst dein menü in einer schleife aus, richtig?
jeder menüpunkt weiss, wohin er verlinken muss, richtig?
jede scriptinstanz weiss, woher sie aufgerufen wurde (das weiss php in jedem fall)
wenn du nun in deinem schleifendurchlauf beide dir bekannten werte vergleichst, ist kannst du die verzweigung dort einbauen
Was willst du mir dabei zeigen
wie man ein menü logisch gesehen vernünftig mit html auszeichnet ;)
wie bereits erwähnt solltest du in erster linien beginnen, dein html zu erstellen - einen funktionlosen dummy, dabei sorfst du dafür, dass jeder menüpunkt identisch ist und in seiner struktur dem menübaum entsprechend ausgezeichnet ist
wenn das erledigt ist, beginnst du das ganze mit css zu formatieren und überlegst, dir, wie du einen speziellen menüpunkt (den derzeitigen) vom rest unterscheiden kannst
sobald das getan ist: schreibe das script, welches diese systematik dynamisch erzeugt
das sollte dann in etwa so aussehen
<ul id="menu">
<li class="current"><a href="foo1.php">menuüunkt 1</a></li>
<li><a href="foo2.php">menuüunkt 2</a></li>
<li><a href="foo3.php">menuüunkt 3</a></li>
<li><a href="foo4.php">menuüunkt 4</a></li>
<li><a href="foo5.php">menuüunkt 5</a></li>
</ul>
while ($menupunkteresult) {
echo '<li';
if ($aktuell?) {
echo ' class="active"';
}
echo '><a href="' . $menuepunkt . '">menuüunkt 2</a></li>';
}
}
wenn du eine scriptsprache verwendest und musst etwas an 5 stellen manuell bearbeiten, dann hast du etwas gewaltig falsch gemacht :)
an 2 stellen bearbeiten (konfiguration und aufruf der konfiguration) ist ok, aber 5x ist ein fehler
Das hab ich auch so gemacht.
Ich muss das menü nur einmal bearbeiten
du gibst dein menü in einer schleife aus, richtig?
jeder menüpunkt weiss, wohin er verlinken muss, richtig?
jede scriptinstanz weiss, woher sie aufgerufen wurde (das weiss php in jedem fall)
So ists, so hab ichs ja auch gemacht!
wenn du nun in deinem schleifendurchlauf beide dir bekannten werte vergleichst, ist kannst du die verzweigung dort einbauen
Was willst du mir dabei zeigen
wie man ein menü logisch gesehen vernünftig mit html auszeichnet ;)wie bereits erwähnt solltest du in erster linien beginnen, dein html zu erstellen - einen funktionlosen dummy, dabei sorfst du dafür, dass jeder menüpunkt identisch ist und in seiner struktur dem menübaum entsprechend ausgezeichnet ist
wenn das erledigt ist, beginnst du das ganze mit css zu formatieren und überlegst, dir, wie du einen speziellen menüpunkt (den derzeitigen) vom rest unterscheiden kannst
sobald das getan ist: schreibe das script, welches diese systematik dynamisch erzeugt
das sollte dann in etwa so aussehen
<ul id="menu">
<li class="current"><a href="foo1.php">menuüunkt 1</a></li>
<li><a href="foo2.php">menuüunkt 2</a></li>
<li><a href="foo3.php">menuüunkt 3</a></li>
<li><a href="foo4.php">menuüunkt 4</a></li>
<li><a href="foo5.php">menuüunkt 5</a></li>
</ul>
>
> ~~~php
while ($menupunkteresult) {
> echo '<li';
> if ($aktuell?) {
> echo ' class="active"';
> }
> echo '><a href="' . $menuepunkt . '">menuüunkt 2</a></li>';
> }
> }
Ok, dass muss ich erst noch lernen.
bis jetzt hab ich mein menü nie mit listen gemacht.
Ok, dass muss ich erst noch lernen.
bis jetzt hab ich mein menü nie mit listen gemacht.
im prinzip ist kein unterschied zu deinem aktuellen code, nur dass die elemente in einem definierten, logischen gefüge stehen zu dem es einerseits standards gibt und andererseits tonnenweise beispiele
Hallo
bis jetzt hab ich mein menü nie mit listen gemacht.
Ein Tip: Schau dich bei Listamatic um. Dort werden diverse Beispiele der CSS-seitigen Gestaltung einer Navigation, die mit einer Liste (immer der selbe HTML-Quelltext) aufgebaut ist, gezeigt. Als Anregung ist das sehr hilfreich.
Tschö, Auge
Hi,
if link zu meine menüpunkt == link der gerade in der adresszeile steht then
Wie zeig ich den den link an?
So, wie andere Daten auch - also bspw. mit echo.
das heisst, dass ich alle 5 menüpunkte manuel bearbeiten muss?
Nein. Sinnvollerweise loest man so etwas mit einer Schleife.
im übrigen, deine html ausgabe ist nicht so optimal, wie sie sein sollte - wenn du schon code generierst, warum verwendest du dann nicht ordentlichen code?
Weil ich nicht weiß, was daran falsch ist
eine unsortierte liste zb - anhand ingos beispiel
Was willst du mir dabei zeigen
Na das, was er schrieb - wie man ein Menue sinnvollerweise in HTML als Liste von Links auszeichnet.
MfG ChrisB