Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Deaktywacja linku przeglądanej podstrony.
Forum PHP.pl > Forum > Przedszkole
mlodygda
Moja prośba to tak na dobrą sprawę prośba o wytłumaczenie kodu, ponieważ nie rozumiem.. Kod jest wzięty z "Vadeecum profesjonalisty" i leci tak:

  1. public $przyciski=array (
  2. "Przyklad1"=>"przyklad1.php",
  3. "Przyklad2"=>"przyklad2.php",
  4. "Przyklad3"=>"przyklad3.php",
  5. "Przyklad4"=>"przyklad4.php"
  6. );
  7. (..)
  8.  
  9. public function WyswietlMenu($przyciski)
  10. {
  11. echo "<table width= \"100%\" bgcolor=\"white\" cellpadding=\"4\" cellspacing=\"4\" >\n";
  12. echo "<tr>\n";
  13.  
  14. $szerokosc =100/count($przyciski);
  15.  
  16. foreach($przyciski as $nazwa=>$url)
  17. {
  18. $this->WyswietlPrzycisk($szerokosc, $nazwa, $url, !$this->CzyToAktualnyURL($url));
  19. }
  20. echo "</tr>\n";
  21. echo "</table>\n";
  22. }
  23.  
  24. public function CzyToAktualnyURL($url)
  25. {
  26. if (strpos($_SERVER['PHP_SELF'], $url)==false)
  27. {
  28. return false;
  29. } else {
  30. return true;
  31. }
  32. }
  33.  
  34. public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active=true)
  35. {
  36. if ($active){
  37. echo "<td width = \"".$szerokosc."%\">
  38. <a href=\"".$url."\"></a>
  39. <a href=\"".$url."\"><span class=\"menu\">".$nazwa."</span></a></td>";
  40. }else{
  41. echo "<td width=\"".$szerokosc."%\">
  42. <span class=\"menu\">".$nazwa."</span></td>";
  43. }
  44. }


Nie rozumiem w linijkach odpowiednio
18. Czemu w nawiasie na końcu ustawiamy CzyToAktualnyURL na false?
i
34. Po co ta wartośc active?

Ogółem to po wywaleniu funkcji CzyToAktualnyURL i tak całośc działa - czyli na danej podstronie link do niej samej jest nieaktywny..

Kod skróciłem do takiej postaci:

  1. public $przyciski=array (
  2.  
  3. "Przyklad1"=>"przyklad1.php",
  4.  
  5. "Przyklad2"=>"przyklad2.php",
  6.  
  7. "Przyklad3"=>"przyklad3.php",
  8.  
  9. "Przyklad4"=>"przyklad4.php"
  10.  
  11. );
  12.  
  13. (..)
  14.  
  15. public function WyswietlMenu($przyciski)
  16. {
  17. echo "<table width= \"100%\" bgcolor=\"white\" cellpadding=\"4\" cellspacing=\"4\" >\n";
  18. echo "<tr>\n";
  19.  
  20. $szerokosc =100/count($przyciski);
  21.  
  22. foreach($przyciski as $nazwa=>$url)
  23. {
  24. $this->WyswietlPrzycisk($szerokosc, $nazwa, $url);
  25. }
  26. echo "</tr>\n";
  27. echo "</table>\n";
  28. }
  29.  
  30.  
  31. public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active=true)
  32. {
  33. echo "<td width=\"".$szerokosc."%\">";
  34. echo "<a href=\"".$url."\"><span class=\"menu\">".$nazwa."</span></a></td>";
  35. }

i działa. I teraz szczerze mówiac nie mam pojęcia czemu tongue.gif
Michael2318
Cytat
Po co ta wartośc active?


to może inny przykład:

  1. function jakas_funkcja($prawdafalsz = true)
  2. {
  3. if ( $prawdafalsz == false )
  4. return 'false';
  5. else
  6. return 'true';
  7. }


W tym wypadku funkcję możemy wywołać tak:
  1. echo jakas_funkcja(false);


i zwróci nam ona:
Cytat
string('false');


możemy też funkcję wywołać tak:
  1. echo jakas_funkcja(true);


oraz tak:

  1. echo jakas_funkcja();


Zwróci nam dokładnie to samo (czyli string('true') ), niezaleznie czy podamy tam jakąs wartość (czyli 'true') czy też nie. Dlaczego? Dlatego że tutaj:
Cytat
function jakas_funkcja($prawdafalsz = true)


zdefiniowaliśmy iż jeśli nie podamy żadnego argumentu dla tej funkcji to argument domyślnie będzie true

W Twojej funkcji też tak jest zrobione, że ta wartość funkcji (czyli zmienna $active) domyslnie jest równa true i nie musisz jej uwzględniać przy wywoływaniu funkcji, jesli chcesz aby ten element miał rzeczywiście wartość równą true. Jeśli chcesz sytuację odwrotną, czyli wartość równa false - wtedy i owszem - musisz to tam uwzględnić.
Należy jeszcze dodać, że wartości domyślne w funkcjach należy przypisywać na końcu, czyli takie coś:
  1. function jakas_funkcja($prawdafalsz = true, $zmienna, $zmienna_kolejna)


nie zadziała, ponieważ zmienne domyślne przypisujemy na końcu, czyli:
  1. function jakas_funkcja($zmienna, $zmienna_kolejna, $prawdafalsz = true)


Mam nadzieję, że łapiesz smile.gif
mlodygda
tyle kumam, ale dalej nie czaje czemu :
1. Po wejściu na daną podstronę w czasie przebywania na niej link do niej jest nieaktywny
2. I tym bardziej nie rozumiem tego czemu to działa po uproszczeniu kodu.
krzysiekk
hi

wchodzisz na strone

przyklad1.php tak ?
masz tablice ".... "Przyklad1"=>"przyklad1.php", ..."

i wyswietlasz menu
function WyswietlMenu() w którym petala przetwarza tablice a przy okazji sprawdza czy $url to nie jet bieżący jesli tak zwraca prawdę a w wyniku tego ze jest poprzedzona !$this-> czyli zaprzeczeniem zwraca fałsz $ active w funkcji WyswietlPrzycisk($szerokosc, $nazwa, $url, $active=FALSE) i wykonujesie blok
  1. else{
  2. echo "<td width=\"".$szerokosc."%\">
  3. <span class=\"menu\">".$nazwa."</span></td>";
  4. }
mlodygda
Dzięki, ale w takim razie czemu to działa po usunięciu tej części kodu? Zwłaszcza po usunięciu tej funkcji? tongue.gif
Michael2318
eh no bo usuwając tę funkcję:
  1. public function CzyToAktualnyURL($url)
  2. {
  3. if (strpos($_SERVER['PHP_SELF'], $url)==false)
  4. {
  5. return false;
  6. } else {
  7. return true;
  8. }
  9. }


tutaj:
  1. $this->WyswietlPrzycisk($szerokosc, $nazwa, $url);


jako ostatni parametr nie podajesz nic. A co ci napisałem wyżej, gdzie napisałeś że 'rozumiesz'? Że jeśli nie podasz nic to domyślnie będzie wartość true.
mlodygda
ja nie wiem czy Ty piszesz w innym języku czy ja rozumuje w jakimś innym. skąd funkcja:

  1. public function WyswietlPrzycisk($szerokosc, $nazwa, $url, $active=true)
  2. {
  3. echo "<td width=\"".$szerokosc."%\">";
  4. echo "<a href=\"".$url."\"><span class=\"menu\">".$nazwa."</span></a></td>";
  5. }


wie, żeby deaktywować link do podstrony na której aktualnie jestem, skoro w funkcji nie podałem nawet takiej możliwości. Wyswietl przycisk ma za zadanie jak widać linkować każdą $nazwe.
-mlodygda-
nikt nie wie? ;-)
Michael2318
wyjaśnij mi pojęcie:
Cytat
deaktywować link

bo nie wiem o ci chodzi...
-mlodygda-
patrz, masz powiedzmy swoją stronę i w nagłówku masz linki do podstron:
podstrona 1
podstrona 2
podstrona 3

Klikasz przykładowo w link "podstrona 1", przenosi Cię na nią i w tym momencie link do "podstrona 1" ( kiedy sie na niej znajdujesz ) jest nieaktywny - zamiast linku jest sam tekst. To niejako informuje użytkownika na jakiej podstronie jest.
Już jaśniej nie wytłumaczę.
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.