| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

14-07-2010, 12:29
|
|
schischi
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 66
|
|
Menü - links nicht aktiv
Hallo und Guten Tag,
hab mir das Menü von frische Zitronen genommen. Die Links werden aktiv, wenn man in der csv. Datei z.B aktuell.php schreibt, wenn man jedoch aktuell.php?lang=de schreibt, dann passiert das Aktiv werden nicht.
PHP-Code:
<?php if(defined('E_STRICT') && function_exists('date_default_timezone_set')) { date_default_timezone_set("Europe/Berlin"); } else error_reporting(E_ALL);
$s = basename($_SERVER['SCRIPT_NAME']); //basename extrahiert den Namen einer Datei aus einem Pfad echo OMList($s);
function OMList($site) { $site = str_replace('', '',$site);
switch($_GET['lang']){ case "en": $menu = 'en.csv'; break; case "it": $menu = 'it.csv'; break; case "ru": $menu = 'ru.csv'; break; case "th": $menu = 'th.csv'; break; } $cr = chr(13).chr(10); $nav = '<ul>'.$cr; $li = 0; $dat = file($menu);
for($i=0; $i<count($dat); $i++) { $x = explode('|',trim($dat[$i])); if($x[0]) { $link = $x[0]; $s = $x[1]; $level = 0; while (strpos($link,'-') === 0) { $level++; $link = substr($link,1); } if($level < $li+2) { if($level <= $li && $i>0) { $nav .= '</li>'.$cr; } if($level > $li) { $li++; $nav .= '<ul>'.$cr; } while ($level < $li) { $li--; $nav .= str_repeat(' ', $li+1).'</ul></li>'.$cr; } $nav .= str_repeat(' ', $li+1); if($s == $site) { $ul = $li; $nav .= '<li id="active"><span>'.$link.'</span>'; } else { $nav .= '<li><a href="'; $nav .= ''. $s .'" title="'.$link.'">'.$link.'</a>'; } } } } $nav .= '</li>'.$cr; while ($li) { $li--; $nav .= str_repeat(' ', $li+1).'</ul></li>'.$cr; } $nav .= '</ul>'.$cr; return $nav; } ?>
Habt Ihr mir da eventuell Hilfe.
vielen Dank im voraus.
schischi
Geändert von schischi (14-07-2010 um 12:35 Uhr)
Grund: fehler
|

14-07-2010, 13:06
|
|
litterauspirna
Registrierter Benutzer
|
|
Registriert seit: Nov 2007
Beiträge: 353
|
|
Zitat:
Zitat von schischi
Hallo und Guten Tag,
hab mir das Menü von frische Zitronen genommen. Die Links werden aktiv, wenn man in der csv. Datei z.B aktuell.php schreibt, wenn man jedoch aktuell.php?lang=de schreibt, dann passiert das Aktiv werden nicht.
|
Hallo,
ich kenne das Script nicht, aber du hast dir eigentlich in deiner Frage schon selbst die Antwort gegeben warum das was schief laufen kann.
Weil aktuell.php != aktuell.php?lang=de
Das heist wenn da auf aktuell.php verglichen wird dann kann aktuell.php?lang=de nichts passieren, bzw. muss die Wahrheitsbedingung ja ins leere laufen. Das heist da muss du einen Codeteilschaffen der prüft ob in einem Vergleichstring aktuell.php enthalten ist. Dazu ist preg_match ganz gut geeignet.
Gruß litter
__________________
Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
http://www.lit-web.de
|

14-07-2010, 13:36
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von litterauspirna
Das heist da muss du einen Codeteilschaffen der prüft ob in einem Vergleichstring aktuell.php enthalten ist. Dazu ist preg_match ganz gut geeignet.
|
Nein, das ist die Spatzenkanone.
Wirklich gut geeignet sind für sowas Stringfunktionen wie strpos.
Allerdings weiß ich nicht, ob dieser Vergleich hier ausreicht.
Wenn aktuell.php?lang=de und aktuell.php?lang=en eigene Links darstellen, die getrennt „aktiv“ dargestellt werden sollen, dann muss vermutlich der Querystring in den Vergleich einbezogen werden.
Um dazu genaueres zu sagen, ist mir die Problembeschreibung aber zu unspezifisch ...
Zitat:
|
Zitat von schischi
hab mir das Menü von frische Zitronen genommen.
|
Klingt nach dem Namen einer politisch viel zu korrekten Punk-Band ...
Bitte geh nicht davon aus, dass wir wissen, wo du dir welche Scripte hergeholt hast. Gib' also in solchen Fällen immer mindestens einen Link auf die Scriptquelle an.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

14-07-2010, 14:28
|
|
schischi
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 66
|
|
@litterauspirna,
genau, vergleichen muss man dies!
bei einem deutschen Menü ist das kein Problem und dies wird im Script so getan:
PHP-Code:
if($s == $site)
da ist es ja kein Problem, da seite aktuell.php == aktuell.php im menü ist.
@wahsaga
strpos, danke für den Tip!
es sollte eigentlich nur verglichen werden ob aktuell.php?lang=de == aktuell.php?lang=de ist!
entschuldigung für die Annahme, frische zitronen frische-zitronen.de | Webdesign | Dynamisches PHP-Men und kleine Webseitenvorlage
da geht dies momtan nicht, daher diesen link Dynamisch verschachteltes PHP Menü - jukemedia
Punkrockband  !!
|

14-07-2010, 15:12
|
|
schischi
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 66
|
|
weiss nicht ob dies die feine englische Art ist, dies zu lösen, lasse mich auch gerne zu etwas besserem belehren.
hab mal so gelöst:
PHP-Code:
switch($_GET['lang']){ case "en": $seite = $site.'?lang=en'; break; case "it": $seite = $site.'?lang=it'; break; case "ru": $seite = $site.'?lang=ru'; break; case "th": $seite = $site.'?lang=th'; break; } if($s == $seite) {
|

14-07-2010, 16:17
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Ohne default? Und wieso speicherst du die Sprachauswahl nicht einfach in einer Session? Dass macht die Konstruktion von Links an anderen Stellen deutlich einfacher.
|

15-07-2010, 21:11
|
|
schischi
Registrierter Benutzer
|
|
Registriert seit: Oct 2009
Beiträge: 66
|
|
thanks @onemorenerd  ,
habs nun mit default geschrieben! Mit Session komm ich noch nicht klar, werd mich da noch schlau schauen.
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|