Inhalte suchen

Gewinnspiel – Interaktion zwischen Flash – PHP und MySQL

Bei diesem Beispiel handelt es sich um einen Adventskalender, in welchem unter den 24 "Kalendertürchen" je nach Glück ein bis drei Gewinne versteckt sind.

Autor:
Stephan Funke (www.funkeundfunke.de)
Arbeitsmaterial:
download
Schwierigkeit:
Fortgeschritten

ActionScript-Code im ersten Frame der Hauptzeitleiste:

actionscript
//Film anhalten
stop();
//Codepage des Systems aktivieren, um Probleme mit Umlauten zu vermeiden
System.useCodepage = true;
//steuert die automatische Größenänderung und Ausrichtung von Textfeldern
einleitung_txt.autoSize = true;
//Beim Laden(Aktualisieren) der swf wird gesendet auf 0 gesetzt. Diese kommt von der anmelden.php
this.onLoad = function() {
    _root.gesendet = 0;
    //_root.gesendetkopie = 0;
};
//Tabulatoren-Reihenfolge für die beiden Textfelder. Wegen der Benutzerfreundlichkeit
nachname.tabIndex = 1;
email.tabIndex = 2;
//Array für Textfelder erzeugen. Nicht zwingend notwendig, macht aber bei größeren Formularen durchaus Sinn
textfeld = new Array();
textfeld[0] = "nachname";
textfeld[1] = "email";
for (i=0; i<=textfeld.length; i++) {
    this[textfeld[i]].text = "";
}
//Funktionen für den Anmelde-Button
senden_btn.onRelease = function() {
    //Wenn Textfeld nachname leer ist, dann Meldung
    if (nachnametext == "") {
        meldung = "Bitte Namen eingeben";
    }
    //Wenn Textfeld email kein @ oder einen Punkt enthält, , dann Meldung
    if (emailtext.indexOf("@") == -1 || emailtext.indexOf(".") == -1) {
        meldung = "Keine gültige E-Mail angegeben";
    }
    //Wenn Angaben OK sind
    if (emailtext.indexOf("@") != -1 && emailtext.indexOf(".") != -1 && nachnametext != "") {
        //Textfeld meldung wieder leeren        
        meldung = "";
        //Warten bis Anmeldevorgang erledigt ist        
        Ausgabe_mc.ausgabe = "Bitte warten, Anmeldung wird gesendet";
        //Variablen der Anmeldung an anmelden.php senden        
        loadVariablesNum("anmelden.php?"+new Date().getTime(), 0, "POST");
    }
};
//Funktion für einen eventuellen Zurücksetzt-Button
Loeschen_btn.onRelease = function() {
    nachname.text = "";
    email.text = "";
};
//------------------------------------------------------------------
//Ausgabe_mc wieder leeren, sollte sich der User verschrieben haben
this.onEnterFrame = function() {
    //Wenn auf eines der beiden Textfelder erneut geklickt wird    
    nachname.onSetFocus = function() {
        Ausgabe_mc.ausgabe = "";
    };
    email.onSetFocus = function() {
        Ausgabe_mc.ausgabe = "";
    };
};

Nachdem die Felder in der swf-Datei ausgefüllt wurden, werden die Variablen "nachnametext" und "emailtext" an die Datei "anmelden.php" gesendet.

PHP-Code der Datei "var.inc.php":

php

<?php
    // Datenbank Variablen      
    $dbserver   = "localhost";    //Servername
    $dbname     = "Datenbank";//Datenbenkname
    $dbuser     = "admin";//Benutzername
    $dbpass     = "password"; //Passwort
         
         
    $ip = $REMOTE_ADDR; //IP-Adresse
    $browser=$HTTP_USER_AGENT;//Verwendeter Browser
    //Datum ermitteln
    $dat=date("d.m.Y H:i");
    $tag=date("d");
    $monat=date("m");
    $jahr=date("Y");
 
    $sessionid=session_id();
     
    $tabelle = "tutorialgewinn"; //Name der Tabelle
 
    //Verbindung zur Datenbank
$db = mysql_connect($dbserver, $dbuser, $dbpass);
if(!$db){die ("Konnte keine Verbindung zur Datenbank herstellen");}
mysql_select_db("$dbname",$db);
 
?>

PHP-Code der Datei "anmelden.php":

php
<?php
//Es wird eine neue Session gestartet
session_start();
//Dateien einlesen
include('var.inc.php');
//Verbindung zur Datenbank
$db = mysql_connect($dbserver, $dbuser, $dbpass);
 
//Hier kommen die Variablen aus der swf-Datei an
 
//Leerzeichen am Anfang der Variablen entfernen
$nachnametext=ltrim($nachnametext);
$emailtext=ltrim($emailtext);
 
//Wegen der Sicherheit entfernen wir HTML-Tags aus den Textfeldern der swf-Datei
$nachnametext=strip_tags($nachnametext);
$emailtext=strip_tags($emailtext);
 
 
//Variablen jahr mont tag kommen aus der var.inc.php
//Jeder Besucher soll nur einmal pro Tag teilnehmen dürfen, deahalb:
//Generierung der Variablen  $schongespielt zum Abfragen
$schongespielt = $jahr."-".$monat."-".$tag;
echo "\$schongespielt  = $schongespielt <br>";
 
//Überprüfung ob E-Mail Adresse am aktuellen Tag schon in der DB steht#####################################
$sql="Select * FROM $tabelle WHERE email='$emailtext' AND spieltag='$schongespielt' ";
$istda=mysql_query($sql, $db);
$vorhanden = mysql_num_rows($istda);
$zeile=mysql_fetch_array($istda, MYSQL_ASSOC);
//Ergibt vorhanden mehr als 0 Treffer, wurde mit der angegebenen E-Mail Adresse schon gespielt
if($vorhanden!=0)
{//Auf 1
    echo " <b>Sie haben heute schon Ihr Glück probiert.<br>Bitte versuchen Sie es morgen noch einmal.</b><br>";
     
    //Den Versuch der mehrmaligen Anmeldung trotzdem in DB protokollieren, dies ist nicht unbedingt erforderlich
    $sqlversuch="INSERT INTO $tabelle (session, nachname, email,spieltag, eingetragen) VALUES ('$sessionid', '$nachnametext','$emailtext',NOW(), NOW())";
    if(@mysql_query($sqlversuch, $db))
        {//Wenn Eintrag erfolgreich
        echo " Unnoetiger Versuch erfolgreich in DB gespeichert<br>";
        }
         
    //Variable für Flashausgabe generieren und auf 1 setzen. Die Variable $vorhanden finden wir gleich in der fla auf dem MC "Ausgabe_mc" wieder
    $vorhanden=1;
    echo "&vorhanden=$vorhanden&";    
    exit();    
}//Zu 1//Ende if($vorhanden)
 
 
else//Wenn adresse noch nicht am aktuellen Tag in der DB, dann eintragen
{//Auf 2
    $emailadresse=$emailtext;
    //Ausgabe zum Testen
    echo "&emailadresse=$emailadresse&";    
     
    //Eintrag in DB###########################################################
    $sql="INSERT INTO $tabelle (session, nachname, email,spieltag, eingetragen)VALUES
    ('$sessionid', '$nachnametext','$emailtext',NOW(), NOW())"
;
        if(@mysql_query($sql, $db))//Wenn Eintrag erfolgreich
        {
        echo " Eintrag erfolgreich";
        $gesendet=1;
        // Wieder für Flash eine Variable $gesendet erzeugen, diese sorgt dafür, dass unser Movie zum Spiel weiterläuft.
        echo "&gesendet=$gesendet&";
        }//Ende if(@mysql_query($sql, $db))//Wenn Eintrag erfolgreich
         
        // Wenn der Eintrag nicht erfolgreich sein sollte
        else{
        //Testausgabe
        echo "da ist was schief gegangen";
        }
}
 
?>

Es wurden die Variablen "$nachnametext" und "$emailtext" durch die Funktion loadVariablesNum("anmelden.php?"+new Date().getTime(), 0, "POST"); des Buttons "senden_btn" an die Datei "anmelden.php" gesendet. Nach einer Überprüfung, ob mit der gesendeten E-Mail-Adresse am aktuellen Spieltag nicht schon gespielt wurde, wird diese mit dem Namen des Users in die Tabelle "tutorialgewinn" der Datenbank eingetragen.

Für unser Flash-Movie werden die Variablen "$vorhanden" und "$gesendet" generiert und zum weiteren Verlauf an dieses gesendet.

Mit diesen beiden Variablen werden wir wie folgt weiterarbeiten:

Zurück im ersten Frame der fla wartet hier unser MC "Ausgabe_mc" mit den Ergebnissen der beiden Variablen.

ActionScript-Code auf dem MC "Ausgabe_mc" :

actionscript
onClipEvent (enterFrame) {
    //Variable vorhanden empfangen und
    //Wenn mit der E-Mail Adresse am aktuellen Tag schon gespielt wurde, Meldung ausgeben
    if (_root.vorhanden == 1) {
        ausgabe = "<b>Mit dieser E-Mail Adresse haben Sie heute schon Ihr Glück probiert. Bitte versuchen Sie es morgen noch einmal.</b>";
        //Anschließend Variable für eventuelle neue Versuche wieder auf Null setzten
        _root.vorhanden = 0;
    }
    //gesendet ist die Variable, die PHP sendet, das
    //der Eintrag in der DB erfolgreich war
    if (_root.gesendet == 1) {
        //Diese Ausgabe ist eine Variante, in unserem Fall aber nicht sichtbar
        ausgabe = "Ihre Anmeldung wurde an das System weitergeleitet.";
        _root.gesendet = 0;
        this._parent.nachname.text = "";
        this._parent.email.text = "";
        //da es zum Spielen gleich weiter geht
        this._parent.gotoAndPlay(2);
    }
}

Wir befinden uns nun im dritten Frame der fla. Hier finden wir nun unser eigentliches Gewinnspiel.

Auf der Ebene "Zahlen" befinden sich unsere 24 MCs, die wie folgt erstellt werden:

1. eine Nummer in ein Textfeld schreiben.

2. F8 drücken und in einen MC umwandeln, Name btn1

3. Instanznamen vergeben, hier " btn1"

4. Doppelklick auf "btn1", und die Ebene mit der Zahl der Ordnung halber in "zahlen" umbenennen. Nun in Frame 2 von MC "btn1" mit F6 ein weiteres Schlüssesbild einfügen und die Zahl einfärben. Dies geschieht aber nur zur besseren Optik, nicht unbedingt notwendig.

5. Zurück im ersten Frame, legen wir eine Ebene "Bild" an und ziehen diese unter Ebene "Zahlen". Hier fügen wir nun in Frame 2 und 3 Bilder für Niete oder Treffer ein.

6. Schließlich benennen wir noch eine neue oberste Ebene mit AS, setzen hier in Frame 1 bis 3 je ein Schlüsselbild und vergeben jeweils eine Bildbezeichnung. Für Frame 1 "start", für 2 "nix" und für 3 "treffer". Alle drei Schlüsselbilder enthalten noch eine "stop()" Anweisung.

Den MC "btn1" duplizieren wir in der Bibliothek nun 23 mal, nennen diese fortlaufend btn2…btn24, schreiben entsprechende Zahlen in die MCs und ziehen alle in der Hauptzeitleiste in Frame 3 auf die Ebene "Zahlen". Nun noch entsprechend der Nummern die Instanznamen vergeben "btn1" .. "btn24".

Nun schreiben wir auf jeden der 24 MCs noch folgende kurze Anweisung:

ActionScript-Code für die 24 MC's "btn1" .. "btn24" :

actionscript
// Beispielcode für MC "btn24"
on (release) {
        _root.zahl = 24;
}

Natürlich kann man die Erzeugung auch mit createEmptyMovieClip() machen, würde aber hier jetzt zu weit führen. Außerdem handelt es sich hier ja um eine Datei, die sich vom Aufbau her so schnell nicht ändert (zumindest so lange, wie es Adventskalender von 1 bis 24 gibt), von daher nicht unbedingt dynamisch sein muss.

Weitere Elemente im dritten Frame der Hauptzeitleiste sind:

- MovieClip mit Instanznamen "KeinGewinn_mc" --> zum Anzeigen, wenn kein Gewinn geklickt wurde.
- MovieClip mit Instanznamen "controler_mc" --> dieser unterscheidet zwischen gewonnen und nicht gewonnen.
- 1 Textfeld mit Instanznamen "okgeladen" --> zur Kontrolle der geladenen Zufallszahlen (Gewinnzahlen)
- MovieClip mit Instanznamen "versuch_mc" --> dieser Zählt die Klicks auf unsere 24 Mcs
- MovieClip mit Instanznamen "treffer_mc" --> zählt die eventuell richtigen Treffer.
- MovieClip mit Instanznamen "ergebnis_mc" --> gibt nach Beendigung die Zahlen aus, die zum Erfolg geführt hätten.
- MovieClip mit Instanznamen "mctreffertext_mc" --> zum Anzeigen/Zwischenspeichern der aktuellen Anzahl von Treffern.
- Drei Textfelder "zahl1", "zahl2" und "zahl3" zum Testen unserer Datei. Diese nicht mit veröffentlichen, sonst gibt es 100% Gewinne.


Weiterhin haben wir in der Bibliothek einen MC "Glueckwunsch_mc", der im Glücksfall mittels this._parent.attachMovie("Glueckwunsch_mc", "Glueckwunsch_mc2",3); auf die Bühne gezaubert wird.

Angekommen in Frame 3, wird mittels lesen.load("zufall.php?"+new Date().getTime(), this); die Datei "zufall.php" aufgerufen, um die drei Gewinnzahlen zu ermitteln:

PHP-Code der Datei "zufall.php":

php
<?php
//Session fortführen
session_start();
//Dateien einlesen
include('var.inc.php');
//Verbindung zur Datenbank
$db = mysql_connect($dbserver, $dbuser, $dbpass);
 
//Neuestes Login ermitteln
//Nötig, da ein User sich innerhalb einer Sitzung mit meheren E-Mail Adressen anmelden kann.
$sqlneu="Select * FROM $tabelle WHERE session='$sessionid' ORDER BY id DESC LIMIT 0,1 ";
$istneu=mysql_query($sqlneu, $db);
$zeileneu=mysql_fetch_array($istneu, MYSQL_ASSOC);
 
//Überprüfung der drei Gewinnzahlen an Hand der Aktuellen Session, ob schon mal gespielt wurde
//damit keine der drei vorherigen Zufallszahlen beim nächsten Aufruf wieder gezogen wird.
//Dies ist bei nur 24 Zahlen sonst durchaus schnell möglich
$sql="Select * FROM $tabelle WHERE session='$sessionid' AND z1>0 ORDER BY id DESC LIMIT 0,1 ";
$istda=mysql_query($sql, $db);
$zeile=mysql_fetch_array($istda, MYSQL_ASSOC);
 
//Wenn aktuell schon Zahlen gezogen wurden
    if($zeile[z1] > 0){
        // alte Zahlen ermitteln
        $sd1 = $zeile[z1];
        $sd2 = $zeile[z2];
        $sd3 = $zeile[z3];
         
        //Array mit den alten Zahlen füttern
        $array1 = array($sd1, $sd2, $sd3);
         
        //Hier werden neue Gewinnzahlen aus einem Array ermittelt
        $array2 = range(1,24);
        shuffle($array2);
         
        //Eventuelle Unterschiede der beiden Arrays vergleichen
        $result = array_diff ($array2, $array1);
         
        //Weiteres Array mit den neuen Gewinnzahlen füttern
        $array3=array_merge($result);
         
        //Variablen mit den drei Gewinnzahlen erstellen
        $gz1 = $array3[0];
        $gz2 = $array3[1];
        $gz3 = $array3[2];
         
        //Gewinnzahlen in den aktuellen Datensatz der DB schreiben
            $sqleintrag="UPDATE $tabelle SET z1='$gz1', z2='$gz2', z3='$gz3' WHERE id='$zeileneu[id]' ";
            if(@mysql_query($sqleintrag, $db)){
            echo "Eintrag erfolgreich<br>";    
            }
         
    }//Ende => if($zeile[z1] == 0)
     
    //Wenn noch keine Zahlen zuvor gezogen wurden
    else{
     
    //Dann einfach ein Array erzeugen
        $array = range(1,24);
        shuffle($array);
             
        $gz1 = $array[0];
        $gz2 = $array[1];
        $gz3 = $array[2];
         
        //Gewinnzahlen in den aktuellen Datensatz der DB schreiben
            $sqleintrag="UPDATE $tabelle SET z1='$gz1', z2='$gz2', z3='$gz3' WHERE id='$zeileneu[id]' ";
            if(@mysql_query($sqleintrag, $db)){
            echo "Eintrag erfolgreich";    
            }
         
    }
//Variablen für Flash generieren , <br>-Tag ist nur zum Testen
echo "&gz1=$gz1& <br>";
echo "&gz2=$gz2& <br>";
echo "&gz3=$gz3& <br>";
?>

Nun werden die drei Gewinnzahlen von unserer fla-Datei in Frame 3 der Hauptzeitleiste empfangen:

ActionScript-Code im dritten Frame der Hauptzeitleiste:

actionscript
//Film anhalten
stop();
//Codepage des Systems aktivieren, um Probleme mit Umlauten zu vermeiden
System.useCodepage = true;
//GewinnZahlen ermitteln
lesen = new LoadVars();
//Die Datei zufall.php beauftragen, neue Gewinnzahlen zu ermitteln
lesen.load("zufall.php?"+new Date().getTime(), this);
lesen.onLoad = function(geladen) {
    //Kontrolle des Ladevorgangs der Variablen
    if (geladen) {
        okgeladen.htmlText = "Viel Glück";
        //Die drei Gewinnzahlen zum Späteren anzeigen in Textfeld "gz" innerhalb des MC "ergebnis_mc" ausgeben.
        zahl1.text = lesen.gz1;
        zahl2.text = lesen.gz2;
        zahl3.text = lesen.gz3;
        ergebnis_mc.gz.text = "Gewinnzahlen waren:\n"+lesen.gz1+" - "+lesen.gz2+" - "+lesen.gz3;
    } else {
        //Falls bei der Verbindung etwas nicht schief gelaufen ist
        okgeladen.htmlText = "<b>Fehler aufgetreten!</b>";
    }
};
 
 
 
// Prototype Array-Suche
var tueren:Array = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24);
 
//Für die zufällige Anordnung der 24 MC's auf der Bühne
Array.prototype.randomize = function() {
    return this.sort(function (a, b) {
        return (Math.floor(Math.random()*2) == 0) ? 1 : -1;
    });
};
tueren.randomize();
 
//Platzierung der MC's auf der Bühne
mc1 = "btn"+tueren[0];
this[mc1]._x = 0;
this[mc1]._y = 0;
mc2 = "btn"+tueren[1];
this[mc2]._x = 95;
this[mc2]._y = 0;
mc3 = "btn"+tueren[2];
this[mc3]._x = 190;
this[mc3]._y = 0;
mc4 = "btn"+tueren[3];
this[mc4]._x = 285;
this[mc4]._y = 0;
mc5 = "btn"+tueren[4];
this[mc5]._x = 0;
this[mc5]._y = 65;
mc6 = "btn"+tueren[5];
this[mc6]._x = 95;
this[mc6]._y = 65;
mc7 = "btn"+tueren[6];
this[mc7]._x = 190;
this[mc7]._y = 65;
mc8 = "btn"+tueren[7];
this[mc8]._x = 285;
this[mc8]._y = 65;
mc9 = "btn"+tueren[8];
this[mc9]._x = 0;
this[mc9]._y = 130;
mc10 = "btn"+tueren[9];
this[mc10]._x = 95;
this[mc10]._y = 130;
mc11 = "btn"+tueren[10];
this[mc11]._x = 190;
this[mc11]._y = 130;
mc12 = "btn"+tueren[11];
this[mc12]._x = 285;
this[mc12]._y = 130;
mc13 = "btn"+tueren[12];
this[mc13]._x = 0;
this[mc13]._y = 195;
mc14 = "btn"+tueren[13];
this[mc14]._x = 95;
this[mc14]._y = 195;
mc15 = "btn"+tueren[14];
this[mc15]._x = 190;
this[mc15]._y = 195;
mc16 = "btn"+tueren[15];
this[mc16]._x = 285;
this[mc16]._y = 195;
mc17 = "btn"+tueren[16];
this[mc17]._x = 0;
this[mc17]._y = 260;
mc18 = "btn"+tueren[17];
this[mc18]._x = 95;
this[mc18]._y = 260;
mc19 = "btn"+tueren[18];
this[mc19]._x = 190;
this[mc19]._y = 260;
mc20 = "btn"+tueren[19];
this[mc20]._x = 285;
this[mc20]._y = 260;
mc21 = "btn"+tueren[20];
this[mc21]._x = 0;
this[mc21]._y = 325;
mc22 = "btn"+tueren[21];
this[mc22]._x = 95;
this[mc22]._y = 325;
mc23 = "btn"+tueren[22];
this[mc23]._x = 190;
this[mc23]._y = 325;
mc24 = "btn"+tueren[23];
this[mc24]._x = 285;
this[mc24]._y = 325;
 
 
_root.zahl = "";
_root.versuch = 0;
_root.treffer = 0;
 
//Jedem der 24 Button Funktionen hinzufügen
this.onEnterFrame = function() {
    for (i=1; i<=24; i++) {
        this["btn"+i].onRelease = function() {
            //den Zaehler erhöhen
            _root.versuch++;
            //Vergleichen ob die aktuell gedrückte Zahl mit einer Zahl aus zufall.php übereinstimmt
            if (lesen.gz1 == _root.zahl || lesen.gz2 == _root.zahl || lesen.gz3 == _root.zahl) {
                //Bei Rrfolg, dies im btnXX MC durch Sprung auf Bildbezeichner anzeigen
                this.gotoAndStop("treffer");
                //Anzahl der Gesamttreffer erhöhen
                _root.treffer++;
                //Anzahl der Treffer in Textfeld ausgeben
                mctreffertext_mc.text = _root.treffer;
            } else {
                //Bei Niete innerhalb des MC's auf Schlüsselbild mit Bezeichner "nix" springen
                this.gotoAndStop("nix");
            }
        };
    }
    //Wenn drei mal gehlickt wurde
    if (_root.versuch == 3) {
        //den bisher unsichtbaren MC durch _y Änderung auf der Bühne anzeigen
        ergebnis_mc._y = 440;
        //Meldung ausgeben
        okgeladen.htmlText = "<b>Spiel beendet</b>";
        //Und ein weiterspielen verhindern
        for (i=1; i<=24; i++) {
            this["btn"+i].enabled = false;
        }
        delete this.onEnterFrame;
    }
};

Die geklickten Versuche zählen und ausgeben:

ActionScript-Code auf dem MC "versuch_mc" :

actionscript
onClipEvent (enterFrame) {
    versuch = "Versuche: "+_root.versuch;
}

ActionScript-Code auf dem MC " treffer_mc" :

actionscript
onClipEvent (enterFrame) {
treffer = "Gewonnene Tassen: "+_root.treffer;
}

Nun die Kontrolle, ob mindestens ein Treffer dabei war oder alle Versuche nichts ergaben:

ActionScript-Code auf dem MC "controler_mc" :

actionscript
onClipEvent (load) {
    //Variable als Schalter setzen, um schon vorhandenen Glückwunsch MC zu aktualisieren
    _root.movieholen = 0;
}
onClipEvent (enterFrame) {
    //Wenn mindestens ein Treffer dabei war und alle 3 Versuche verbraucht sind
    if (_root.treffer>0 && _root.versuch == 3) {
        if (_root.movieholen == 0) {
            //Glückwunsch MC aus der Bibliothek auf die Bühnen holen
            this._parent.attachMovie("Glueckwunsch_mc", "Glueckwunsch_mc2", 3);
            //und positionieren
            this._parent.Glueckwunsch_mc2._x = 0;
            this._parent.Glueckwunsch_mc2._y = 0;
            //Schalter auf bestzt legen
            _root.movieholen = 1;
        }
    }
    //Wenn kein Treffer erlangt wurde und alle drei Versuche vorbei sind, dann den MC KeinGewinn auf der Bühne durch verschieben der _x-Position anzeigen
    //Dies würde natürlich auch mit attachMovie wie oben gehen
    if (_root.treffer == 0 && _root.versuch == 3) {
        this._parent.KeinGewinn_mc._x = 0;
    }
}

Im Falle eines Gewinns geht es wie folgt weiter:

Der MC "Glueckwunsch_mc" ist nun auf der Bühne und hat folgendes Script im ersten Frame seiner Zeitleiste:

ActionScript-Code im MC "Glueckwunsch_mc" :

actionscript
trefferanzahl = _root.treffer;
//Die Anzahl der Treffer wird an die gewinnsenden.php gesendet
loadVariablesNum("gewinnsenden.php?"+new Date().getTime(), 0, "POST");

Nun kommt die Datei "gewinnsenden.php" ins Spiel. Hier wird die Bestätigungsmail an den User gesendet und die Anzahl der Treffer in der DB gespeichert. Die Session ID bekommt der User als Code-ID in der Mail mitgeteilt, damit wir diese nach Erhalt einer Antwortmail mit dem Eintrag in der DB vergleichen können.

PHP-Code der Datei "gewinnsenden.php":

php
<?php
//Session fortführen
session_start();
//Dateien einlesen
include('var.inc.php');
//Verbindung zur Datenbank
$db = mysql_connect($dbserver, $dbuser, $dbpass);
 
//Aktuellen Spieler aus der Tabelle holen#####################################
$sql="Select * FROM $tabelle WHERE session='$sessionid' ORDER BY id DESC LIMIT 0,1 ";
$istda=mysql_query($sql, $db);
$vorhanden = mysql_num_rows($istda);
$zeile=mysql_fetch_array($istda, MYSQL_ASSOC);
    if($vorhanden!=0)
    {//Auf 1
        //Zum Testen Ausgabe
        echo " <b>Hier die E-Mail Adresse<br>$zeile[email]</b><br>";
         
        //Anzahl der gewonnenen Tassen in DB eintragen, hier die Variable trefferanzahl aus dem Glueckwunsch_MC
        $sqleintrag="UPDATE $tabelle SET treffer='$trefferanzahl' WHERE id='$zeile[id]' ";
            if(@mysql_query($sqleintrag, $db)){
            echo "Anzahl gewonnener Tassen in DB gespeichert";    
         
        //Variable gewinnmail erzeugen und auf 1 setzen
        $gewinnmail=1;
         
        //Variable für Flashausgabe generieren
        echo "&gewinnmail=$gewinnmail&";
         
        //Weitere Daten aus der Datenbank holen
        $emailadresse=$zeile[email];
        $teilnehmer=$zeile[nachname];
        $sitzung = $zeile[session];
             
        $anzahl = $trefferanzahl;
        //Variable für Flashausgabe generieren
        echo "&anzahl=$anzahl&";    
 
//Eigene Mail Adresse
    $mymail="info@domain.de";
    $date=date("d.m.Y H:i");
    $betreff="Tassen-Advent-Gewinn ";    
     
//Versand der Mail an den User            
if(@mail($emailadresse, "$betreff","
Sehr geehrte(r) Frau/Herr $teilnehmer,
herzlichen Glückwunsch.
Sie haben am $date Uhr beim Adventskalender von domain.de gewonnen.
Anzahl gewonnener Tassen: $anzahl Stück.
code: $sitzung
Diesen Code bitte auf keinen Fall entfernen, oder ändern. Eine Gewinnauszahlung ist sonst nicht möglich.
 
 
 
***********    
Bitte senden Sie diese E-Mail an uns mit Ihrer Anschrift und Ihrem Namen zurück,
damit wir Ihnen Ihre Tassen auch zusenden können.
***********
Wir wünschen Ihnen noch eine angenehme Weihnachtszeit und verbleiben
mit freundlichen Grüßen
Ihr Team vom Tassen-Gewinn.
http://www.domain.de
info@domain.de
         
"
,"From:Team Tassen<$mymail>")){
 
//Wenn Mail erfolgreich gesendet, dann Vars für Flash generieren    
echo "&emailadresse=$emailadresse&";    
//echo "&anzahl=$anzahl&";    
//Ende Mail ###########                                
}
else{
echo "leider ist ein Fehler beim Mailversand-aufgetreten";
}          
            }                
        exit();    
    }//Zu 1//Ende if($vorhanden)    
?>

Als Letztes wollen wir in unserer swf ja noch eine Ausgabe für den glücklichen Gewinner erzeugen. Hier kommen wir wieder zu unserem "Glueckwunsch_mc". In diesem ist ein weiterer MC namens "gewinnKontrolle_mc". Dieser reagiert, sobald er die oben erzeugte Variable "gewinnmail" mit dem Wert 1 erhalten hat. Ein in ihm befindliches Textfeld sorgt für die entsprechende Ausgabe.

ActionScript-Code auf dem MC "gewinnKontrolle_mc" :

php
onClipEvent (enterFrame) {
//Die aus gewinnsenden.php erhaltene Variable    
    if (_root.gewinnmail == 1) {
        //Ausgabe im Textfeld mail_txt
        this.mail_txt.htmlText = "<b>Herzlichen Glückwunsch!<br>Sie haben gewonnen!</b><br>Gewonnene Tassen: "+ _root.anzahl+" Stück<br><br>Sie haben an <b>"+_root.emailadresse+"</b> eine Gewinnmitteilung erhalten. Bitte senden Sie diese mit Ihrer Anschrift und Ihrem Namen an uns zurück, damit wir Ihnen Ihren Gewinn auch zusenden können.<br><br>Vielen Dank fürs Mitspielen und noch viel Spaß auf Domain.de";
// Zur nächsten Aktualisierung wieder auf 0 setzen        
        _root.gewinnmail = 0;
    }
}

Das war's. Unser kleines Gewinnspiel sollte nun eigentlich funktionieren. Natürlich kann man durch Optimierungen in den AS- und PHP-Scripten noch einiges an Code kürzen, aber dies ist eine andere Geschichte …

Um zu kommentieren musst Du eingeloggt sein.

No comments
film izle video seyret world news muzik dinle komik resimler