Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Warunek if
Forum PHP.pl > Forum > Przedszkole
free
chce by w warunku if zagnieździć 4 warunki w ten sposób:
Jezeli (warunek 1 LUB warunek2) Oraz (warunek3 LUB warunek4) Wykonaj dlasze czesc skryptu...
else ...
Czyli skrypt sprawdza czy prawdziwy jest warunek 1 lub 2 ORAZ prawdziwy jest warunek 3 lub 4 .

  1. <?php
  2. if ( !empty ( ($_SESSION['nazwa']) || ($_SESSION['cos']) )
  3. AND 
  4. ( ($_SESSION['nr']) == $id || ($_SESSION['poziom'] > 4)) )
  5.  { ...}
  6. else {...}
  7. ?>

Czy dobrze to zrobiłem , chodzi mi o te nawiasy. Moze tak pozostac czy mozna to zoptymalizowac ?
skowron-line
  1. <?php
  2. if(warunek){
  3. //instrukcja
  4. }elseif(warunek){
  5. //instrukcja
  6. }else{
  7. //instrukcja
  8. }
  9. ?>


mysle ze tego szukasz
free
Nie. Pytam sie tylko czy podany powyzej sposob jest poprawny i zoptymalizowany ?
"Czyli skrypt sprawdza czy prawdziwy jest warunek 1 lub 2 ORAZ JEDNOCZEŚNIE prawdziwy jest warunek 3 lub 4 ."
Czy tez nalezaloby go poprawic.
Ociu
Użyłęś || i AND, Zdecyduj się. Albo używasz AND i Or albo && i ||.
Ogólnie: ok.
free
JEzeli ok to spoko nie bede zmieniał. A swoja droga || to to samo co OR ; && to to samo co AND wiec nie rozumiem czemu na to zwracasz uwage.
JaRoPHP
Cytat(free @ 21.02.2007, 12:56:43 ) *
A swoja droga || to to samo co OR ; && to to samo co AND

No niestety nie za bardzo - zwróć uwagę na priorytety operatorów.
free
Zrobiłem tak :
  1. <?php
  2. if(!empty ( ($_SESSION['uzyt']) OR ($_SESSION['nr']) ) AND ( (($_SESSION['nr']) == $id OR ($_SESSION['ranga'] > 4)) ) )
  3.  { echo"wykonuje mi skrypt";  }
  4. else echo"pokazuje jakis błąd...";
  5. }
  6. ?>

Nie działa : wywala błąd :
Parse error: parse error, expecting `T_VARIABLE' or `'$'' in funkcja.php on line 220

Dodam ze błąd wywala gdy dodaje te dodatkowe nawiasy, ale bez nich nie ma błędu, ale i również warunki nie sa rozpatrywane prawidłowo i skrypt nie sprawdza odpwiednio tych warunkow
nospor
ale jazda...
http://pl.php.net/manual/pl/function.empty.php
Przeciez empty() nie przyjmuje warunkow logicznych tylko zmienne
free
Działało mi z tym empty dopoki mialem tylko 3 warunki z ||. a teraz nie rusza. W czym problem co mam zmienic ?
Saddam92
  1. <?php
  2. if ( (!empty ($_SESSION['uzyt']) || !empty($_SESSION['nr'])) && (($_SESSION['nr']==$id) || ($_SESSION['ranga']> 4)) )
  3.  { echo"wykonuje mi skrypt";  }
  4. else echo"pokazuje jakis błąd...";
  5. }
  6. ?>
myślę że o to ci chodziło
free
Niestety nie dziala. TZN nie ma wspomnianego błędu, ale i warunki nie sa sprawdzane - wyglada na to ze sprawdzanie jest zbyt restrykcyjne i zeby wokonal sie skrypt trzeba chyba spelnienia obecnei wszystkich 4 warunków. a mi chodzi by skrypt wykonał sie jezeli spelniony jest 1 lub 2 warunek ORAZ OBOWIAZKOWO 3 lub 4
Saddam92
wydaje mi się że błąd masz gdzie indziej, mianowicie wstawiłem na serwer plik pyt.php o takim kodzie
  1. <?php 
  2. $id=3;
  3. if ( (!empty ($_GET['uzyt']) || !empty($_GET['nr'])) && (($_GET['nr']==$id) || ($_GET['ranga']> 4)) )
  4.  echo"wykonuje mi skrypt";
  5. else 
  6.  echo"pokazuje jakis błąd...";
  7. ?>
i wygląda na to że działa on poprawnie..

oto przykłady:
http://foksal11.pl/pyt.php?nr=3 smile.gif
http://foksal11.pl/pyt.php?uzyt=1&nr=2&ranga=5 smile.gif
http://foksal11.pl/pyt.php?nr=2&ranga=5 smile.gif
http://foksal11.pl/pyt.php?nr=2 smile.gif
http://foksal11.pl/pyt.php?ranga=5 smile.gif

U mnie ten kod działa.. zobacz czy wcześniej nie masz błędu..
free
BEde musial jeszcze przeanlizowac moj kod. Stosuje go do weryfikacji czy dane user ma prawo edytowac post.
gdy go rozbudowalem do 4 warunkow zgłupiał, a ja z nim ;-)
Masz moze pomysl gdzie szukac błedu ?
Saddam92
spróbuj
  1. <?php
  2. print_r($_SESSION);echo '<br>'.$id;
  3. ?>
i sprawdź czy są poprawne wartości..

Co do pomysłu na znalezienie błędu to nie mam, gdyż nie wiem za co odpowiadają dane zmienne oraz jaki masz zamysł budowy skryptu ..
free
Ok dzieki juz mi dziala :-) Mialem błąd przy pobieraniu jednej zmiennej.
Teraz mam :
  1. <?php
  2. if ( (!empty ($_SESSION['uzyt']) || !empty($_SESSION['nr'])) &&
  3.  (($_SESSION['nr']==$user) || ($_SESSION['ranga']> 4) || !empty ($_SESSION['uzyt'])) )
  4.  {....
  5. ?>

Chciałbym to zoptymalizowac, gdyż 2 razy sprawdzam :
  1. <?php
  2. (!empty ($_SESSION['uzyt'])
  3. ?>
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.