Skocz do zawartości

Warunek IF w PHP


Tymon

Rekomendowane odpowiedzi

Oto przykładowy skrypt PHP ilustrujący mój problem :

<?php

if ($krok=='')
{
  echo("<a href='index.php?krok=pierwszy>Pierwszy</a>'");
}

if ($krok=='pierwszy')
{
  echo("<a href='index.php?krok=drugi>Drugi</a>'");
}

if ($krok=='drugi')
{
  echo("Koniec");
}

?>

I teraz. Dlaczego on mi tutaj stoi cały czas na tym pierwszym kroku (if ($krok=='')) chociaż wartosć $krok powinna się zmienić. Na www.soldat.gmclan.org właśnie mam z tym problem.

Odnośnik do komentarza
Udostępnij na innych stronach

  • Filar Społeczności

Niech zgadne, ta zmienna przesylasz w linku tak? Jesli tak to:

 

Zapraszam do lektury:

http://pl.php.net/manual/pl/security.globals.php

 

A potem tu (po polsku):

http://pl.php.net/manual/pl/language.varia....predefined.php

 

Szybki cytacik:

W PHP 4.2.0 i późniejszych, domyślne ustawienie, które udostępniało predefiniowane zmienne w zasięgu globalnym, zostało zmienione. Zmienne nadchodzące metodą GET i POST oraz zmienne serwera domyślnie nie są już umieszczane w zasięgu globalnym. Zamiast tego umieszczane są w odpowiednich tablicach superglobalnych.
Odnośnik do komentarza
Udostępnij na innych stronach

Mam przyzwyczajenie że najpierw robie kod a potem daje laya ;)

 

LOL, ja niewiedziałem że to takie łatwe xD

$akcja=$_GET['akcja'];

I po sprawie :lol2:

 

EDIT

No to jedziemy jeszcze raz z tymi skryptami :P

Odnośnik do komentarza
Udostępnij na innych stronach

  • 3 lata później...

Oprócz standardowego zapisu:

 

if($zmienna == "wartosc")
{
    kod1;
}
else
{
   kod2;
}

 

można zapisać to prościej i w jednej linijce:

 

if($zmienna == "wartosc") ? kod1 : kod2;

 

to samo wyjdzie, a prostszy zapis :)

 

Dowód działania znajduje się na stronie dokumentacji PHP

 

sorki za błąd, ale mi się niektóre klawisze zacinają. Poprawiono :)

 

a propo:

 

* zmiennych predefiniowanych:

 

zamiast $_GET i $_POST polecam użyć zmiennej $_REQUEST ze względu na to że sama rozpoznaje czy zapytanie poszło za pomocą $_GET czy $_POST.

 

* echo (odpowiednik print):

 

polecenie echo nie wymaga nawiasów, jak to podał jeden z userów na tym temacie :)

Odnośnik do komentarza
Udostępnij na innych stronach

Tymon, takich rzeczy nie wiesz :P ?

Ja bym na Twoim miejscu dał echo("$krok"), i by wyszło, w czym problem.

Spóźniłeś się niestety 3 i pół roku z pomocą.

 

Oprócz standardowego zapisu:

(...)

można zapisać to prościej i w jednej linijce:

to samo wyjdzie, a prostszy zapis :)

Dowód działania znajduje się na stronie dokumentacji PHP

sorki za błąd, ale mi się niektóre klawisze zacinają. Poprawiono :)

a propo:

* zmiennych predefiniowanych:

zamiast $_GET i $_POST polecam użyć zmiennej $_REQUEST ze względu na to że sama rozpoznaje czy zapytanie poszło za pomocą $_GET czy $_POST.

* echo (odpowiednik print):

polecenie echo nie wymaga nawiasów, jak to podał jeden z userów na tym temacie :)

A ty, tym postem i powyższym chciałeś się pochwalić, że potrafisz czytać?

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy
Mam takie pytanie... czy ktoś może zna taki zapis warunku if:

 

 
  if($zmienna == "wartosc") ? kod1 : kod2;

 

??

 

chodzi chyba raczej o

$zmienna = (warunek) ? wartosc1 : wartosc2;
//lub
echo (warunek) ? wartosc1 : wartosc2;

bo Twój kod wywali błąd :)

Odnośnik do komentarza
Udostępnij na innych stronach

Spóźniłeś się niestety 3 i pół roku z pomocą.

 

Dopiero się zarejestrowałem, a poza tym nie widzę żadnej adnotacji że pomoc jest zakończona...

 

A ty, tym postem i powyższym chciałeś się pochwalić, że potrafisz czytać?

 

Za taki komentarz to powinieneś dostać warna :P

 

#UP

Tak na pewno mu o to chodzi. Btw. to się nazywa bodajże po prostu skrócona instrukcja warunkowa :)

 

Tak się taka instrukcja nazywa :)

 

chodzi chyba raczej o

$zmienna = (warunek) ? wartosc1 : wartosc2;
//lub
echo (warunek) ? wartosc1 : wartosc2;

bo Twój kod wywali błąd :)

 

nie kolego. Moja składnia jest poprawna. W miejsce wartosc1 wstawiasz polecenie, które ma się wykonać kiedy warunek jest spełniony, a w miejsce wartosc2 - polecenie które ma się wykonać kiedy nie jest... chociaż podawany przez ciebie zapis:

$zmienna = (warunek) ? wartosc1 : wartosc2;

 

też jest stosowany :)

 

Skrócona adnotacja warunkowa (bo tak się to poprawnie nazywa) stosowana jest wyłącznie do zapytań logicznych, w których w wyniku spełnienia zależności (lub nie) jest wykonywane odwołanie zazwyczaj do jednej funkcji (w przeciwieństwie do standardowej notacji if...else, gdzie można stosować wiele poleceń)

Odnośnik do komentarza
Udostępnij na innych stronach

  • Administratorzy

Nie zgadzam sie po raz kolejny. Wpisz ten "swój" kod do pliku PHP i sprawdź czy działa. Od razu wywala błąd, że po warunku if pojawia się niespodziewany znak ?.

Wiesz dla czego? Bo znak ? oznacza właśnie IF, a : oznacza ELSE. To znaczy, że oba zapisy poniżej są równoważne:

 

$zmienna = (warunek) ? wartosc1 : wartosc2;
if (warunek) $zmienna=wartosc1; else $zmienna=wartosc2;

 

I pamiętaj, zdania administratora się nie podważa :)

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...