Newsletter: Gestione in Flash

- Letture: 4.547

Una Newsletter è l’insieme di informazioni relative a una macrocategoria periodicamente inviata per posta elettronica, colui che si iscrive riceverà queste informazioni e potrà cancellarsi in qualsiasi momento.

Come creare e gestire una Newsletter in Flash, salvando gli iscritti su un database con la possibilità, qualora l’iscritto voglia, di cancellarsi?

Bella domanda :)

Ovviamente Flash deve appoggiarsi a un linguaggio dinamico esterno, come in questo caso il PHP.

Ecco i file che andremo ad analizzare, e come al solito vi ricordo, che al fondo dell’articolo troverete i file sorgenti:

  • connessione.php connessione al Database
  • newsletter.fla sorgente flash della Newsletter
  • subscribe.php iscrizione dell’utente tramite mail
  • deleted.php  cancellazione dell’utente tramite mail
  • emails.php visualizzazione delle emails totali iscritte
  • debug.txt è un file di testo che noi non dovremo utilizzare, verrà preso in considerazione solo per il debug

Procediamo per ordine:

  • Creiamo la tabella newsletter su un nostro Database MySQL

ecco la query, creo la tabella newsletter con un campo email di tipo varchar di dimensioni 100 per sicurezza

CREATE TABLE `newsletter` (
`email` varchar(100) NOT NULL default '',
PRIMARY KEY (`email`)
)

Creata la tabella nel database andiamo a creare il file di connessione, che ci permetterà di interagire con il database

connessione.php 

$host = 'localhost'; //nome dell'host su cui risiede il database
$user = 'nome utente'; //nome utente con cui connettersi al database
$password = 'password'; //password utente con cui connettersi al database
$database = 'nomedatabase'; //indicare il database cui connettersi
$db = mysql_connect($host, $user, $password) ||die("Impossibile connettersi al server $host");
mysql_select_db($database, $db)||die("Impossibile connettersi al database $database");

Il nome del Database in questo caso è my_juliuswebdesign

  • Ora andiamo ad analizzare il file sorgente della Newsletter

newsletter.fla

primo frame

//per sicurezza cancello tutti i contenuti appena avviato
error = "";
msg = "";
email = "";

Creo un movie clip di nome istanza error per gestire gli errori

//Eseguo Debug sulla mail
onClipEvent (enterFrame) {
if (_root.error == "invalid email") {
_root.msg = "Email non valida";
}
if (_root.error == "invalid email delete") {
_root.msg = "Email non valida";
}
if (_root.error == "email delete") {
_root.msg = "Email Cancellata!";
}
if (_root.error == "duplicate email") {
_root.msg = "Email duplicata";
}
if (_root.status == "ok") {
_root.msg = "Email aggiunta!";
}
}

Sul pulsante Iscriviti
//Invio la mail tramite GET al file subscribe.php
on (release) {
error = "";
loadVariablesNum("subscribe.php?email="+_root.email, 0, "GET");
}

Sul pulsante Cancellati
//Invio la mail tramite GET al file deleted.php per eliminarla
on (release) {
if (email != "") {
loadVariablesNum("deleted.php?email="+_root.email, 0, "GET");
error = "";
email = "";
} else {
msg = "Email non inserita!";
}
}

Andiamo a vedere i files php

Iniziamo con subscrive.php che verificherà l’inserimento corretto della mail e invierà la conferma di iscrizione alla casella postale.

<?php
include('connessione.php');
//controllo se la email è valida
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $_GET["email"]))
{
print "error=invalid email";
die();
}
//mi creo un file di testo per effettuare in seguito il debug
$fp = fopen("debug.txt", "r");
$content = fread($fp, filesize("emails.txt"));
fclose($fp);
if (eregi($email, $content))
{
print "error=duplicate email";
die();
}
$fp = fopen("debug.txt", "a+");
if (fwrite($fp, "".$_GET["email"]."\n"))
print "status=ok";
$email=$_GET["email"];
//inserisco nel database la mail corretta
mysql_query("INSERT INTO newsletter (email) VALUES ('$email')") or die(mysql_error());
//invio un mesaggio ($messaggio) alla casella di posta per confermare l'iscrizione
$messaggio="Grazie per esserti iscritto alla Newsletter di Julius!";
$result = mail( $email, "Iscrizione alla Newsletter", $messaggio );
fclose($fp);
?>

deleted.php cancella la mail inserita dopo aver verificato la validità, avvertendoti di avvenuta cancellazione sulla casella di posta.

<?php
include('connessione.php');
$email=$_GET["email"];
//controllo se la email è valida
if (!eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,3}$", $_GET["email"]))
{
print "error=invalid email delete";
die();
}
print "error=email delete";
//cancello la email passata tramite GET
mysql_query("Delete From newsletter where email ='$email'") or die ("non trovo la tabella");
//invio un mesaggio ($messaggio) alla casella di posta per confermare la cancellazione
$messaggio="Come da te richiesto, sei stato cancellato dalla Newsletter di Julius!";
$result = mail( $email, "Cancellazione alla Newsletter", $messaggio );
?>

Ora per visualizzare tutte le emails iscritte alla Newsletter ci basterà stampare il contenuto della tabella newsltetter all’interno del database.

Notate bene, ce una variabile $tuamail che dovrà essere impostata con una vostra mail, al fine di poter avere un controllo sulla effettiva partenza delle vostre newsletter, inviandoci a noi stessi la stessa.

emails.php

<?php
include('connessione.php');
$tuamail=tuamail@gmail.com; //inserire la propria mail, in questo modo potrai controllare l'effettivo invio delle tue newsletter in quanto le riceverai tu stesso
//Entro nel database nella tabella newsletter e stampo tutte le email in ordine crescente
$risultato=mysql_query("Select* from newsletter ORDER BY `email` ASC ") or die ("non trovo la tabella");
echo"$tuamail";
$numRecord=mysql_num_rows($risultato);
if($numRecord!=0){
while($record=mysql_fetch_array($risultato)){
echo ";".$record['email'].""; //aggiungo una virgola per separare le emails
}
}
?>

Scarica il sorgente
Guarda il Tutorial

Stratega, Docente, Speaker con più di 12 anni di esperienza in strategie creative multicanale. Oggi sono Managing Partner di ThinkingHat, Innovation Studio specializzato in tecnologie emergenti per aziende e brand audaci.

54 Commenti

  1. forumauro

    Ho lo stesso identico problema di Marco eppure sono 5 giorni che ci giro intorno. Mi crea il file db.txt e se lo scarico sul pc e lo apro ci sono dentro le mail registrate però non mi arriva nessuna notifica e se premo su emails.php mi compare

    Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in /web/htdocs/www.dgmassistance.it/home/emails.php on line 4
    non trovo la tabella

  2. non funziona nemmeno a me, il server è giusto ma quando scrivo l’email e invio non mi compare nulla e sul server non scrive niente, scrive solo sul flie debug! AIUTO!!!!!!!!!!!

  3. ciao julius.T devo ringraziare.grazie ai tuoi tutorial sto riuscendo a creare siti carini e soprattutto funzionanti. Però ascolta per la newsletter non capisco una cosa..come la creo la tabella? cioè su questo punto non so proprio neanche da dove cominciare.Mi puoi aiutare? dalla A alla Z..che progamma usare,come fare il file,ecc. Ma solo per la tabella.Poi magari ti posto questi siti cosi mi dici che ne pensi. Grazie mille. E ti prego risp presto…devo finire questo sito per giovedì :-( ancora grazie.

  4. Ciao julius.Sono riuscito a creare la tabella (prima di entrare per la prima volta nella pagina dei database non sapevo neanke cosa volesse dire). Ma comunque non funziona. Sicuramente sto sbagliando qualcosa.Ho inserito cosi come si trovavano i layer del tui progetto nella mia pagina flash. Poi ho inserito nel sito il filmato e la 4 pagine php, delle quali ho modificato solo:
    -connessione.php nel seguente modo

    $host = ‘62.149.xxx.xxx’; //nome dell’host su cui risiede il database
    $user = ‘Sql327xxx’; //nome utente con cui connettersi al database
    $password = ‘b6xxxx13’; //password utente con cui connettersi al database
    $database = ‘Sql327xxx_1’; //indicare il database cui connettersi
    $db = mysql_connect($host, $user, $password) ||die(“Impossibile connettersi al server $host”);
    mysql_select_db($database, $db)||die(“Impossibile connettersi al database $database”);

    -emails.php nel seguente modo (solo le stringhe che ho modificato)

    include(‘connessione.php’);
    $tuamail=”giuliomarrxxxxx@hotmail.it”;
    //Entro nel database nella tabella newsletter e stampo tutte le email in ordine crescente
    $risultato=mysql_query(“Select* from newsletter ORDER BY `email` ASC “) or die (“non trovo la tabella”);
    echo”$giuliomarrxxxxx@hotmail.it”;

    fatto questo pero non mi funziona niente. Accedo alla pagina http://www.miosito.it/emails.php e all’interno della schermata mi spunta tutto il msg d’errore, vado nella newsletter,scrivo l’email da aggiungere e cliccando su iscriviti non succede nulla. Mi puoi dare una mano per favore? grazie mille.

Commenti