Witam,
popełniasz lekki błąd. Wydaje mi się, że sprawdzanie w bazie czy user jest zalogowany jest bezcelowe, szczególnie, że i tak już ustawiasz sesje. Zapisz to sesji informację o zalogowaniu. Zaoszczędzisz tym sposobem sporo ruchu, bo w tej chwili każda odwiedzona podstrona to kolejne zapytanie do bazy.
Co do samego problemu to w miejscu gdzie kasujesz sesję, ustaw zapytanie UPDATE do bazy z wartością 0 dla pola 'online' i tyle.
W sumie to mam wrażenie, że gdzieś tu jest jakieś małe nieporozumienie i że gdzieś Cię źle zrozumiałem.
//EDIT
a no to teraz wszystko jasne

.
Najlepiej zrób tak jak napisałem, czyli ustaw sobie zmienną sesyjną z wartością 1 dla użytkownika zalogowanego. To zrobisz w dwie minuty, a w przeciwnym wypadku będziesz musiał w bazie założyć pole dla session_id i je też sprawdzać.