« Tecnoclastia | Principale | Social Software: di cosa si tratta? »
11/10/04
Come creare una Newsletter in XHTML con supporto di PHP e MySQL
Anche senza avere molta esperienza di programmazione è possibile creare un'applicazione per newsletter. Vediamo come fare.Perchè una newsletter?
Tutti i programmatori web prima o poi si ritrovano a dover sviluppare una applicazione per newsletter per il sito di un cliente (o per il proprio). Il modello che mostriamo è pensato per coloro che sono alle prime armi e vogliono cominciare a sviluppare qualcosa di utile.
Divideremo il nostro lavoro in 3 parti:
1. Creazione della tabella nel database;
2. Stesura di codice per le pagine di inserimento degli indirizzi nel database;
3. Stesura di codice per l'invio dell'e-mail di news agli indirizzi presenti nel database;
Cominciamo quindi creando la struttura
della tabella che conterrà le e-mail
dei destinatari.
Chiameremo la tabella 'address_book'
CREATE TABLE address_book (
idaddress_book int(11) NOT NULL auto_increment,
email_address varchar(50) NOT NULL default '',
PRIMARY KEY (idaddress_book)
);
Come possiamo notare, abbiamo creato due campi nella tabella: il primo "idaddress_book" conterrà un id univoco relativo all'indirizzo; il secondo è "email_address" che conterra l'indirizzo vero e proprio.
Ora abbiamo la tabella per memorizzare
gli indirizzi di posta elettronica dei destinatari.
Il nostro db è pronto.
Passiamo quindi a scrivere il codice necessario
per l'inserimento delle email.
Prima di tutto ci serve una form xhtml dove
poter scrivere l'indirizzo per poi inserirlo
nel database.
Creiamo un nuovo file e chiamiamolo: 'form_add_addess.php'.
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>News Letters</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h3>Modulo per l'inserimento di indirizzi
e-mail </h3>
<form action="add_address.php" method="post">
<div>Indirizzo e-mail:
<input type="text" name="email_address" />
<input type="submit" value="submit" />
</div>
</form>
</body>
</html>
Passiamo alla scrittura del codice per
inserire l'indirizzo nel db.
Creiamo un nuovo file e chimiamolo 'add_address.php'
<?php
// Effetuiamo la connessione al nostro db
$link = mysql_connect('localhost', 'username', 'password')
or die('Connessione al db fallita.'); // In caso di fallimento visualizza l'errore ed esce
// Selezione del database
mysql_select_db('database_name')
or die('Selezione del database fallita.'); // In caso di fallimento visualizza l'errore ed esce
// Ok abbiamo la connessione facciamo qualche verifica ed eseguiamo la query sql
// Verifichiamo di avere l'indirizzo email
if (isset($_POST['email_address'])) {
if (trim($_POST['email_address'])!='') {
// il campo non è vuoto, proseguo con l'inserimento nel db
$sql = "INSERT INTO address_book (email_address) VALUES('". $_POST['email_address'] ."')";
$res = mysql_query($sql);
if ($res) {
// Inserimento riuscito
} else {
// Si è verificato un errore, controllare la sintassi della query
}
} else {
// Il campo c'è ma è vuoto
}
} else {
// Il contenuto della form non è arrivato, questo può succedere
// se si accede a questa pagina direttamente senza fare il submit da form.php
}
?>
Se siamo arrivati fin qui senza problemi
possiamo cominciare ad inserire tranquillamente
indirizzi e-mail nel database.
Naturalmente può essere implementata
la gestione degli errori nel file add_address.php
per la verifica degli indirizzi e-mail,
ma è una cosa che vedremo in seguito.
Passiamo quindi all'invio della newsletter.
Cominciamo creando la form con i campi
Oggetto, e Testo.
Creiamo un nuovo file e chiamiamolo form_send_news.php
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>News Letters</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h3>Modulo per l'invio di news</h3>
<form action="send_news.php" method="post">
<table>
<tr>
<td>Oggetto</td>
<td><input name="subject" type="text" size="20" /></td>
</tr>
<tr>
<td>Testo:</td>
<td><textarea name="text" cols="20" rows="10"></textarea></td>
</tr>
<tr>
<td> </td>
<td><input type="submit" value="submit" /></td>
</tr>
</table>
</form>
</body>
</html>
Passiamo al file più importante: 'send_news.php'
<?php
$link = mysql_connect('localhost', 'username', 'password')
or die('Connessione al db fallita.');
mysql_select_db('database_name')
or die('Selezione del database fallita.');
// Verifichiamo di avere l'oggetto e il testo dalla form
if (isset($_POST['subject']) && isset($_POST['text'])) {
if (trim($_POST['subject'])!='' && trim($_POST['text'])!='') {
/* Abbiamo tutto quello che ci serve, ora con una query prendiamo
tutti gli indirizzi dal db */
$sql = "SELECT email_address FROM address_book";
$res = mysql_query($sql);
// Impostiamo le intestazione dell'e-mail che stiamo per mandare
$headers = "From: Esempio <esempio@esempio.com>\r\n";
/* Puliamo il testo e l'oggetto dagli slashs messi in automatico
dopo il post dei dati */
$subject = stripslashes($_POST['subject']);
$text = stripslashes($_POST['text']);
/* Cicliamo il risultato della query e assegnamo
l'indirizzo e-mail alla variabile $to */
while (list($to) = mysql_fetch_row($res)) {
/* e ora inviamo la news */
mail($to, $subject, $text, $headers);
}
} else {
// Uno o più campi sono vuoti
}
} else {
/*
Il contenuto della form non è arrivato, questo può succedere
se si accede a questa pagina direttamente senza fare il
submit da form_send_news.php
*/
}
?>
L'applicazione è finita, il codice
php che vi ho presentato è stato
testato e le form xhtml sono state validate
dal w3c.
Certo, ci sarebbe da lavorare ancora un
po' per avere un'applicazione completa:
ad esempio bisognerebbe avere la possibilità
di eliminare e modificare gli indirizzi,
e poi magari creare uno script di autenticazione
per tutta l'applicazione ed un controllo
durante l'inserimento che verifichi se l'indirizzo
email non sià già presente
nel db. Ma ne parleremo nelle prossime settimane.
Inviato da Lorenzo Torello alle 04:23 in Php | Permalink
TrackBack
TrackBack URL per questo post:
http://www.typepad.com/services/trackback/6a00d8341c706653ef00d83478d18c69e2
I blog che linkano questo post: Come creare una Newsletter in XHTML con supporto di PHP e MySQL
Commenti
zsasasasassas
as
asa
s
as
a
sa
s
as
Inviato da: Roberto | 9 maggio 2005 alle 15:50
utilissima questa lezione, sei stato esauriente e bravissimo..complimenti e grazie
Inviato da: elisa | 21 luglio 2006 alle 12:27
Complimenti per la lezione! Una sola nota che non capisco da profano è, come gestire la prima funzione del database 'address_book' bisogna creare un nuovo file e con quale estensione? Grazie e complimenti
Inviato da: Luis | 30 dicembre 2006 alle 15:48
Newsletter
Inviato da: Alessio | 25 luglio 2007 alle 09:45
VALIDATO W3C???
L'attributo "name" è proibito!
Inviato da: Michele | 12 dicembre 2007 alle 13:04
VALIDATO W3C???
L'attributo "name" è proibito!
Inviato da: Michele | 12 dicembre 2007 alle 13:06



