Rozdział 19. ♦ Subskrypcje 497
Następnie jest tworzony formularz HTML o strukturze:
<form action='subskrypcje.php' method-'post'>
<input type='text' name=’subject' size='54'>
<textarea name-'contents' cols='40' rows-'10’>
</textarea>
<input type='checkbox' name=' idl'>tezwai<br>
<input type='checkbox' name='id2'>Nazwa2<br>
<input type='checkbox' name='idN’>NazwaN<br>
<input type=lradio' name='action' value=’send' checked>Wyślij <input type='radio' name=’action' va1ue='print’>Wyświetl <input type='submit' value-'Wykonaj'>
</form>
W kodzie do jego formatowania została użyta, pominięta tu, tabela generowana za pomocą znaczników table, tr i td. Formularz będzie wysyłał dane za pomocą metody post do skryptu subskrypcje.php. Ciągi idl, id2 itd. oznaczają identyfikatory poszczególnych subskrypcji, natomiast ciągi Nazwał, Nazwa2 itd. — nazwy poszczególnych subskrypcji. Pole input typu text o nazwie subject będzie służyło do wprowadzania tematu listu rozsyłanego do użytkowników, natomiast pole typu textarea o nazwie contents — do wprowadzania treści listu. Poszczególne pola typu checkbox będą umożliwiały zaznaczenie, jakich subskrypcji ma dotyczyć wiadomość wprowadzona do pól subject i contents.
Po kliknięciu przycisku Wykonaj będzie wykonywane jedno z dwóch zadań, w zależności od tego, które z pól typu radio zostało zaznaczone. Jeśli będzie to pole Wyślij, do prenumeratorów zaznaczonych subskrypcji zostanie wysłana wiadomość wprowadzona do pól subject i contents. Jeśli natomiast będzie to pole Wyświetl, zostanie wygenerowana i wyświetlona lista adresów prenumeratorów zaznaczonych subskrypcji (rysunek 19.5). Użycie drugiej opcji pozwoli np. na wykorzystanie do wysyłania wiadomości zewnętrznego programu pocztowego.
Funkcja sendOrPrint wykonuje jedno z dwóch zadań, w zależności od wartości przekazanego jej argumentu action. Jeśli jest on równy send, wysyła wiadomość otrzymaną przez skrypt do użytkowników wybranych subskrypcji, jeśli natomiast jest on równy print, generuje jedynie listę adresów użytkowników zapisanych na wybrane subskrypcje. Oba wymienione zadania zostały zrealizowane w jednej funkcji, ponieważ wymagają wykonania bardzo podobnych czynności, w szczególności takiego samego zapytania SQL.
Na początku jest wykonywane zapytanie:
SELECT Id FROM Subskrypcje
pobierające z bazy identyfikatory wszystkich subskrypcji. Wyniki tego zapytania są wykorzystywane do sprawdzenia, które z subskrypcji zostały zaznaczone w formularzu. Jeśli bowiem w tablicy $_P0ST znajduje się klucz o nazwie zgodnej z identyfikatorem subskrypcji, oznacza to, że ta subskrypcja została zaznaczona. Ten fakt jest wykorzystywany do skonstruowania ciągu znaków o schematycznej postaci:
idl. id2.....idN