Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Menu nawigacyjne
Forum PHP.pl > Forum > Przedszkole
aceide
Witam,
Mam problem z wymyśleniem jakiegoś dobrego sposobu na stworzenie nawigacyjnego menu, tj. np. skryptu ktory w jakis inteligentny (samymi if-ami mozna to spokojnie zrobic, ale troche zamieszania sie robi) sposob formowalby menu w zaleznosci np. od adresu. Powiedzmy ze przekazywana jest zmienna $_GET["dzial"], czyli http://adres.pl/index.php?dzial=linki

Menu prezentuje sie wtedy tak:

Dzial 1
Dzial 2
@ Linki (chodzi o oznaczenie aktualnego dzialu)
Dzial 4

Troche nietypowe te moje zmartwienia, ale moze ktos ma jakis pomysl winksmiley.jpg

Pozdrawiam.
slaug
Nie bardzo rozumiem z czym masz problem smile.gif

Jeżeli menu masz tworzone dynamicznie przez php, to można to zrobić np. tak:

  1. <?php
  2.  
  3. for ($i=0; $i<$iloscLinkow; $i++)
  4. {
  5.  if (isset($_GET[&#092;"dzial\"]) && $_GET[\"dzial\"] == $linki['dzial'])
  6.  echo '@ <a href=\"'.$_GET['dzial'].'\">'.$linki['opisDzialu'].'</a>';
  7.  else
  8.  echo '<a href=\"'.$_GET['dzial'].'\">'.$linki['opisDzialu'].'</a>';
  9. }
  10.  
  11. ?>


Oczywiście wykorzystuje tutaj if, ale raczej nie sądze aby wpływał na czytelność smile.gif

Gorzej sprawa się ma jeżeli tworzysz menu statycznie, wtedy to musisz wszędzie ify dać. Jednak statyczne menu bardzo łatwo możesz przerobić na wypisywane dynamicznie, wpisując je do takiej tablicy jakiej użyłem w przykładzie, tej $linki. Od biedy nie musi to być tablica asocjacyjna, może być zwykła dwuwymiarowa.

Jeżeli to co napisałem nie starczy do rozwiązania problemu, to napisz dokładniej jak tworzysz samo menu. Najlepiej wklej tak jak to robisz teraz, to postaram Ci ewentualnie jakoś dodatkowo pomóc.
aceide
Wiesz co.. nie bardzo znam sie na tablicach.

Robie tak:

  1. <?php
  2.  
  3. $iloscLinkow = 3;
  4.  
  5. $linki = array(
  6.     
  7.     &#092;"dzial\" =>  array(\"index\",\"linki\",\"dupa\"),
  8.     &#092;"opisDzialu\" =>  array(\"to index\",\"to linki\",\"to dupa\")
  9.     
  10. );
  11.  
  12. for ($i=0; $i<$iloscLinkow; $i++)
  13. {
  14.    if (isset($_GET[&#092;"dzial\"]) && $_GET[\"dzial\"] == $linki['dzial'])
  15.        print_r('@ <a href=\"'.$_GET['dzial'].'\">'.$linki['opisDzialu'].'</a>');
  16.    else
  17.        print_r('<a href=\"'.$_GET['dzial'].'\">'.$linki['opisDzialu'].'</a>');
  18. }
  19.  
  20. ?>


i wyswietla mi ArrayArrayArray sad.gif

A tak gwoli scislosci - co w Twoim mniemaniu jes menu statycznym a co dynamicznym? smile.gif Nie chce zeby nie bylo nieporozumien, nie czepiam sie smile.gif

pzdr.
gu35t
http://pl2.php.net/manual/pl/function.print-r.php
daj zwykle echo smile.gif
aceide
A od kiedy echo wyswietla elementy tablicy? winksmiley.jpg
slaug
Menu statyczne to takie które masz na stałe wpisane w dokumencie. Wtedy tak jak napisałem wyżej nie pozostaje ci nic innego jak przy każdym elemencie if. Dynamiczne to takie które się zmienia, wyciągane z bazy albo z pliku. Ewentualnie, można tak jak napisałem ci wyżej wrzucić statyczne do tablicy i wyświetlać tak jak napisałem wyżej. Głównie po to żeby kod uprościć.

@ aceide: element tablicy ma jakąś wartość, nie widzę problemu dla którego miałoby nie wyświetlać.

Tym razem pełny kod:

  1. <?php
  2. /* Nie pamiętam jak się robi 2 wym. tablice asoc. więc jest zwykła */
  3. $linki = array(
  4.          array('index', 'to index'),
  5.          array('linki', 'to linki'),
  6.          array('dupa', 'to dupa')
  7.        );
  8.  
  9. /* Zliczenie ilości elementów, żebyś nie musiał sam zmieniać za kazdym razem */
  10. $iloscLinkow = count($linki);
  11.  
  12. /* Sprawdzenie czy jest zmienna get, żeby nie było błędu jak ktoś ją usunie */
  13. if (isset($_GET['dzial']))
  14.     $dzial = $_GET['dzial'];
  15. else $dzial = 'index';
  16.  
  17. /* Wyświetlenie linków;) */
  18. for ($i=0; $i<$iloscLinkow; $i++)
  19. {
  20.    if ($dzial == $linki[$i][0])
  21.        echo '@ <a href=\"'.$linki[$i][0].'\">'.$linki[$i][1].'</a><br>';
  22.    else
  23.        echo '<a href=\"'.$linki[$i][0].'\">'.$linki[$i][1].'</a><br>';
  24. }
  25. ?>


Jak coś będzie nie tak to pisz smile.gif

P.S. Oczywiście edytuj sobie potem odpowiednio tego a hrefa, tak żeby się zgadzał z twoim adresem.

pozdr.
Daniel
aceide
Działa, właśnie o to chodziło! Dzięki wielkie. smile.gif Nienawidze tablic.. :b
slaug
Nie ma za co.

Jeżeli jednak będziesz chciał pisać w php, czy jakim kolwiek innym języku, to do tablic będzie się trzeba kiedyś przyzwyczaić smile.gif

pozdr.
Daniel
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.