![]() |
redundante links als inaktiv setzen
also, ich möchte den link der aktuellen seite als nicht aktiv setzen. dabei werden frames mit div-elementen simuliert und mit $_GET['lalala'] übergeben.
blöderweise funktioniert es aber nicht. muss ich da etwas besonderes beachten? |
Bei der Beschreibung kennt sich keiner aus.
lg, jak |
Zitat:
ok, ich versuch's nochmal ich hab eine tabellenzeile mit versch. links, aufgebaut durch eine foreach-schleife. dabei guck ich ob die geladene seite einem link entspricht - falls ja wird er nicht verlinkt. soweitsogut, die seiten die geladen werden sollen wenn ich einen link anklick, hab ich in einen array liegen, mit dem parameter der übergeben werden soll. quasi ala 3-spalten-layout von quakenet. die geladene seite soll also keinen aktiven link haben, und genau das funktioniert nicht. deshalb die frage: wie muss ich die seite übergeben, dass diese erkannt wird und der link inaktiv ist?? |
Wie bestimmst du im PHP Skript welcher Inhalt angezeigt wird? Das steht doch sicher in irgendeiner Variablen. Wieso verwendest du nicht die?
Poste eventuell mal deinen Code. jak |
dafür verwende ich zwei ass. arrays.
eines mit den zu übergebenden werten für die foreach-schleife, das andere mit den url's der einzelnen seiten: <?php $menue = array( "Neuigkeiten" => "index.php?geladene_seite=neues", "was anderes" => "index.php?geladene_seite=wasanderes", "irgendwas" => "index.php?geladene_seite=irgendwas", ); $dateien = array(); $dateien['neues'] = "neues.php"; $dateien['wasanderes'] = "wasanderes.html"; $dateien['irgendwas'] = "irgendwas.html"; echo "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml/DTD/xhtml1-transitional.dtd\">\n"; echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">\n"; echo "<head>\n"; echo "<meta name=\"author\" content=\"leer\">\n"; echo "<meta name=\"keywords\" content=\"leer\">\n"; echo "<meta name=\"date\" content=\"leer\">\n"; echo "<meta name=\"robots\" content=\"index\">\n"; echo "<meta name=\"robots\" content=\"follow\">\n"; echo "<link rel=\"stylesheet\" type=\"text/css\" href=\"formate.css\">\n"; echo "<title>$titel</title>\n"; echo "</head>\n"; echo "<body>\n"; echo " <div id=\"root\">\n"; echo " <div id=\"Einleitung\">\n"; echo " <h1>$einleitung</h1>\n"; echo "<table width=\"100%\">\n"; echo "<tr>\n"; foreach($menue as $eintrag => $datei){ if ($datei == basename($_SERVER['PHP_SELF'])) echo "<td align=\"center\" bgcolor=\"#00ff00\">$eintrag</td>"; else echo "<td align=\"center\" bgcolor=\"#c0c0c0\"><a href=\"$datei\">$eintrag</a></td>"; } echo " </tr>\n"; echo " </table>\n"; echo "</br>\n"; echo " </div>\n"; echo " <div id=\"Inhalt\" style=\"background-image:url(nonixda.jpg);\">\n"; if(isset($_GET['geladene_seite']) AND isset($dateien[$_GET['geladene_seite']])) { include $dateien[$_GET['geladene_seite']]; } else { include $dateien['neues']; } echo " </div>\n"; echo " <br style=\"clear:both;\" />\n"; echo " </div>\n"; echo "</body>\n"; echo "</html>\n"; ?> |
wird meine frage immer noch nicht verstanden oder weiß einfach keiner eine antwort?:confused:
|
Naja, ich versteh das mal so,
die aktuelle Seite soll nicht als Link ausgegeben werden, innerhalb einer Seitennavigation, vulgo "pagination". |
@xpla, genau darum geht es mir. nur funktioniert es bei mir nicht, der link bleibt aktiv
möglicherweise liegt es daran, wie ich den wert übergebe? |
Zitat:
Zum Thema: $_SERVER['PHP_SELF'] liefert nur den Pfad des Aufrufs, nicht die Parameter (also alles vor dem ?). So wie du das willst funktioniert's nicht. Ich würd' vorschlagen das ganze menu Array ein bischen anders zu organisieren: Code:
$menue = array( Code:
foreach($menue as $key => $val){ Das Include geht dann mit inlude($menue[$_GET['geladene_seite']]['file']) Da deine Seitennamen nach einem bestimmten Schema aufgebaut sein müssen könntest du dir den 'path' Eintrag im $menue auch sparen und den link einfach mit echo ''.$val['title'].''; bauen. jak |
hallo @jak,
danke für deine antwort und den lösungsvorschlag . ich hab mir das angeschaut und getestet - funktioniert aber nicht. mir ist aufgefallen dass ich das array im array bei der schleife gar nicht auslesen kann, oder verstehe ich da etwas falsch? daher wird auch keine seite geladen beim anklicken (steht nur array statt dem link, und einige notice-fm kommen: Undefined index: geladene_seite in C:\Programme\xampp\htdocs\index.php on line 62) bitte um weitere hilfe :D |
Bei mir funktioniert es so:
Code:
foreach($menue as $key => $val){ |
hallo @jak,
verstehe nicht warum es bei dir, nicht aber bei mir funktionert. die ersten fehler die gekommen sind: Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING na gut, ein wenig gegoogelt und dann die syntax bei mir verändert: foreach($menue as $key => $val){ if ($key == $_GET['geladene_seite']) { echo "<td align=\"center\" bgcolor=\"#00ff00\">'".$val['title']."'</td>"; } else { echo "<td align=\"center\" bgcolor=\"#c0c0c0\"><a href=\"'".$val['path']."'\">'".$val['title']."'</a></td>"; } } das hätte dann auch soweit geklappt, nur kommt nun diese: Notice: Undefined index: geladene_seite in C:\Programme\xampp\htdocs\index.php on line 62 die zeile 62: if ($key == $_GET['geladene_seite']) { wenn ich trotzdem einen link anklicke wird die seite nicht gefunden -> ich nehme an es liegt an den anführungszeichen im array 'path' also keine ahnung was ich machen kann, damit es so läuft wie ich es mir vorstelle. hilfst du mir noch einmal :D :D |
Nur zur Erklärung (Vielleicht weißt du das eh schon):
In PHP kann man Strings auf zwei Arten angeben: In doppelten (") oder einfachen(') Hochkommas. Der Unterschied besteht darin, daß bei doppelten Hochkommas Variablen ausgewertet werden: $myvar = 'Hallo'; echo 'Ich sage: $myvar'; echo "Ich sage: $myvar"; Ausgabe: Ich sage: $myvar Ich sage: Hallo Die Notice bekommst du, wenn du zum ersten mal die Seite aufrufst (daher kein ?geladene_seite=...). Wenn dich das stört kannst du es durch: if (isset($_GET['geladene_seite']) && ($key == $_GET['geladene_seite'])) { ersetzen. Zu deinem eigentlichen Problem kann ich dir leider nichts sagen. Eventuell Hochkommas im Text die nicht maskiert sind? Wenn du nichts findest kannst du ja nochmal deinen Code posten. jak jak |
das mit dem einfachen oder doppelten hochkomma wusste ich nicht, muss ich übersehen haben. aber danke für die info!
ich werde mir das ganze nochmal in aller ruhe angucken und vielleicht finde ich den fehler. danke und |
[code]
<?php $menue = array( 'neues' => array( 'title' => 'Neuigkeiten', 'file' => 'neues.php', 'path' => 'index.php?geladene_seite=neues' ), 'altes' => array( 'title' => 'Altigkeiten', 'file' => 'altes.html', 'path' => 'index.php?geladene_seite=altes' ), 'ausflug_weiten' => array( 'title' => 'Ausflug nach Weiten', 'file' => 'weiten/weiten.php', 'path' => 'index.php?geladene_seite=ausflug_weiten' ), 'fam_' => array( 'title' => 'Familie ', 'file' => 'fam_.html', 'path' => 'index.php?geladene_seite=fam_' ), ); echo "<table width=\"100%\">\n"; echo "<tr>\n"; foreach($menue as $key => $val){ if ($key == $_GET['geladene_seite']) { echo "<td align=\"center\" bgcolor=\"#00ff00\">'".$val['title']."'</td>"; } else { echo "<td align=\"center\" bgcolor=\"#c0c0c0\"><a href=\"'".$val['path']."'\">'".$val['title']."'</a></td>"; } } echo " </tr>\n"; echo " </table>\n"; echo "</br>\n"; if(isset($_GET['geladene_seite']) AND ($key == $_GET['geladene_seite'])) { include($menue[$_GET['geladene_seite']]['file']); } else { include $menue['fam_']['file']; } ?> das einzige was funktioniert ist die letze include nach dem else, in der schleife werden komischerweise die links alle mit hockkomma dargestellt und beim anklicken wird die seite nicht geladen -> wenn ich die hochkommas aus der adressleiste lösche aber schon ist das ein problem des arrays oder vom auslesen des arrays? :heul: |
Das er Anführungszeichen ausgibt ist klar, nachdem du sie ja auch im Sourcecode stehen hast ;)
siehe hier: PHP-Code:
PHP-Code:
PHP-Code:
mfg Thomas ps: Für alle, die sich intensiver mit PHP auseinandersetzen und größere Seiten planen, würd ich eine Template Enginge wie Smarty empfehlen. |
@t.dot, wenn ich erklären könnte warum ich diese einfachen hochkommas habe, hätte ich sie vermutlich gar nicht :lol:
also hab ich mir selbst ein riesenei gelegt, auch net schlecht :rolleyes: gut, ich werde es einfach einmal rauslöschen und testen .... |
*seufz*
also die links werden jetzt korrekt dargestellt - das passt zum glück PHP-Code:
PHP-Code:
|
PHP-Code:
aber wie bekomme ich nun die notice-fm weg? aber sonst funktioniert alles, daher ein danke :bier: an @jak und @t.dot |
Alle Zeitangaben in WEZ +2. Es ist jetzt 20:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag