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
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:
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.