Rozdział 16. ♦ Zarządzanie kontami użytkowników 437
Jeśli wartość argumentu id nie jest ciągiem NULL oraz nie jest pustym ciągiem znaków, oznacza to, że do bazy ma zostać dodany użytkownik, któremu chcemy nadać konkretny identyfikator. W takiej jednak sytuacji musimy się najpierw upewnić, czy ta wartość identyfikatora nie jest już zajęta. Wykonujemy zatem zapytanie SQL:
SELECT COUNT(*) FROM Users WHERE Id = $id
Jeśli uzyskana w wyniku tego zapytania wartość jest większa od zera, oznacza to, że identyfikator jest zajęty; funkcja addUser zwraca zatem USERID_ALREADY_EXISTS i kończy działanie. Jeśli jednak otrzymaną wartością jest 0, można przystąpić do dalszych czynności. W kolejnym kroku sprawdzamy zatem, czy nazwa użytkownika przekazana w parametrze nazwa istnieje w bazie. Jest zatem wykonywane zapytanie:
SELECT C0UNT(*) FROM Users WHERE Nazwa='$nazwa'
Postępowanie jest tu podobne jak w poprzednim przypadku. Jeśli wynikiem zapytania jest wartość różna od zera, oznacza to, że użytkownik o takiej nazwie już istnieje w bazie, a zatem nie można wykonać operacji dodawania. Funkcja addUser zwraca w takim przypadku wartość USERNAME_ALREADY_EXISTS. Jeśli jednak wartością zwróconą jest zero, nowy użytkownik może zostać dodany do bazy.
Dane nowego użytkownika są dodawane do bazy za pomocą instrukcji:
INSERT INTO Users VALUES($id, 'Jnazwa'. 'Jhaslo'. 'Jimie'. 'Jnazwisko'. 'Jemail')
Jeśli wykonanie tego zapytania zakończy się sukcesem, funkcja addUser zwraca wartość RESULT_0K, a w przeciwnym wypadku — wartość DB_QUERY_ERROR.
Funkcja modi fy_user wykonuje modyfikację danych istniejącego użytkownika. Przyjmuje ona takie same argumenty jak funkcja addUser; jej kod jest jednak znacznie uproszczony. Nie jest wykonywana wstępna weryfikacja danych, ale od razu jest wykonywane zapytanie:
UPOATE Users SET Nazwa='Jnazwa'. Hasło-'Jhaslo'. Imie='Jimie'. Nazwisko-'Jnazwisko'. Email-'Jemail' WHERE Id=Jid
Zakładamy, że jeśli dane będą niepełne, serwer po prostu odrzuci zapytanie. Ponieważ w przypadku gdy zapytanie będzie formalnie prawidłowe, funkcja zwraca liczbę zmodyfikowanych rekordów, będziemy też w stanie określić, czy modyfikacja faktycznie nastąpiła. Nic nie stoi jednak na przeszkodzie, aby samodzielnie uzupełnić kod procedury weryfikacyjnej, np. na podstawie treści funkcji addUser.
Skoro gotowe są już funkcje operujące bezpośrednio na bazie danych, możemy przystąpić do budowy głównej części administracyjnej serwisu. Będzie ona realizowana przez skrypt o nazwie user_adm.php. W oknie przeglądarki będą wyświetlane dwa formularze, tak jak zostało to przedstawione na rysunku 16.2. Formularz górny, z przyciskiem Szukaj, umożliwi wyszukanie danych użytkownika o nazwie podanej w polu tekstowym. Formularz dolny pozwoli na wyświetlanie oraz modyfikację danych. Kod skryptu user_adm.php został przedstawiony na listingu 16.5.