Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]Przesyłanie informacji metodą GET a negacja
coomler
post 20.07.2010, 23:33:28
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 26.06.2010

Ostrzeżenie: (10%)
X----


Witam,
mam nadzieję, że temat wątku mówi to co chcę. Czy poniższy skrypt jest poprawny, tzn. działa, ale czy jest sposób, aby zrobić to krócej, wydajniej. Chodzi mi o radę, gdyż dopiero się uczę i chciałbym wyrobić sobie dobre nawyki.

  1.  
  2. if(!isset($_GET['newsy']) && $_GET['newsy'] != 'otworz' && !isset($_GET['id']))
  3. {
  4.  
  5. echo '<a href="index.php?newsy=otworz&id=' . $wiersze['id'] . '">' . $wiersze['tytul'] . '</a>';
  6. }
  7.  
  8. elseif(isset($_GET['newsy']) && $_GET['newsy'] == 'otworz' && isset($_GET['id']))
  9. {
  10.  
  11. }

Da się krócej/poprawniej napisać warunek w if()?
Go to the top of the page
+Quote Post
mrooczilla
post 21.07.2010, 08:51:45
Post #2





Grupa: Zarejestrowani
Postów: 11
Pomógł: 1
Dołączył: 6.07.2009

Ostrzeżenie: (0%)
-----


  1. f(!isset($_GET['newsy']) && $_GET['newsy'] != 'otworz' && !isset($_GET['id']))



skoro $_GET['newsy '] nie istnieje to dlaczego dalej sprawdza wartość dla klucza 'newsy' ?
Go to the top of the page
+Quote Post
thek
post 21.07.2010, 09:12:35
Post #3





Grupa: Moderatorzy
Postów: 4 362
Pomógł: 714
Dołączył: 12.02.2009
Skąd: Jak się położę tak leżę :D




Pamiętaj... Jeśli używasz && to każdy kolejny warunek jest sprawdzany gdy poprzednie dają TRUE. Tylko taki układ daje optymalność. If bowiem czeka na true lub false a logiczne AND ma prawdę tylko gdy wszystkie części warunku zwracają prawdę. Wystarczy, że jeden po drodze da false a if przeskoczy do else ( lub do sprawdzanie ifelse jeśli go posiadasz ). Stąd bardzo sensowne jest
  1. isset($_GET['newsy']) && $_GET['newsy'] == 'otworz' && isset($_GET['id'])

bo idzie to łańcuchem. Ja bym nawet już zrobił na tym etapie na końcu jeszcze walidację, jeśli id jest liczbą dodatnią w stylu:
  1. ctype_digit( $_GET['id'] ) && $_GET['id'] > 0
Ale to co masz w if to pomyłka... Skoro $_GET['newsy'] nawet nie istnieją, to po co jeszcze sprawdzać je? Jeśli akurat nie będzie ich, to skrypt przejdzie dalej i wywali warning, że porównujesz do nie istniejącej zmiennej (utworzy ją w locie i ustawi na ciąg pusty -> '') i tak czy siak wywali false, czyli zakończy sprawdzanie warunku w if, przechodząc do ifelse. Logika matematyczna się kłania.


--------------------
Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 15.06.2025 - 13:27