498 PHP i MySQL dla każdego
Rysunek 19.5. Lista adresów subskrybentów będąca wynikiem działania funkcji sendOrPrint
który jest zapisywany w zmiennej ids. Przykładowo jeśli zostały zaznaczone subskrypcje o identyfikatorach 1,3, 6, ciąg zapisany w ids przybierze postać:
1. 3. 6
Drugim zadaniem jest pobranie z bazy adresów e-mail użytkowników, którzy zaprenumerowali subskrypcje o identyfikatorach zapisanych w zmiennej ids. Niezbędne będzie w tym celu złączenie tabel Users i SubskrypcjeUzystkownicy w postaci:
SELECT email FROM Users. SubskrypcjeUzytkownicy WHERE Users.Id - SubskrypcjeUzytkownicy.Userld AND
SubskrypcjeUzytkownicy.Subskrypcja Id IN (Sids)
GROUP BY email
Jak widać, wartość zmiennej ids została tu wykorzystana jako część klauzuli IN. Klauzula grupująca GROUP BY emai 1 jest niezbędna, aby adresy użytkowników, którzy zaprenumerowali więcej niż jedną subskrypcję, nie pojawiały się na wielokrotnie na liście.
Adresy będące wynikiem powyższego zapytania są pobierane w pętli whi 1 e, za pomocą funkcji mysql_fetch_row. W przypadku gdy wartością argumentu action jest print, pobrane dane są wyświetlane za pomocą instrukcji echo. W przypadku gdy wartością argumentu action jest send, wiadomość przekazana do skryptu jest wysyłana za pomocą funkcji mai 1. W takim wypadku skrypt oczekuje, że przekazany mu argument subject określa temat wiadomości, natomiast argument contents — treść wiadomości.