Skip to content

Ein Wirtschaftsspiel im Intranet

 
Winfried Klein, Kaufmännische Schule Albstadt

Bei der Erstellung datenbankgestützter Webseiten müssen im wesentlichen zwei Vorgänge betrachtet werden. Zum einen werden, wie im Katalogbeispiel des letzen Artikels, Daten aus einer Datenbank als Inhalte in Webseiten dargestellt, zum anderen werden über Formulare eingegeben Daten in eine Datenbank geschrieben. _ Im folgenden Beispiel werden von den Mitspielern eines Wirtschaftsspiels eingegebene Daten in einer Datenbank gesammelt und können von dort ausgewertet werden.

Die Spielidee stammt aus der Wochenzeitschrift DIE ZEIT und wurde von deren Wirtschaftsredaktion im November 2000 durchgeführt. Die Teilnehmer konnten ihren Tipp allerdings nur per Postkarte oder E-Mail abgegeben. _ Die Regeln des Spieles sind einfach:

Jeder Mitspieler wählt eine Zahl zwischen Null und Hundert und sendet diese über ein Formular auf einer Webseite an eine Datenbank. Nach dem letzten Spieltag wird der Durchschnitt aller eingesandten Zahlen errechnet. Wer am nächsten bei zwei Dritteln des Durchschnitts liegt, hat gewonnen.

An der Kaufmännischen Schule in Albstadt wird im Mai 2001 mit diesem Spiel der neue Windows 2000-Applikationsserver seinen Einstand feiern.

Auf der Portalseite unseres Intranetwebservers wird es einen Link zu folgender Webseite geben, auf welcher das Spiel kurz erklärt wird und die Teilnehmer gleichzeitig ihren Tipp abgeben können.
 

Die der MySQL-Datenbank zugrunde liegende Tabelle teilnehmer besitzt die folgenden Datenfelder, wobei das Absendedatum automatisch generiert wird.
 
 
 

Feldname Datentyp Bezeichnung
klasse Text Klasse des Teilnehmers
vorname Text sein Vorname
name Text und Nachname
zahl Zahl getippte Zahl
datum Datum Absendedatum

Mit Hilfe des MySQL-Monitors c:\mysql\bin\mysql kann am MySQL-Prompt die Datenbank erzeugt und die Tabellenstruktur angelegt werden.
 

· Datenbank erzeugen create database ksa_spiel;
· Datenbank benutzen use ksa_spiel;
· Tabelle erzeugen create table teilnehmer
( klasse char(5),
vorname char(16),
name char(24),
zahl double(4,2),
datum date );

Möchte man verhindern, dass ein Mitglied der Schule mehrmals (unter seinem richtigen Namen) am Spiel teilnimmt, müssen die Felder klasse, vorname und name zu einem Primärschlüssel zusammen-gefasst werden. _ In einer MySQL-Tabelle müssen alle Felder eines Primärschlüssels als NOT NULL definiert sein, in unserem Spiel also:
 

· klasse
 
alter table teilnehmer change klasse klasse char(5) not null;
· vorname alter table teilnehmer change vorname vorname char(16) not null;
· name
 
alter table teilnehmer change name name char(24) not null;

Nun erst kann der gewünschte Primärschlüssel deklariert werden.

alter table teilnehmer add primary key (klasse, vorname, name);

Der nachstehende Quellcode zeigt die Gewinnspielseite wspiel.htm. Die Definitionen der benutzten StyleSheets wurden weggelassen, die Textpassagen werden durch Punkte dargestellt.

wspiel.htm

<HTML>

    <HEAD>

        <TITLE> Wirtschaftsspiel der Netzbetreuung KSA</TITLE>

    </HEAD>

    <BODY bgcolor="lightblue">

            <H1 align="center">!?! KSA - Wirtschaftsspiel ?!?

                </H1>

            <TABLE border=1 align="center" cellpadding=20>

                <TR>

                    <TD width=50%>

                    . . . .

                    </TD>

                    <TD align="center" width=50%>

                        <FORM name="eingabe" action="db_wspiel.php" method="post">Klasse&nbsp;

                            <INPUT name="klasse" type="text" size=5 maxlength=5>

                            Vorname

                            Name

                            <INPUT name="vorname" type="text" size=16 maxlength=16>
 
                            <INPUT name="name" type="text" size=16 maxlength=24>

                            <FONT color="red">Zahl?</FONT>

                            <INPUT name="zahl" type="text" size=4 maxlength=4>

                            <INPUT type="submit" value="Absenden!">

                            <INPUT type="reset" value="Löschen">

                        </FORM>

                    </TD>

                </TR>
 
                <TR>

                    <TD colspan=2>

                    . . . .

                    </TD>

                </TR>

            </TABLE>

        </BODY>

</HTML>

Wichtig sind die Parameter im Start-Tag des Formulars. Die Methode post sendet den Inhalt der Eingabefelder über eine namensgleiche Variable an die im Parameter action angegebene Seite. _ Auf dieser Seite db_wspiel.php stehen das für das Auslesen in die Datenbank notwendige PHP-Skript.

db_wspiel.php

<HTML>

    <BODY bgcolor="lightblue">

        <SCRIPT language="PHP">

            $adatum=date("Y-m-d");

            $db=mysql_connect();

            $sqlab ="insert teilnehmer

                klasse,vorname,name,zahl,datum)";

            $sqlab.="values

            (`$klasse','$vorname','$name',$zahl,'$adatum')";

                $result=mysql_db_query("ksa_spiel", $sqlab);

                mysql_close($db);

                echo "<H4 align='center'>";

                if ($result)

                {     echo "Ihre Daten wurden erfolgreich gespei chert!";}

                else

                {       echo "Leider konnten Ihre Daten nicht gespei chert werden!";

                        echo "<BR>";

                        echo "Haben Sie schon einmal an unserem Spiel teilgenommen?";}

                echo "<BR><BR>";

                echo "<A href='wspiel.htm'>Z U R Ü C K</A>";

                echo "</H4>";

        </SCRIPT>

    </BODY>

</HTML>

Nach dem Belegen der Variablen $adatum mit dem aktuellen Datum im benötigten Format wird mit Hilfe der SQL-Anweisung insert ein Datensatz in die Datenbank geschrieben. Als Werte dienen dabei die Inhalte der von der Spielseite übergebenen Variablen. _ Eine einfache Fehlerroutine benachrichtigt zum Schluss mit Hilfe der boolschen Variablen $result den Spielteilnehmer, ob seine Daten erfolgreich gespeichert wurden oder ob dies nicht möglich war, da er z.B. versucht mehrfach am Spiel teilzunehmen.

Zur Auswertung des Spieles können die Daten mit Hilfe der ODBC-Schnittstelle und MS-Access in eine Excel-Mappe exportiert und dort (auch grafisch) dargestellt werden.
 

Alle für das Spiel benötigten Dateien können in einem Archiv mit dem Namen wspiel.zip vom FTP-Server der Kaufmännischen Schule Albstadt unter ftp://ftp.ksa.bl.bw.schule.de/download/news13 heruntergeladen werden.

Die in diesem Archiv vorhandenen Dateien teilnehmer.* enthalten die MySQL-Datenbank und müssen in ein Verzeichnis ksa_spiel unter c:\mysql\data kopiert werden. Alle anderen Dateien in das Dokumentenverzeichnis c:\apache\htdocs des Apache-WebServers. Der Aufruf der WebSite erfolgt dann z.B. über http://localhost/wspiel.htm. - Falls es in einer Testumgebung Probleme mit dem Aufruf der Seiten unter dem Netscape Communicator v4.7x gibt, einfach den Internet Explorer ab Version 5.x benutzen.

Die im Archiv vorhandene Datei wspiel1.htm enthält zusätzlich noch Plausibilitätsbetrachtungen zu den Eingaben der Teilnehmer. - Selbstverständlich könnte über eine aus der Schulverwaltung stammende Datenbank geprüft werden, ob ein Schüler mit dem eingegebenen Namen an der Schule unterrichtet wird.

Was hat dieses Spiel mit den Aktienmärkten zu tun? Mehr Informationen sowie ein Diskussionsforum gibt es auf den Internetseiten der ZEIT unter http://www.die-zeit.de. Die Artikel findet man am leichtesten, wenn in der siteeigenen Suchmaschine "Wirtschaftsspiel" eingegeben wird.