summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorJan Klemkow <j.klemkow@wemelug.de>2012-11-22 09:19:22 +0100
committerBenjamin Franzke <benjaminfranzke@googlemail.com>2013-01-24 12:30:09 +0100
commit370168684765919be5da44851060e641fd502dfc (patch)
tree71dd4aea9fb3679921d3f0f7a52615f871718982 /doc
parentbde079b899066bec3b89b3ac659bec00a73afe8c (diff)
downloadsqltutor-plugin-370168684765919be5da44851060e641fd502dfc.tar.gz
sqltutor-plugin-370168684765919be5da44851060e641fd502dfc.tar.bz2
sqltutor-plugin-370168684765919be5da44851060e641fd502dfc.zip
Add documentation and perl/php code from niels diploma.
Diffstat (limited to 'doc')
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/LIST/parse-exel.pl38
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/adminfuncs.php190
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/edit_lesson.php159
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/get_user.php158
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/lesson_admin.php178
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/upload.php25
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/admin/user_admin.php406
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/connect.php43
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/Benutzer.gifbin0 -> 911 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/HS.gifbin0 -> 3781 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/KAPV.pdfbin0 -> 148887 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/_basic.css121
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/abgeschlossen.gifbin0 -> 404 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/abstract.gifbin0 -> 336 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/balken_gelb.gifbin0 -> 36 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/balken_gruen.gifbin0 -> 36 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/balken_orange.gifbin0 -> 36 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/balken_rot.gifbin0 -> 36 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/ekg.gifbin0 -> 375 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/ekg_Login.gifbin0 -> 346 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/ekg_long.gifbin0 -> 345 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/faq_logo.gifbin0 -> 898 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/head.gifbin0 -> 10883 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/inhalt.gifbin0 -> 290 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/kapv.gifbin0 -> 55491 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/nach-oben.gifbin0 -> 525 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/navigation.gifbin0 -> 375 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/oracle.gifbin0 -> 1277 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/stilneu1.css124
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/css/user.gifbin0 -> 1561 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/footer.php9
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/header.php233
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/help/ORACLE_SQL.pdfbin0 -> 113739 bytes
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/help/help.php39
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/kapv.php92
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/lessons/errror_tests.php52
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/lessons/lessoni.php229
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/lessons/lessonstart.php183
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/lessons/showlessons.php163
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/lessons/try.php1145
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/links.php62
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/logout/bye.php69
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/logout/save.php15
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/nosession.php36
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/portal/portal.php44
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/praktikum.php121
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/results/admin_result.php489
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/results/statistic.php211
-rwxr-xr-xdoc/niels-diplom/Dateistruktur/results/user_result.php187
-rwxr-xr-xdoc/niels-diplom/dipl.pdfbin0 -> 11993386 bytes
50 files changed, 4821 insertions, 0 deletions
diff --git a/doc/niels-diplom/Dateistruktur/admin/LIST/parse-exel.pl b/doc/niels-diplom/Dateistruktur/admin/LIST/parse-exel.pl
new file mode 100755
index 0000000..1574c0d
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/LIST/parse-exel.pl
@@ -0,0 +1,38 @@
+#!/usr/bin/perl -w
+
+use strict;
+use Spreadsheet::ParseExcel;
+
+my $oExcel = new Spreadsheet::ParseExcel;
+
+die "Bitte eine EXCEL-DATEI als $0 angeben!" unless @ARGV;
+
+my $oBook = $oExcel->Parse($ARGV[0]);
+my($iR, $iC, $oWkS, $oWkC);
+
+#print "FILE :", $oBook->{File} , "\n";
+#print "COUNT :", $oBook->{SheetCount} , "\n";
+#print "AUTHOR:", $oBook->{Author} , "\n"
+
+#if defined $oBook->{Author};
+
+for(my $iSheet=0; $iSheet < $oBook->{SheetCount} ; $iSheet++)
+{
+ $oWkS = $oBook->{Worksheet}[$iSheet];
+ #print "--------- SHEET:", $oWkS->{Name}, "\n";
+ for(my $iR = $oWkS->{MinRow} ;
+ defined $oWkS->{MaxRow} && $iR <= $oWkS->{MaxRow} ;
+ $iR++)
+ {
+ print ">>>";
+ for(my $iC = $oWkS->{MinCol} ;
+ defined $oWkS->{MaxCol} && $iC <= $oWkS->{MaxCol} ;
+ $iC++)
+ {
+ $oWkC = $oWkS->{Cells}[$iR][$iC];
+ print ">", $oWkC->Value if($oWkC);
+ }
+ }
+}
+
+
diff --git a/doc/niels-diplom/Dateistruktur/admin/adminfuncs.php b/doc/niels-diplom/Dateistruktur/admin/adminfuncs.php
new file mode 100755
index 0000000..e6c61b3
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/adminfuncs.php
@@ -0,0 +1,190 @@
+<?
+
+//___________Nutzerfunktionen____________________________________________________________________________
+
+
+
+function del_user($user) // deaktivieren einzelner Nutzer
+{
+
+ $delete = "UPDATE students SET aktiv = 0 WHERE Name = '$user'";
+
+ $stmt = dbconnect($delete);
+
+ OCIExecute($stmt);
+
+ $message = "Nutzer '$user' inaktiv gesetzt!";
+
+ return $message;
+
+}
+
+
+
+function akt_user($user) // aktivieren einzelner Nutzer
+{
+
+ $aktiv = "UPDATE students SET aktiv = 1 WHERE Name = '$user'";
+
+ $stmt = dbconnect($aktiv);
+
+ OCIExecute($stmt);
+
+ $message = "Nutzer '$user' aktiv gesetzt!";
+
+ return $message;
+
+}
+
+
+function akt_group($group) // Gruppe komplett aktivieren
+{
+ $aktiv = "UPDATE students SET aktiv = 1 WHERE groups = '$group'";
+
+ $stmt = dbconnect($aktiv);
+
+ OCIExecute($stmt);
+
+ $message = "gruppe '$group' aktiv gesetzt!";
+
+ return $message;
+}
+
+function inakt_group($group) // Gruppe komplett deaktivieren
+{
+
+ $aktiv = "UPDATE students SET aktiv = 0 WHERE groups = '$group'";
+
+ $stmt = dbconnect($aktiv);
+
+ OCIExecute($stmt);
+
+ $message = "Gruppe '$group' inaktiv gesetzt!";
+
+ return $message;
+
+
+}
+
+
+function add_user($name, $vorname, $login, $typ, $group) // Anlegen einzelner Nutzer in vorhandene Gruppen
+{
+
+ $insert = "INSERT INTO students VALUES (1, '$name', '$vorname', '$typ', sysdate, 1, '$login', '$group')";
+
+ print $insert;
+
+ $stmt = dbconnect($insert);
+
+ OCIExecute($stmt);
+
+ $message = "Nutzer '$user' erfolgreich in '$group' eingefügt!";
+
+ return $message;
+
+}
+
+
+
+function add_user_from_list($name, $vorname, $login, $group) // Anlegen der Nutzer aus der Liste
+{
+
+ $test = "Select NAME, LOGIN, GROUPS from Students where NAME='$name' and LOGIN='$login' and GROUPS='$group'";
+
+ $stmt = dbconnect($test);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+ if ( $nrows == 1 )
+ {
+ $message = "Nutzer '$name', '$vorname' mit Login '$login' existiert bereits - Nutzer wurde nicht angelegt!";
+ return $message;
+ exit;
+ }
+
+ $insert = "INSERT INTO students VALUES (1, '$name', '$vorname', 0, sysdate, 1, '$login', '$group')";
+
+ $stmt = dbconnect($insert);
+
+ OCIExecute($stmt);
+
+ $message = "Nutzer '$name', '$vorname' mit Login '$login' erfolgreich in '$group' eingefügt!";
+
+ return $message;
+
+}
+
+
+
+function add_group($groupname)
+{
+ $insert = "INSERT INTO groups VALUES ('$groupname')";
+
+ $stmt = dbconnect($insert);
+
+ OCIExecute($stmt);
+
+ $message = "Gruppe '$groupname' erfolgreich angelegt!";
+
+ return $message;
+}
+
+
+
+
+//_________Aufgabenfunktionen_____________________________________________________________________
+
+
+
+
+function less_del($lesson)
+{
+
+ $delete = "update lessons set AKTIV=0 where lesson_id = '$lesson'";
+
+ $stmt = dbconnect($delete);
+
+ OCIExecute($stmt);
+
+ $message = "Die Aufgabe wurde erfolgreich gelöscht!";
+
+ return $message;
+
+}
+
+
+function less_add($text, $muster, $typ, $part)
+{
+
+ $insert = "INSERT INTO lessons VALUES (1, '$text', '$typ', 1, '$part', '$muster')";
+
+ $stmt = dbconnect($insert);
+
+ OCIExecute($stmt);
+
+ $message = "Die Aufgabe wurde angelegt!";
+
+ return $message;
+
+}
+
+function less_change($typ, $text, $aktiv, $muster, $id)
+{
+
+ $text = ereg_replace("'", "''", $text);
+ $muster = ereg_replace("'", "''", $muster);
+
+ $update = "UPDATE lessons SET text = '$text', typ = '$typ', aktiv = '$aktiv', muster = '$muster' WHERE lesson_id = '$id'";
+
+ $stmt = dbconnect($update);
+
+ OCIExecute($stmt);
+
+ $message = "Die Aufgabe wurde geändert!";
+
+ return $message;
+
+}
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/admin/edit_lesson.php b/doc/niels-diplom/Dateistruktur/admin/edit_lesson.php
new file mode 100755
index 0000000..de1da2d
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/edit_lesson.php
@@ -0,0 +1,159 @@
+<?php
+
+include("../header.php");
+
+if ($_SESSION['type'] == 0) // Session Zugangscheck für den Administrator
+ {
+
+ //print "<meta HTTP-EQUIV=\"Refresh\" CONTENT=5; URL=\"/dipl/praktikum.php\">";
+ print "<tr><td class=\"titel_15\">KEINE ADMINSESSION...</td></tr>";
+ print "<tr><td class=\"titel_15\">Bitte Loggen sie sich erneut als Admin ein...</td></tr>";
+ print "</td></tr></table></table>";
+ include("../footer.php");
+ exit;
+
+ }
+
+include("adminfuncs.php");
+
+
+$id = $_GET['id'];
+
+
+if (isset($_POST['delete']))
+{
+
+ $message = less_del($id); //Aufgabe entfernen
+
+ ?>
+
+ <tr>
+ <td class="titel_15">AUFGABENVERWALTUNG</td>
+ </tr>
+
+ <table>
+ <tr></tr>
+
+
+ <?
+
+ print "<tr><td class=text>" . $message . "</td></tr></table>";
+
+}
+
+
+if (isset($_POST['new']))
+{
+
+ less_change($_POST['new_typ'], $_POST['new_text'], $_POST['new_aktiv'], $_POST['new_muster'], $id); //Aufgabe ändern
+
+}
+
+?>
+
+<tr>
+<td class="titel_15">AUFGABENVERWALTUNG</td>
+</tr>
+
+<table>
+
+<form action="<?=$_POST['PHP_SELF'] . "?id=" . $_GET['id'] . "&typ=" . $_GET['typ'] . "&" . SID?>" method="Post">
+
+<?
+
+ $sql = "SELECT typ as TYP, text as TEXT, aktiv as AKTIV, muster as MUSTER FROM lessons WHERE lesson_id = '$id'";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+ if ( $nrows == 1 )
+ {
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $lesson_typ = OCIResult($stmt, "TYP");
+ $lesson_text = OCIResult($stmt, "TEXT");
+ $aktiv = OCIResult($stmt, "AKTIV");
+ $muster = OCIResult($stmt, "MUSTER");
+ }
+
+
+
+ print "<tr><TD colspan=2 class=text><BR>Die von Ihnen gewählte Aufgabe vom Typ " . $_GET['typ'] . " hat folgende Inhalte: <BR> <BR><TABLE Width=550 BORDER=1 colspan=2>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+
+ print "</TR>\n";
+
+ $column = each($results);
+ $data = $column['value'];
+
+?>
+
+
+
+ <td valign=top>
+ <br>
+ <select class="inputtext" name="new_typ" size="1" >
+ <option <?if($lesson_typ == 'SELECT') {?> selected <?}?>>SELECT
+ <option <?if($lesson_typ == 'INSERT') {?> selected <?}?>>INSERT
+ <option <?if($lesson_typ == 'UPDATE') {?> selected <?}?>>UPDATE
+ <option <?if($lesson_typ == 'CREATE') {?> selected <?}?>>CREATE
+ </select>
+ </td>
+
+<TD><TExtarea name="new_text" cols="25" rows="10"><?print $lesson_text; ?></textarea></TD>
+
+ <TD valign=top>
+ <br>
+ <select class="inputtext" name="new_aktiv" size="1" cols=10>
+ <option value=1 <?if ($aktiv == 1) {?> selected <?}?> >aktiv(1)
+ <option value=0 <?if ($aktiv == 0) {?> selected <?}?> >inaktiv(0)
+ </select>
+ </td>
+
+<TD><TExtarea name="new_muster" cols=15 rows=10><?print $muster;?></textarea></TD>
+
+</TR></td></tr>
+
+</TABLE><BR>
+
+<tr><td><input class="inputsubmit" type="Submit" name="new" value="ändern" valign="center"><BR><br></td></tr>
+
+
+<tr><td colspan=2 class="randoben">&nbsp;</td></tr>
+<tr><td valign="center" class="titel"><br>Die oben angezeigte Aufabe</td>
+<td>
+<input class="inputsubmit" type="Submit" name="delete" value="inaktiv setzen">
+</td></tr>
+<tr><td>&nbsp;</td></tr>
+
+<tr><td id=tdlistl>&nbsp;</td></tr>
+
+<tr><td colspan=30><div id=message><? echo $message; ?></div></td></tr>
+
+
+<tr><td id=tdlistl colspan=30>&nbsp;</td></tr>
+</form>
+</table>
+
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+<?
+ include("../footer.php");
+ exit;
+ }
+?>
+
+
diff --git a/doc/niels-diplom/Dateistruktur/admin/get_user.php b/doc/niels-diplom/Dateistruktur/admin/get_user.php
new file mode 100755
index 0000000..52aee37
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/get_user.php
@@ -0,0 +1,158 @@
+<?php
+
+include("../header.php");
+include("adminfuncs.php");
+
+$path = "LIST/".$_SESSION['file'];
+$scriptpath = "LIST/parse-exel.pl";
+
+
+//______________Auslesen des EXCEL-FILES_____________________________________________________________________
+
+ $handle = popen("perl $scriptpath $path", "r"); // parsen des XLS-Files
+ $inhalt = fread($handle, filesize ("$path")); // Parsingergebnis in Variable schreiben
+
+ $lines = explode(">>>",$inhalt); // Zeilenweise aufsplitten...
+ $count = count($lines); // Anzahl der Ergebnisse bestimmen...
+
+ for ($i = 0; $i < $count; $i++) // Inhalte in zweidimensionales Array schreiben
+ {
+ $cont = explode(">",$lines[$i]);
+ $countcont = count($cont);
+ for ($c = 0; $c < $countcont; $c++)
+ {
+ $dim[$i][$c] = $cont[$c]; // $dim enthält die Daten der Studenten
+ }
+ }
+
+//____________________________________________________________________________________________________________
+
+
+
+?>
+
+<table width="100%" border="0" cellspacing="0" cellpadding="0">
+ <tr>
+ <td class="titel_15">STUDENTENLISTE<br><br></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td class=text>
+
+<?
+
+if (isset($_GET['load']))
+{
+
+ $group = $_GET['thegroup'];
+
+ while(list($strName ,$value) = each($_GET))
+ {
+ if(is_array($value))
+ {
+ foreach($value as $value_array)
+ {
+ $message = add_user_from_list($dim[$value_array][1], $dim[$value_array][2], $dim[$value_array][3], $group);
+ print "> ".$message."<br>"; //Ausgabe der Fehlermeldung
+ }
+ }
+ }
+}
+
+?>
+
+ </td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td valign="top" class="text">
+ <tr>
+
+ <table>
+
+<form action=<?=$_POST['PHP_SELF'].SID?>>
+
+<tr colspan=2><td class="text">In welche GRUPPE sollen die Nutzer aufgenommen werden:</td>
+ <td width=400>
+ <select class="inputtext" name="thegroup" size="1" width=190>
+ <?
+
+ $sql = "SELECT groups FROM groups";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt, $results);
+
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; //Liste mit vorhandenen Benutzern füllen
+ }
+
+ if ($_POST['all_group'] == $data[$i]) print "<option selected>" . $data[$i] . "</option>\n"; else print "<option>$data[$i]</option>\n";
+ }
+
+ ?>
+
+ </select>
+ </td>
+ </tr>
+
+<tr colspan=2>
+ <td>&nbsp;</td>
+ </tr>
+ <tr colspan=2>
+ <td colspan=2 class=randoben>&nbsp;</td>
+ </tr>
+<tr valign=top colspan=2><td>
+
+
+<?
+
+print "<p><select name=List[] size=$count multiple>";
+
+
+ for ($l = 0; $l < $count; $l++)
+ {
+ print "<option value=$l>";
+ for ($ll = 1; $ll < 4; $ll++)
+ {
+ print $dim[$l][$ll] . " ";
+ }
+ print "</option>";
+ }
+
+
+?>
+
+</select></p>
+
+</td>
+<td colspan=2>
+<input class=inputsubmit type=submit name=load width=179 height=15 border=0>
+</td>
+</tr>
+</form>
+
+</table>
+
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/admin/lesson_admin.php b/doc/niels-diplom/Dateistruktur/admin/lesson_admin.php
new file mode 100755
index 0000000..f039943
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/lesson_admin.php
@@ -0,0 +1,178 @@
+<?php
+
+include("../header.php");
+
+if ($_SESSION['type'] == 0) // Session Zugangscheck für den Administrator
+ {
+
+ //print "<meta HTTP-EQUIV=\"Refresh\" CONTENT=5; URL=\"/dipl/praktikum.php\">";
+ print "<tr><td class=\"titel_15\">KEINE ADMINSESSION...</td></tr>";
+ print "<tr><td class=\"titel_15\">Bitte Loggen sie sich erneut als Admin ein...</td></tr>";
+ print "</td></tr></table></table>";
+ include("../footer.php");
+ exit;
+
+ }
+
+include("adminfuncs.php");
+
+
+if (isset($_POST['add']))
+{
+ less_add($_POST['less_text'], $_POST['less_muster'], $_POST['less_typ'], $_POST['less_part']); //Aufgabe anlegen
+}
+
+
+if (isset($_POST['back']))
+{
+ unset($find);
+ unset($chose_typ);
+ unset($_SESSION['chose_typ']);
+}
+
+?>
+
+
+
+
+
+<a name="start"></a>
+
+<tr>
+<td class="titel_15">AUFGABENVERWALTUNG</td>
+</tr>
+
+<table class=text>
+
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="Post">
+
+
+<? if (isset($_POST['find']))
+ {
+ $chose_typ = $_POST['chose_typ'];
+
+ $_SESSION['chose_typ'] = $_POST['chose_typ'];
+
+ $sql = "SELECT LESSON_ID, TYP, TEXT FROM LESSONS where TYP = '$chose_typ' and part <> 'Vorbereitung'";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+
+ print "<tr><TD colspan=2 class=text><BR>In der Rubrik \"$chose_typ \" sind folgende Aufgaben enthalten: <BR> <BR><TABLE Width=550 BORDER=1 colspan=2>\n";
+ print "<TR>\n";
+
+
+
+ print "<TABLE Width=550 BORDER=1 colspan=2 class=text>\n";
+ print "<TH>ID</TH><TH>Typ</TH><TH>Beschreibung</TH>";
+
+ while (OCIFetch($stmt)) {
+ print "<tr><TD><a href=\"edit_lesson.php?id=" . OCIResult($stmt, "LESSON_ID") . "&typ=" . OCIResult($stmt, "TYP") . "&" . SID . "\">" . OCIResult($stmt, "LESSON_ID") . "</a></TD><TD>" . OCIResult($stmt, "TYP") . "</TD><TD>" . OCIResult($stmt, "TEXT") . "</TD></tr>";
+ }
+ OCIFreeStatement($stmt);
+
+ unset($_SESSION['chose_typ']);
+?>
+
+</TABLE>
+
+<tr>
+ <td>...zum Bearbeiten oder Löschen der Aufgaben klicken Sie bitte auf die ID!</td>
+<tr>
+ <td valign=top><br><input class="inputsubmit" type="Submit" name="back" value="zurück zur Auswahl&nbsp;"></td>
+</tr>
+
+
+
+
+
+
+</table>
+
+</table>
+
+
+<?
+ include("../footer.php");
+ exit;
+ }
+?>
+
+
+ <tr><td class="titel" colspan=2><br>Aufgaben finden & bearbeiten</td></tr>
+
+ <tr><td class="text" ><br>AUFGABEN aus der Rubrik:</td></tr>
+
+ <tr>
+ <td><br>
+ <select class="inputtext" name="chose_typ" size="1">
+ <option>SELECT</option>
+ <option>INSERT</option>
+ <option>UPDATE</option>
+ <option>CREATE</option>
+ </select>
+ <input class="inputsubmit" type="Submit" name="find" value="finden" valign="center"><br><br></td>
+ </tr>
+</form>
+</TABLE>
+
+
+
+<table>
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="Post">
+
+ <tr><td colspan=2 class=randunten>&nbsp;</td></tr>
+ <tr><td class=titel colspan=2><br>Anlegen neuer Aufgaben</td></tr>
+ <tr><td colspan=2>&nbsp;</td></tr>
+ <tr><td class="text" valign=top>AUFGABENTEXT</td>
+ <td><textarea class="inputtext" type="text" name="less_text" cols="85" rows="10"></textarea></td></tr>
+
+ <tr>
+ <td class="text">MUSTERLÖSUNG</td>
+ <td>
+ <input class="inputtext" type="text" name="less_muster" size="80">
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="text">TYPE</td>
+ <td>
+ <select class="inputtext" name="less_typ" size="1">
+ <option >SELECT</option>
+ <option >INSERT</option>
+ <option >UPDATE</option>
+ <option >CREATE</option>
+ </select>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="text">GLIEDERUNG</td>
+ <td>
+ <select class="inputtext" name="less_part" size="1">
+ <option >Vorbereitung</option>
+ <option >Abfragen</option>
+ </select><input class="inputsubmit" type="Submit" name="add" size="30" value="Aufgabe hochladen" align=center>
+ </td>
+ </tr>
+
+
+
+
+</form>
+</table>
+
+</td> </tr></table>
+<tr>
+<td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+</tr>
+</table>
+
+
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/admin/upload.php b/doc/niels-diplom/Dateistruktur/admin/upload.php
new file mode 100755
index 0000000..1ef34c3
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/upload.php
@@ -0,0 +1,25 @@
+<?
+
+$uploadDir = '/usr/local/apache/htdocs_ssl/dipl/admin/LIST/';
+$uploadFile = $uploadDir . $_FILES['userfile']['name'];
+
+print "<pre>";
+if (move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile))
+{
+ print "File is valid, and was successfully uploaded. ";
+ print "Here's some more debugging info:\n";
+ print_r($_FILES);
+}
+else
+{
+ print "Possible file upload attack! Here's some debugging info:\n";
+ print_r($_FILES);
+}
+print "</pre>";
+?>
+
+<form enctype="multipart/form-data" action="upload.php" method="post">
+ <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
+ Choose a file to upload: <input name="userfile" type="file" />
+ <input type="submit" value="Upload File" />
+</form>
diff --git a/doc/niels-diplom/Dateistruktur/admin/user_admin.php b/doc/niels-diplom/Dateistruktur/admin/user_admin.php
new file mode 100755
index 0000000..01e7578
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/admin/user_admin.php
@@ -0,0 +1,406 @@
+<?php
+
+include("../header.php");
+
+if ($_SESSION['type'] == 0) // Session Zugangscheck für den Administrator
+ {
+
+ //print "<meta HTTP-EQUIV=\"Refresh\" CONTENT=5; URL=\"/dipl/praktikum.php\">";
+ print "<tr><td class=\"titel_15\">KEINE ADMINSESSION...</td></tr>";
+ print "<tr><td class=\"titel_15\">Bitte Loggen sie sich erneut als Admin ein...</td></tr>";
+ print "</td></tr></table></table>";
+ include("../footer.php");
+ exit;
+
+ }
+
+include("adminfuncs.php");
+
+if (isset($_POST['new_group']))
+{
+
+ add_group($_POST['gruppe']); //user anlegen
+
+}
+
+if (isset($_POST['add_user']))
+{
+
+ add_user($_POST['name'], $_POST['vorname'], $_POST['login'], $_POST['typ'], $_POST['user2group']); //user anlegen
+
+}
+
+if (isset($_POST['deakt_user']))
+{
+ $message = del_user($_POST['deakt_him']); //user deaktivieren
+ unset($message);
+}
+
+if (isset($_POST['akt_user']))
+{
+ $message = akt_user($_POST['akt_ihn']); //user deaktivieren
+ unset($message);
+}
+
+if (isset($_POST['chng_akt_group']))
+{
+ $message = akt_group($_POST['all_group']); //Gruppe komplett aktivieren
+ unset($message);
+}
+
+if (isset($_POST['chng_inakt_group']))
+{
+ $message = inakt_group($_POST['all_group']); //Gruppe komplett deaktivieren
+ unset($message);
+}
+
+
+?>
+
+<a name="start"></a>
+
+<tr>
+<td class="titel_15">NUTZERVERWALTUNG</td>
+</tr>
+<tr>
+<td>
+<table width=560>
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="post">
+
+ <tr><td colspan=3 class="titel"><br>einzelne aktuelle Nutzer deaktivieren...<?print $message;?></td></tr>
+ <tr><td colspan=3>&nbsp;</td></tr>
+ <tr><td class="text" width=50>USER</td>
+ <td width=100>
+ <select class="inputtext" name="deakt_him" size="1" width=95>
+
+ <?
+
+ $sql = "SELECT name FROM students where aktiv=1";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt, $results);
+
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ //Liste mit vorhandenen Benutzern füllen
+ }
+
+ echo "<option>$data[$i]</option>\n";
+ }
+
+ ?>
+
+ </select>
+ </td>
+
+ <td align=right>
+ <input class="inputsubmit" type="Submit" name="deakt_user" value="inaktiv setzen">
+ </td>
+
+ </tr>
+</table>
+</form>
+
+<table width=560>
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="post">
+
+ <tr><td colspan=5 class="randoben">&nbsp;</td></tr>
+
+ <tr><td colspan=5 class="titel" >einzelne inaktive Nutzer aktivieren...nach Gruppen selektiert</td></tr>
+ <tr><td colspan=5>&nbsp;</td></tr>
+
+
+
+ <tr><td class="text" width=50>GRUPPE</td>
+ <td width=100>
+ <select type=submit class="inputtext" name="group" size="1" onchange="this.form.submit()" width=95>
+ <?
+
+ $sql = "SELECT distinct groups FROM students";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt, $results);
+
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; //Liste mit vorhandenen Benutzern füllen
+ }
+
+ if ($_POST['group'] == $data[$i]) print "<option selected>" . $data[$i] . "</option>\n"; else print "<option>$data[$i]</option>\n";
+ }
+
+ ?>
+
+ </select>
+ </td>
+
+
+ <td class="text" align=right width=200>inaktive Nutzer aus der Gruppe: <?print $_POST['group'];?></td>
+ <td>
+ <select class="inputtext" name="akt_ihn" size="1">
+ <?
+ $gruppe = $_POST['group'];
+
+ $sql = "SELECT name FROM students where aktiv=0 and groups='$gruppe'";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt, $results);
+
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ //Liste mit vorhandenen Benutzern füllen
+ }
+
+ echo "<option>$data[$i]</option>\n";
+ }
+
+ ?>
+
+ </select>
+ </td>
+ <td align=right>
+ <input class="inputsubmit" type="Submit" name="akt_user" value="aktiv setzen">
+ </td>
+ </tr>
+ <tr><td colspan=5>&nbsp;</td></tr>
+</form>
+</table>
+
+
+
+<table width=560>
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="post">
+
+ <tr><td colspan=4 class="randoben">&nbsp;</td></tr>
+
+ <tr><td colspan=4 class="titel">gesamte Gruppen aktivieren oder deaktivieren...<?print $message;?></td></tr>
+ <tr><td colspan=4>&nbsp;</td></tr>
+ <tr><td class="text" width=50>GRUPPE</td>
+ <td width=100>
+ <select type=submit class="inputtext" name="all_group" size="1" onchange="this.form.submit()" width=95>
+ <?
+
+ $sql = "SELECT distinct groups FROM students";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt, $results);
+
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; //Liste mit vorhandenen Benutzern füllen
+ }
+
+ if ($_POST['all_group'] == $data[$i]) print "<option selected>" . $data[$i] . "</option>\n"; else print "<option>$data[$i]</option>\n";
+ }
+
+ ?>
+
+ </select>
+ </td>
+
+ <td align=right>
+ <input class="inputsubmit" type="Submit" name="chng_akt_group" value="Gr. aktiv setzen">
+ </td>
+ <td align=right>
+ <input class="inputsubmit" type="Submit" name="chng_inakt_group" value="Gr. inaktiv setzen">
+ </td>
+
+ </tr>
+ <tr><td>&nbsp;</td></tr>
+ </form>
+</table>
+
+<table width=560>
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="Post">
+
+
+ <tr><td colspan=3 class="randoben">&nbsp;</td></tr>
+
+ <tr>
+ <td valign="center" colspan=3 class="titel">Hinzufügen einzelner Nutzer zu bestehenden Gruppen<br></td>
+ </tr>
+ <tr><td colspan=3>&nbsp;</td></tr>
+
+<tr><td class="text" width=150>in welche GRUPPE einfügen?</td>
+ <td width=100>
+ <select type=submit class="inputtext" name="user2group" size="1" onchange="this.form.submit()" width=95>
+ <?
+
+ $sql = "SELECT groups FROM groups";
+ //$sql = "SELECT distinct groups FROM students";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt, $results);
+
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; //Liste mit vorhandenen Benutzern füllen
+ }
+
+ if ($_POST['user2group'] == $data[$i]) print "<option selected>" . $data[$i] . "</option>\n"; else print "<option>$data[$i]</option>\n";
+ }
+
+ ?>
+
+ </select>
+ </td>
+ </tr>
+
+
+ <tr>
+ <td class="text">NAME</td>
+ <td>
+ <input class="inputtext" type="title" name="name" size=40>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="text">VORNAME</td>
+ <td>
+ <input class="inputtext" type="title" name="vorname" size=40>
+ </td>
+ </tr>
+
+ <tr>
+ <td class="text">LOGIN</td>
+ <td>
+ <input class="inputtext" type="Password" name="login" size=40>
+ </td>
+ </tr>
+
+ <tr><td>&nbsp;</td></tr>
+
+ <tr>
+ <td class="text">TYP</td>
+ <td>
+ <select class="inputtext" name="typ" size="1">
+ <option value=0>USER</option>
+ <option value=1>ADMIN</option>
+ </select>
+ </td>
+ <td>
+ <input class="inputsubmit" type="Submit" name="add_user" size="30" value="Nutzer in <?print $_POST['user2group'];?> anlegen">
+ </td>
+ </tr>
+
+ <tr><td>&nbsp;</td></tr>
+
+ </form>
+
+
+
+ </table>
+
+<table width=560>
+<form action="<?=$_POST['PHP_SELF'] . "?" . SID?>" method="post">
+ <tr><td colspan=5 class="randoben">&nbsp;</td></tr>
+ <tr><td colspan=3 class="titel">Neue Gruppe anlegen...</td></tr>
+ <tr><td colspan=3>&nbsp;</td></tr>
+ <tr><td class="text" width=50>Gruppenname:</td>
+ <td>
+ <input class="inputtext" type="title" name="gruppe" size=40>
+ </td>
+ <td align=right>
+ <input class="inputsubmit" type="Submit" name="new_group" value="Gruppe anlegen">
+ </td>
+
+ </tr>
+</table>
+</form>
+
+
+<table width=560>
+<form action="<?$_POST['PHP_SELF'] . SID?>" method="post" enctype="multipart/form-data">
+
+<tr><td colspan=5 class="randoben">&nbsp;</td></tr>
+<tr><td colspan=5 class="titel" >EXCEL-LISTE HOCHLADEN</td></tr>
+ <tr><td colspan=5>&nbsp;</td></tr>
+ <tr>
+ <td class=text>Bitte wählen Sie eine .XLS-Datei mit den Userdaten:
+ <input type="hidden" name="MAX_FILE_SIZE" value="100000">
+ <input class="inputsubmit" name="userfile" type="file" size="40" accept="*.xls"></td>
+ <td><br>
+ <input class="inputsubmit" type="submit" value="Upload File" name=upload align=right>
+ </td>
+ </tr>
+ <tr><td colspan=5>&nbsp;</td></tr>
+</form>
+
+<?
+
+$uploadDir = '/usr/local/apache/htdocs_ssl/dipl/admin/LIST/';
+$uploadFile = $uploadDir . $_FILES['userfile']['name'];
+
+if ( $_FILES['userfile']['type'] == "application/vnd.ms-excel" )
+{
+ $up = move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadFile);
+ $_SESSION['file'] = $_FILES['userfile']['name'];
+}
+
+if ( $up == 1 )
+{
+ print "<tr><td class=text>Datei ist akzeptiert und wurde erfolgreich hochgeladen. <br>";
+ print "<B>Debugging info:</B><br>" . "Datei: " . $_FILES['userfile']['name'] . "<br>Typ: " . $_FILES['userfile']['type'] . "<br>Größe: " . $_FILES['userfile']['size'] . " Byte";
+ print "</td></tr><tr><td colspan=5>&nbsp;</td></tr>";
+ print "<tr><td class=text><a href=get_user.php?".SID.">Zum Datenbankupload...</a></td></tr>";
+}
+elseif (isset($_POST['upload']))
+{
+ print "<tr><td class=text>Datei ist fehlerhaft oder keine EXCEL-DATEI und wurde nicht hochgeladen.<br>";
+ print "<B>Debugging info:</B><br>" . "Datei: " . $_FILES['userfile']['name'] . "<br>Typ: " . $_FILES['userfile']['type'] . "<br>Größe: " . $_FILES['userfile']['size'] . " Byte";
+}
+?>
+
+</table>
+
+ </td>
+</tr>
+</table>
+</table>
+
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/connect.php b/doc/niels-diplom/Dateistruktur/connect.php
new file mode 100755
index 0000000..aeb191f
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/connect.php
@@ -0,0 +1,43 @@
+<?php
+
+$dbuser="nils";
+$dbpass="dbprakt";
+/* Datenbanklogin */
+
+$createuser="creator";
+$createpass="creator";
+/* Datenbanklogin */
+
+
+PutEnv("TWO_TASK=dbprakt");
+
+
+function dbconnect($sql)
+{
+
+
+ global $dbuser, $dbpass;
+
+ $con = OCILogon($dbuser, $dbpass);
+
+ $stmt = OCIParse($con, $sql);
+
+ return $stmt;
+
+ OCILogoff($con);
+}
+
+function createconnect($sql)
+{
+
+
+ global $createuser, $createpass;
+
+ $con = OCILogon($createuser, $createpass);
+
+ $stmt = OCIParse($con, $sql);
+
+ return $stmt;
+
+ OCILogoff($con);
+} \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/css/Benutzer.gif b/doc/niels-diplom/Dateistruktur/css/Benutzer.gif
new file mode 100755
index 0000000..2312162
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/Benutzer.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/HS.gif b/doc/niels-diplom/Dateistruktur/css/HS.gif
new file mode 100755
index 0000000..e13cccb
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/HS.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/KAPV.pdf b/doc/niels-diplom/Dateistruktur/css/KAPV.pdf
new file mode 100755
index 0000000..65e6d8c
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/KAPV.pdf
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/_basic.css b/doc/niels-diplom/Dateistruktur/css/_basic.css
new file mode 100755
index 0000000..21377ed
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/_basic.css
@@ -0,0 +1,121 @@
+body
+ {
+ font-family: VERDANA,ARIAL,HELVETICA;
+ background-color:#EFEFEF;
+ }
+
+/* ...ab hier der original CSS-Code... */
+
+#tdhead
+ {
+ background-color: #862200;/*#3F3D6D;*/
+ }
+
+#tdheada /* a wie ACHTUNG, hierbei handelt es sich um SPECIALS, Dinge von Bedeutung */
+ {
+ background-color: #3F3D6D;
+ }
+
+#tdlist1
+ {
+ background-color: #cfcfcf;
+ }
+
+#tdlist2
+ {
+ background-color: #afafaf;
+ }
+
+#tdlista
+ {
+ background-color: #cccccc;
+ }
+
+#linkbox
+ {
+ background-color: #ccffcc;
+ border-width: 1px;
+ border-color: #ccffcc;
+ border-style: solid;
+ /*existier nicht offiziel: --> cursor: hand; */
+ }
+
+#schwarzgross
+ {
+ font-size: 13pt;
+ color: #000000;
+ font-weight: 800;
+ }
+
+#schwarzklein
+ {
+ font-size: 11pt;
+ color: #3F3D6D;
+ font-weight: 600;
+ }
+
+#schwarzklein2
+ {
+ font-size: 10pt;
+ color: #3F3D6D;
+ font-weight: 300;
+ }
+
+#weissheader
+ {
+ font-size: 24pt
+ color: #ffffff;
+ font-weight: 600;
+ }
+
+#weissgross
+ {
+ font-size: 13pt;
+ color: #ffffff;
+ font-weight: 800;
+ }
+
+#weissklein
+ {
+ font-size: 8pt;
+ color: #ffffff;
+ font-weight: 600;
+ }
+
+#weissklein2
+ {
+ font-size: 8pt;
+ color: #ffffff;
+ font-weight: 300;
+ }
+
+#textgross
+ {
+ text-align: left;
+ font-size: 10pt;
+ color: #000000;
+ font-family: verdana;
+ font-weight: 900;
+ }
+
+#fach
+ {
+ text-align: center;
+ color: #000000;
+ font-size: 18pt;
+ text-transform: uppercase;
+ font-family: verdana;
+ font-weight: 900;
+ }
+
+ #message
+ {
+ color: #3F3D6D;
+ font-size: 13pt;
+ font-weight: 800;
+ }
+
+ #pmessage
+ {
+ background-color: #55CCBB;
+ } \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/css/abgeschlossen.gif b/doc/niels-diplom/Dateistruktur/css/abgeschlossen.gif
new file mode 100755
index 0000000..3c5f91d
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/abgeschlossen.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/abstract.gif b/doc/niels-diplom/Dateistruktur/css/abstract.gif
new file mode 100755
index 0000000..94ebdfa
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/abstract.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/balken_gelb.gif b/doc/niels-diplom/Dateistruktur/css/balken_gelb.gif
new file mode 100755
index 0000000..1bba612
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/balken_gelb.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/balken_gruen.gif b/doc/niels-diplom/Dateistruktur/css/balken_gruen.gif
new file mode 100755
index 0000000..f246c6e
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/balken_gruen.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/balken_orange.gif b/doc/niels-diplom/Dateistruktur/css/balken_orange.gif
new file mode 100755
index 0000000..f65dfaf
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/balken_orange.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/balken_rot.gif b/doc/niels-diplom/Dateistruktur/css/balken_rot.gif
new file mode 100755
index 0000000..2fc2d92
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/balken_rot.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/ekg.gif b/doc/niels-diplom/Dateistruktur/css/ekg.gif
new file mode 100755
index 0000000..238619a
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/ekg.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/ekg_Login.gif b/doc/niels-diplom/Dateistruktur/css/ekg_Login.gif
new file mode 100755
index 0000000..26ed432
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/ekg_Login.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/ekg_long.gif b/doc/niels-diplom/Dateistruktur/css/ekg_long.gif
new file mode 100755
index 0000000..ba1ce99
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/ekg_long.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/faq_logo.gif b/doc/niels-diplom/Dateistruktur/css/faq_logo.gif
new file mode 100755
index 0000000..19ebac4
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/faq_logo.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/head.gif b/doc/niels-diplom/Dateistruktur/css/head.gif
new file mode 100755
index 0000000..563cb75
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/head.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/inhalt.gif b/doc/niels-diplom/Dateistruktur/css/inhalt.gif
new file mode 100755
index 0000000..b03402b
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/inhalt.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/kapv.gif b/doc/niels-diplom/Dateistruktur/css/kapv.gif
new file mode 100755
index 0000000..21e7f62
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/kapv.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/nach-oben.gif b/doc/niels-diplom/Dateistruktur/css/nach-oben.gif
new file mode 100755
index 0000000..81b5094
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/nach-oben.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/navigation.gif b/doc/niels-diplom/Dateistruktur/css/navigation.gif
new file mode 100755
index 0000000..b3a916e
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/navigation.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/oracle.gif b/doc/niels-diplom/Dateistruktur/css/oracle.gif
new file mode 100755
index 0000000..9de05dc
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/oracle.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/css/stilneu1.css b/doc/niels-diplom/Dateistruktur/css/stilneu1.css
new file mode 100755
index 0000000..868659f
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/stilneu1.css
@@ -0,0 +1,124 @@
+BODY {
+ BACKGROUND-COLOR: #ffffff
+}
+.text {
+ FONT-WEIGHT: normal;
+ FONT-SIZE: 12px; COLOR: #000000; BORDER-TOP-STYLE: none;
+ FONT-FAMILY: Arial, Helvetica, sans-serif; BORDER-RIGHT-STYLE: none;
+ BORDER-LEFT-STYLE: none; LETTER-SPACING: normal;
+ TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: none
+}
+.textred {
+ FONT-WEIGHT: normal;
+ FONT-SIZE: 12px; COLOR: #FA0528; BORDER-TOP-STYLE: none;
+ FONT-FAMILY: Arial, Helvetica, sans-serif; BORDER-RIGHT-STYLE: none;
+ BORDER-LEFT-STYLE: none; LETTER-SPACING: normal;
+ TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: none
+}
+.textgross {
+ FONT-WEIGHT: bold;
+ FONT-SIZE: 42px; COLOR: #000000; BORDER-TOP-STYLE: none;
+ FONT-FAMILY: Arial, Helvetica, sans-serif; BORDER-RIGHT-STYLE: none;
+ BORDER-LEFT-STYLE: none; LETTER-SPACING: normal; TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: none
+}
+.titel {
+ PADDING-RIGHT: 2px; PADDING-LEFT: 2px;
+ FONT-WEIGHT: bold; FONT-SIZE: 12px; PADDING-BOTTOM: 2px;
+ WORD-SPACING: normal; COLOR: #ff9900; PADDING-TOP: 2px; BORDER-BOTTOM: #ff9900 1px;
+ FONT-FAMILY: Arial, Helvetica, sans-serif; LETTER-SPACING: 1px; TEXT-DECORATION: none
+}
+.titel_15 {
+ PADDING-RIGHT: 2px; PADDING-LEFT: 2px;
+ FONT-WEIGHT: bold; FONT-SIZE: 15px; PADDING-BOTTOM: 2px;
+ WORD-SPACING: normal; COLOR: #ff9900; PADDING-TOP: 2px; BORDER-BOTTOM: #ff9900 1px;
+ FONT-FAMILY: Arial, Helvetica, sans-serif; LETTER-SPACING: 1px; TEXT-DECORATION: none
+}
+.textfett {
+ FONT-WEIGHT: bold; FONT-SIZE: 11px;
+ COLOR: #000000; BORDER-TOP-STYLE: none; FONT-FAMILY: Arial, Helvetica, sans-serif;
+ BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; LETTER-SPACING: normal;
+ TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: none
+}
+.link {
+ FONT-WEIGHT: normal; FONT-SIZE: 12px;
+ COLOR: #333333; FONT-FAMILY: Arial, Helvetica, sans-serif; TEXT-DECORATION: underline
+}
+.zeile {
+ LINE-HEIGHT: 5px
+}
+UL {
+ FONT-WEIGHT: normal; LIST-STYLE-POSITION: outside;
+ FONT-SIZE: 12px; COLOR: #000000; FONT-FAMILY: Arial, Helvetica, sans-serif;
+ LIST-STYLE-TYPE: circle; TEXT-DECORATION: none
+}
+.abstractfett {
+ FONT-WEIGHT: bold; FONT-SIZE: 11px; COLOR: #ff9900;
+ BORDER-TOP-STYLE: none; FONT-FAMILY: Arial, Helvetica, sans-serif;
+ BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; LETTER-SPACING: normal;
+ TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: none
+}
+.textklein {
+ FONT-WEIGHT: normal; FONT-SIZE: 11px; COLOR: #000000; BORDER-TOP-STYLE: none;
+ FONT-FAMILY: Arial, Helvetica, sans-serif; BORDER-RIGHT-STYLE: none;
+ BORDER-LEFT-STYLE: none; LETTER-SPACING: normal; TEXT-DECORATION: none; BORDER-BOTTOM-STYLE: none
+}
+.rand {
+ border: 1px solid #666666;
+}
+.randmenu {
+ border-right: 1px solid #FF9900;
+}
+.randoben {
+ border-top: 1px solid #666666;
+ /*border-bottom: 1px solid #666666;*/
+}
+.randunten {
+ border-bottom: 1px solid #666666;
+}
+a:link#menue { font-family:Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ color: #000000;
+ text-decoration: none;
+ width: 160px;
+ }
+a:visited#menue { font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ color: #000000;
+ text-decoration: none;
+ width: 160px; }
+a:hover#menue { font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ color: #FF9900;
+ text-decoration: none;
+ width: 160px;
+ border-right: 1px solid #FF9900;
+ }
+a:active#menue { font-family: Arial, Helvetica, sans-serif;
+ font-size: 11px;
+ font-weight: bold;
+ color: #FF9900;
+ text-decoration: none;
+ width: 160px; }
+.aktiv {
+ border-bottom: 1px solid #FF9900;
+}
+.inputtext {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ font-weight: normal;
+ color: #663300;
+ text-decoration: none;
+ background-color: #FFFFFF;
+ border: 1px solid #FF9900;
+}
+.inputsubmit {
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 12px;
+ font-weight: bold;
+ color: #FFFFFF;
+ text-decoration: none;
+ background-color: #FF9900;
+ border: 1px solid #333333;
diff --git a/doc/niels-diplom/Dateistruktur/css/user.gif b/doc/niels-diplom/Dateistruktur/css/user.gif
new file mode 100755
index 0000000..3577f14
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/css/user.gif
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/footer.php b/doc/niels-diplom/Dateistruktur/footer.php
new file mode 100755
index 0000000..545c326
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/footer.php
@@ -0,0 +1,9 @@
+<table width="800" border="0" cellpadding="2" cellspacing="2" class="randobenunten">
+ <tr>
+ <td width="190"><a href="#start"><img src="/dipl/css/nach-oben.gif" alt="nach oben" width="85" height="20" border="0"></a></td>
+
+ <td width="610" align="right" valign="bottom"><font face="Arial, Helvetica, sans-serif" size="1" color="#999999"><? PRINT $_SESSION['fname'] . " " . $_SESSION['name'] . " - " ?>Praktikumsteilnehmer seit <? PRINT $_SESSION['since']; ?></font>
+ </td>
+ </tr>
+ </table>
+</table> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/header.php b/doc/niels-diplom/Dateistruktur/header.php
new file mode 100755
index 0000000..4de1017
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/header.php
@@ -0,0 +1,233 @@
+<?
+
+ session_start();
+ if(!isset($_SESSION['user']))
+ {
+ include("nosession.php");
+ exit;
+ }
+ else include("connect.php");
+
+?>
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+
+<head>
+<title>Datenbank_Praktikum_Duesterhoeft</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
+<meta name="keywords" content="Datenbank Praktikum Duesterhoeft Hochschule Wismar">
+<meta name="description" content="Bearbeitung von Praktikumsaufgaben von zu Hause">
+<META http-equiv="Page-Enter" content="blendTrans(Duration=0.5)">
+<META http-equiv="Page-Exit" content="blendTrans(Duration=0.5)">
+
+<link href="/dipl/css/stilneu1.css" rel="stylesheet" type="text/css">
+
+<script language="JavaScript" type="text/JavaScript" name="menu">
+
+function MM_findObj(n)
+{ //v4.01
+ var i, x;
+ for(i=0; !x && document.layers && i < document.layers.length; i++) x = MM_findObj(n);
+ if(!x && document.getElementById) x = document.getElementById(n); return x;
+}
+
+
+function MM_showHideLayers()
+{ //v6.0
+ var i, v, obj, args = MM_showHideLayers.arguments;
+ for (i = 0; i < (args.length+1); i++) if ((obj = MM_findObj(args[i]))!= null) {v = args[i+2];
+ if (obj.style) { obj = obj.style; v = (v == 'show')?'visible':(v == 'hide')?'hidden':v;}
+ obj.visibility = v; }
+}
+
+</script>
+
+</head>
+
+<body>
+<a name="start"></a>
+
+<table width=800 valign=top>
+<tr>
+ <table valign=top>
+ <tr>
+ <td width=613 height=85><img src="/dipl/css/head.gif" width=555 height=100>
+ </td>
+ <td width=179 height=100 align=left valign=top class=titel>
+ <br><br><br><br>
+ <!--Online-Praktikum im Fach Datenbanksysteme-->
+ <a href="http://www.et.hs-wismar.de" target=blank><img src="/dipl/css/HS.gif" width=179 height=45 valign=bottom border=0></a>
+ </td>
+ </tr>
+
+ <tr>
+ <td colspan=2><img src="/dipl/css/ekg_long.gif" width=613 height=15><a href="../logout/bye.php?user=<?=$_SESSION['user']?>&lessNr=<?=$_SESSION['level']?>&Login=<?=$_SESSION['Login']?>" target="_self"><img src="/dipl/css/ekg.gif" alt="Logout" width=183 height=15 border=0></a></td>
+ </tr>
+
+ <tr>
+ <td colspan=2 width=613 >&nbsp;</td>
+ </tr>
+ </table>
+ </tr>
+</table>
+
+
+
+
+
+<table width=800 height=400 valign=top>
+
+<tr><td width=190 valign=top class=randmenu>
+
+
+
+<table width=190>
+
+ <tr>
+ <td height=12 align=right><img src="/dipl/css/navigation.gif" width=82></td>
+ </tr>
+
+
+<? switch ($_SESSION['type']) {
+ case 0:
+?>
+
+ <tr><td align=right bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessonstart.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','show','lessonsadm','','hide','result','','hide','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;Aufgaben&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/results/user_result.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','show','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','hide','result','','hide','user','','hide','statistik','','hide')"">&nbsp;&nbsp;&nbsp;persönliche Auswertung&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/help/help.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','show','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','hide','result','','hide','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;Hilfe&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right class="zeile" >&nbsp;</td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/links.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','show','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','hide','result','','hide','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;links&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="http://www.et.hs-wismar.de/~duest/" target=_blank id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','show','lessons','','hide','lessonsadm','','hide','result','','hide','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;Prof. Dr.-Ing. A. Düsterhöft&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right class="zeile">&nbsp;</td>
+ </tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/kapv.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','show','home','','hide','lessons','','hide','lessonsadm','','hide','result','','hide','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;KAPV-Situation&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right class="zeile">&nbsp;</td>
+ </tr>
+
+<?
+ break;
+
+ case 1:
+?>
+
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/admin/lesson_admin.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','show','result','','hide','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;Aufgabenverwaltung&nbsp;&nbsp;&nbsp;
+ </a></td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/results/admin_result.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','hide','result','','show','user','','hide','statistik','','hide')">&nbsp;&nbsp;&nbsp;Auswertungen&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/admin/user_admin.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','hide','result','','hide','user','','show','statistik','','hide')">&nbsp;&nbsp;&nbsp;Benutzerverwaltung&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+ <tr>
+ <td align=right class="zeile">&nbsp;</td>
+ </tr>
+ <tr>
+ <td align=right bgcolor="#F7F7F7" ><a href="/dipl/results/statistic.php?<?=SID?>" id="menue" onMouseOver="MM_showHideLayers('help','','hide','person','','hide','links','','hide','next','','hide','last','','hide','befor','','hide','home','','hide','lessons','','hide','lessonsadm','','hide','result','','hide','user','','hide','statistik','','show')">&nbsp;&nbsp;&nbsp;Statistik&nbsp;&nbsp;&nbsp;</a></td>
+ </tr>
+
+<?
+ break;
+ }
+?>
+
+
+<tr>
+<td align=right>
+<img src="/dipl/css/abstract.gif" width="82" height="12" valign="top">
+</td>
+</tr>
+</table>
+
+<td width=15>&nbsp;</td>
+
+<td valign=top class=randmenu>
+
+<table width=560>
+
+<tr><td height=12 align=right class=randunten><img src="/dipl/css/inhalt.gif" width=82 height=12 ></td></tr>
+<tr><td>&nbsp;</td></tr>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<div id="help" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Hilfe</span><br>
+ <span class="textklein"><br>ein FAQ mit Schwerpunkt - SQL
+</span></p>
+</div>
+<div id="person" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;" >
+ <p><span class="abstractfett"><br>persönliche Auswertung</span><br>
+ <span class="textklein"><br>Eine kurze Aufbereitung zum gegenwärtigen Stand der Übungen:
+ enthält Statistiken, Fehlerquoten und Hinweise zur weiteren Arbeit.</span></p>
+</div>
+<div id="links" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;" >
+ <p><span class="abstractfett"><br>links</span><br>
+ <span class="textklein"><br>Eine Linksammlung mit hilfreichen Seiten zum Thema ORACLE-DATENBANKEN</span></p>
+</div>
+<div id="befor" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;" >
+ <p><span class="abstractfett"><br>Situationsbeschreibung</span><br>
+ <span class="textklein"><br>die grundlegende Beschreibung und Informationen zur KAPV-DB</span></p>
+</div>
+<div id="home" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Homepage</span><br>
+ <span class="textklein"><br>direkter Link zur Homepage von Prof. Dr.-Ing. Antje Düsterhöft</span></p>
+</div>
+<div id="lessons" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Aufgaben</span><br>
+ <span class="textklein"><br>Eingang zu den Praktikumsaufgaben</span></p>
+</div>
+<div id="lessonsadm" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Aufgabenverwaltung</span><br>
+ <span class="textklein"><br>Bearbeiten vorhandener Aufgaben bzw. Anlegen neuer Lektionen....
+</span></p>
+</div>
+<div id="result" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Auswertungen</span><br>
+ <span class="textklein"><br>Zugang Ergebnisse zu den Ergebnissen aller Studenten....
+</span></p>
+</div>
+<div id="user" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Benutzerverwaltung</span><br>
+ <span class="textklein"><br>Anlegen bzw. Entfernen von Benutzern - Rechte für einzelne Benutzer festlegen....
+</span></p>
+</div>
+<div id="statistik" style="position:absolute; width:174px; height:115px; left: 16px; top: 420px; visibility: hidden;">
+ <p><span class="abstractfett"><br>Statistik</span><br>
+ <span class="textklein"><br>eine statistische Zusammenfassung der bisherigen Nutzung des Kurses...
+</span></p>
+</div>
+</body>
+</html>
+
+
diff --git a/doc/niels-diplom/Dateistruktur/help/ORACLE_SQL.pdf b/doc/niels-diplom/Dateistruktur/help/ORACLE_SQL.pdf
new file mode 100755
index 0000000..4eee9d3
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/help/ORACLE_SQL.pdf
Binary files differ
diff --git a/doc/niels-diplom/Dateistruktur/help/help.php b/doc/niels-diplom/Dateistruktur/help/help.php
new file mode 100755
index 0000000..5e92ae7
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/help/help.php
@@ -0,0 +1,39 @@
+<?
+ include("../header.php");
+?>
+
+ <a name="start"></a>
+
+ <tr>
+ <td class="titel">Datenbanken Praktikum Prof. Dr.-Ing Düsterhöft</td>
+ </tr>
+ <tr>
+ <td valign="top" class="text"><table>
+ <tr>
+ <td valign="center" class="text"><br>An dieser Stelle wird eine FAQ - Sammlung zur Arbeit mit der Seite entstehen.<br><br>Vorerst sollen hier einige Formaterläuterungen gelistet werden, die für die Abarbeitung der Aufgaben hilfreich sind! Geben folgende Inhalte bitte wie folgt in Ihren Anfragen an:</td></tr>
+ <tr>
+ <td valign="center" class="text">
+ <ul>
+ <li>Bsp. Datumsformat: ....where datum > '14-Jun-2004' <br>[Jan-Feb-Mrz-Apr-Mai-Jun-Jul-Aug-Sep-Okt-Nov-Dez]</li>
+ <li>Bsp. String: ....where Spaltenname = 'beliebige Zeichenkette'</li>
+ <li><a href="/dipl/help/ORACLE_SQL.pdf" target=_blank>TUTORIAL ORACLE/SQL (PDF)</a></li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+
+ <p>&nbsp;</p></td>
+ </tr>
+</table>
+ </td>
+ </tr>
+ </table>
+</td> </tr>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/kapv.php b/doc/niels-diplom/Dateistruktur/kapv.php
new file mode 100755
index 0000000..6c4c0b1
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/kapv.php
@@ -0,0 +1,92 @@
+<?
+ include("header.php");
+?>
+
+ <a name="start"></a>
+
+ <tr>
+ <td class="titel">Situationsbeschreibung KAPV (Kunden-Auftrag-Produkt-Verwaltung)</td>
+ </tr>
+ <tr>
+ <td valign="top" class="text"><table>
+ <tr>
+ <td valign="center" class="text"><br>
+Ein Unternehmen handelt mit verschiedenen Produkten. Die Verwaltung der Kunden, der Aufträge
+und der Produkte soll als Client-Server-Datenbank-Applikation realisiert werden. Von den Kunden
+werden Stammdaten wie Kundennummer, Name, Vorname, Geburtsdatum, Geschlecht,
+Adressdaten wie PLZ, Ort, Straße und Hausnummer, Staat gehalten und müssen immer aktuell sein.
+Dabei kann ein Kunde mehrere Adressen haben.<br><br>Zu jedem Kunden wird ein firmenspezifisches Profil
+unterhalten, das aus mehreren Angaben besteht: bisheriges Auftragsvolumen (aufsummiert),
+Zahlungsbilanz mit den Werten ‘+’ oder ‘-‘ und Zahlungsverhalten, Vorlieben, dokumentiert in
+Produktkategorien, Frequenz der Bestellungen. Das Zahlungsverhalten hat die Werte: -1, falls noch
+Beträge ausstehen, 0, falls mehr als 10 Mahnungen pro Jahr ausgestellt wurden, 1 sonst.<br>
+Produktkategorien sind: Textilien, Handwerksbedarf, Sport (kann erweitert werden). Die Frequenz
+der Bestellungen ist die Aufstellung Anzahl_Aufträge pro Jahr. Kunden müssen gegebenenfalls
+angeschrieben werden. Bestellungen von Kunden werden nur schriftlich akzeptiert.<br><br>
+Zu jeder Kundenbestellung wird ein Auftrag angelegt, bestehend aus einer Auftragsnummer, der
+Kundennummer, Auftragsdatum, Auftragsbetrag und Auftragsstatus. Der Auftragsstatus hat die
+Werte ‘in Arbeit’, ‘ausgeliefert’, ‘bezahlt’. Zu jedem Auftrag gehört eine Liste (Positionen) der
+bestellten Produkte. <br>Diese Liste beinhaltet die Informationen Auftragsnummer, Produktnummer,
+bestellte Stückzahl, Preis pro Stück, Betrag . Der Positionenbetrag berechnet sich aus der Stückzahl
+mal Preis; der Auftragsbetrag berechnet sich aus der Summe aller Positionenbeträge zu dieser
+Auftragsnummer. Zu jedem Kunden wird ein sogenanntes Kundenkonto gehalten. Darin sind alle
+Auftragsbeträge mit Bestelldatum und alle eingegangenen Zahlungen zu diesen Aufträgen mit Datum
+eingetragen. <br><br>Weiterhin sind pro Auftrag die Anzahl von Mahnungen festgehalten. Mahnungenwerden
+21 Tage nach Rechnungsdatum ausgestellt. Die Liste der bestellten Produkte wird mit dem
+Produktlager verglichen: ist das Produkt in ausreichender Stückzahl vorhanden, wird diese Position
+in die Auftrags-Bestell-Liste (Positionen) aufgenommen. Sind nicht genügend viele Produkte
+vorhanden, wird dies auf der Rechnung vermerkt. Ist die Bestelliste abgearbeitet und die
+Positionsliste komplett, wird das Lager angewiesen, die Produkte zu verpacken. Es wird eine
+Rechnung ausgestellt und zusammen mit dem Produktpaket verschickt. Eine Rechnung bezieht sich
+immer auf einen Auftrag und einen Kunden und besteht aus Rechnungsdatum, Rechnungsbetrag und
+Rechnungsbemerkung. Der Status des Auftrags wird geändert in ‘ausgeliefert’. Nach Eingang der
+Zahlung ändert sich der Status in ‘bezahlt’.<br><br>
+Das Produktlager besteht aus den folgenden Informationen: Produktnummer, Bezeichnung,
+Produktionsdatum, Material, Größe, Stückzahl_auf_Lager, Preis. Nach jeder Auftragsauslieferung
+muß die Lager-Stückzahl entsprechend verringert werden. Die Liste der Produkte wird immer
+wieder aktualisiert. Später soll diese KAPV erweitert werden um ein Lieferantenmodul, das die
+Verwaltung der Produkte mit ihren Lieferanten realisiert.<br><br>In dem untenstehenden PDFDokument ist die Datenbank noch einmal übersichtlich als Relationenmodell dargestellt. <b>Hier noch einmal eine Übersicht über die Tabellen die Spaltennamen und die Datentypen:</b></td>
+ </tr>
+ <tr>
+ <td>
+ <UL>
+ <LI>Tabelle <b>ADRESSEN</b> (<u>ADRESS_ID[number]</u>, POSTLEITZAHL[number], ORT[varchar2], STRASSE[varchar2], HAUSNUMMER[varchar2], STAAT[varchar2])</LI>
+ <LI>Tabelle <b>AUFTRAG</b> (<u>AUFTRAGSNUMMER[char 10]</u>, AUFTRAGSSTATUS[varchar2], AUFTRAGSDATUM[date], KUNDENNUMMER[char 8])</LI>
+ <LI>Tabelle <b>AUFTRAG_HAT_POSTIONEN</b> (PRODUKTNUMMER[char 8], STUECKZAHL[number], AUFTRAGSNUMMER[char 10])</LI>
+ <LI>Tabelle <b>PRODUKTLAGER</b> (<u>PRODUKTNUMMER[number]</u>, STUECKZAHL[number], PREIS[number], BEZEICHNUNG[varchar2], PRODUKTIONSDATUM[date], MATERIAL[varchar2], GROESSE[varchar2])</LI>
+ <LI>Tabelle <b>AUFTRAG</b> (<u>AUFTRAGSNUMMER[char 10]</u>, AUFTRAGSSTATUS[varchar2], AUFTRAGSDATUM[date], KUNDENNUMMER[char 8])</LI>
+ <LI>Tabelle <b>KUNDE_HAT_ADRESSE</b> (ADRESS_ID[number], KUNDENNUMMER[char 8]</LI>
+ <LI>Tabelle <b>KUNDE_HAT_VORLIEBEN</b> (KUNDENPROFIL_ID[number], VORLIEBEN_ID[number], ANZAHL[number]</LI>
+ <LI>Tabelle <b>KUNDEN</b> (<u>KUNDENNUMMER[char 8]</u>, NAME[varchar2], VORNAME[varchar2], GEBURTSDATUM[date], GESCHLECHT[char 1])</LI>
+ <LI>Tabelle <b>KUNDE_PROFIL</b> (<u>KUNDENPROFIL_ID[number]</u>, KUNDENNUMMER[char 8], AUFTRAGSVOLUMEN[number 10], ZAHLUNGSBILANZ [char 1], ZAHLUNGSVERHALTEN[number]</LI>
+ <LI>Tabelle <b>ZU_VORLIEBEN_GEHOEREN_PRODUKTE</b> (PRODUKTNUMMER[char 8], VORLIEBEN_ID[number]</LI>
+ <LI>Tabelle <b>VORLIEBEN</b> (VORLIEBEN_KATEGORIE[varchar2], VORLIEBEN_ID[number])</LI>
+ <LI>Tabelle <b>RECHNUNGSDATEN</b> (<u>RECHNUNGSNUMMER[char]</u>, RECHNUNGSBEMERKUNG[varchar2], AUFTRAGSNUMMER[char 10], ANZAHL_VON_MAHNUNGEN[char 1], RECHNUNGSDATUM[date], EINGEGANGENE_ZAHLUNGEN[number], ZAHLUNGSDATUM[date])</LI>
+ </UL></td>
+ </tr>
+
+ <tr>
+ <td>DATENBANKSCHEMA (Klick zum Anzeigen der PDF-Datei):
+ </td>
+ </tr>
+ <tr>
+ <td><a href="/dipl/css/KAPV.pdf" target=_blank><img src="/dipl/css/kapv.gif" width=555></a>
+ </td>
+ </tr>
+ </table>
+
+ <p>&nbsp;</p></td>
+ </tr>
+</table>
+ </td>
+ </tr>
+ </table>
+</td> </tr>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+<?
+include("footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/lessons/errror_tests.php b/doc/niels-diplom/Dateistruktur/lessons/errror_tests.php
new file mode 100755
index 0000000..cb59e58
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/lessons/errror_tests.php
@@ -0,0 +1,52 @@
+<?
+
+
+$sql = "test";
+
+fehler($sql);
+
+// Display OCI error
+function PrintOCIError($err)
+{
+ echo "<pre>".$err['message']."</pre>\n";
+ die();
+}
+
+
+function fehler($stmt)
+{
+
+ $username = "nils";
+ $password = "nils";
+ $database = "ora9";
+
+ $con = @OCILogon($username, $password, $database);
+ if (!$con) {
+ $e = OCIError(); // For OCILogon errors pass no parameter
+ PrintOCIError($e);
+ }
+
+ echo "Connected OK\n";
+
+ $stid = @OCIParse($con, $stmt);
+ if (!$stid)
+ {
+ $e = OCIError($con); // For OCIParse errors pass the connection
+ PrintOCIError($e);
+ }
+
+ echo "Parsed OK\n";
+
+ $r = @OCIExecute($stid);
+ if (!$r)
+ {
+ $e = OCIError($stid); // For OCIExecute errors pass the statement
+ PrintOCIError($e);
+ }
+
+ echo "Executed OK\n";
+}
+
+
+
+?>
diff --git a/doc/niels-diplom/Dateistruktur/lessons/lessoni.php b/doc/niels-diplom/Dateistruktur/lessons/lessoni.php
new file mode 100755
index 0000000..b103a23
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/lessons/lessoni.php
@@ -0,0 +1,229 @@
+<?php
+
+include("../header.php");
+include("try.php");
+
+$text = getText($_GET['lessNr']); //der Text der Aufgabenstellung wird aus der DB gezogen.....
+$muster = getMuster($_GET['lessNr']); //Muster der Aufgabenstellung...
+
+
+if ($_GET['SQLtype'] == "INSERT" OR $_GET['SQLtype'] == "CREATE" OR ($_GET['SQLtype'] == "SELECT" and $_GET['Part'] == "Vorbereitung")) //Heraussuchen der Tabellen, in die vom Nutzer einggefügt werden darf
+{
+ $user = $_SESSION['user'];
+ $name = strtoupper($_SESSION['name']); //Großschreibung wegen ORACLEinternem Handling!!
+
+ $sql = "SELECT TABLE_NAME FROM dba_tables WHERE tablespace_name like '$name$user'";
+
+ $stmt = createconnect($sql);
+
+ OCIExecute($stmt);
+
+ $trows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+ if ( $trows == 1 )
+ {
+
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $table = OCIResult($stmt, "TABLE_NAME");
+ }
+
+ $sql = "SELECT COLUMN_NAME, DATA_TYPE FROM dba_tab_columns WHERE table_name like '$table'";
+
+ $stmt = createconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $name = OCIResult($stmt, "COLUMN_NAME");
+ $type = OCIResult($stmt, "DATA_TYPE");
+ $struktur = $struktur . "Spalte: " . $name. " vom Typ: ".$type. "<br>";
+ }
+
+ }
+
+
+
+}
+
+
+if (isset($_POST['submitok']))
+{
+
+ $_POST['query'] = correct($_POST['query']);
+
+ //einfaches Parsen des eingegebenen Strings, damit evtl. Unbrüche und sonderzeichen den Eintrag in die DB ermöglichen
+
+ if ($_GET['SQLtype'] == "SELECT" AND $_GET['lessNr'] <> "66")
+ {
+ $succ = select($_POST['query'], $_SESSION['user'], $muster[0], $_GET['SQLtype']); //der selectZweig (function in try.php) wird eröffnet
+ }
+
+ if ($_GET['lessNr'] == "66")
+ {
+ $succ = prep_select($_POST['query'], $_SESSION['user'], $muster[0], $_GET['SQLtype'], $table, $_SESSION['name']); //der prep_selectZweig (function in try.php) wird eröffnet
+ }
+
+ if ($_GET['SQLtype'] == "CREATE")
+ {
+ $succ = create($_POST['query'], $_SESSION['user'], $muster[0], $_GET['SQLtype'], $_SESSION['name']); //der createZweig (function in try.php) wird eröffnet
+ }
+
+ if ($_GET['SQLtype'] == "INSERT")
+ {
+ $succ = insert($_POST['query'], $_SESSION['user'], $muster[0], $_GET['SQLtype'], $_SESSION['name']); //der insertZweig (function in try.php) wird eröffnet
+ }
+
+
+ success($_POST['query'], $_SESSION['user'], $_GET['lessNr']); // bei erfolgreicher Execute - Eintrag in DBTabelle 'LOGON'
+
+ //savestatus($_SESSION['user'], $_GET['lessNr']);
+ //die;
+
+ exit;
+
+}
+
+
+?>
+
+<a name="start"></a>
+
+ <tr>
+ <td class="titel">Aufgabe <? print $_GET['Nr'];?></td>
+ </tr>
+ <tr>
+ <td valign="top" class="text">
+ <tr>
+ <td valign="center" class="text"><br><div class="textred">
+<?
+ if ($_GET['SQLtype'] == "INSERT")
+ {
+ if ( $trows == 1)
+ {
+ print "<b>ACHTUNG >></B><br><br>Sie haben nun die Möglichkeit, in die von Ihnen angelegte Tabelle:<br><b>\"" . $table . "\"</b> Daten einzufügen!<br>Die Struktur der von Ihnen angelegten Tabelle entspricht folgendem Schema:<br>".$struktur."<br><BR>";
+ }
+ else
+ {
+ print "<b>ACHTUNG >></B><br><br>Sie haben bisher noch keine Tabelle angelegt. Bitte lösen sie zuerst die <a href=/dipl/lessons/lessonstart.php?".SID.">Aufgabe 2(CREATE)</a> der Vorbereitung...<br><br>";
+?>
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+
+<?
+ include("../footer.php");
+ exit;
+ }
+ }
+
+ if ($_GET['SQLtype'] == "CREATE")
+ {
+ if ( $trows == 1)
+ {
+ print "<b>ACHTUNG >></B><br><br>Sie haben bereits eine Tabelle \"" . $table . "\"</b> angelegt!<br>Die Struktur der von Ihnen angelegten Tabelle entspricht folgendem Schema:<br>".$struktur."<br><br>Bitte lösen sie nun die <a href=/dipl/lessons/lessonstart.php?".SID.">Aufgabe 3(INSERT)</a> der Vorbereitung...<br><br>";
+?>
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+<?
+ include("../footer.php");
+ exit;
+ }
+ }
+
+ if ($_GET['SQLtype'] == "SELECT" AND $_GET['Part'] == "Vorbereitung" AND $_GET['lessNr'] == "66")
+ {
+ if ( $trows == 1)
+ {
+ $sql = "SELECT * FROM $table";
+ $stmt = createconnect($sql);
+ OCIExecute($stmt);
+ $lrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+ if ($lrows <> 0)
+ {
+ print "Die von Ihnen angelegte Tabelle heißt \"" . $table . "\"</b>.<br>Die Struktur der von Ihnen angelegten Tabelle entspricht folgendem Schema:<br>".$struktur."<br><br>";
+ }
+ else
+ {
+ print "Sie haben noch keine Daten in die von Ihnen angelegte Tabelle \"" . $table . "\"</b> eingefügt.<br>Die Struktur der von Ihnen angelegten Tabelle entspricht folgendem Schema:<br>".$struktur."<br><br>Bitte lösen sie zuerst die <a href=/dipl/lessons/lessonstart.php?".SID.">Aufgabe 3(INSERT)</a> der Vorbereitung...<br><br>";
+?>
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+
+<?
+ include("../footer.php");
+ exit;
+ }
+ }
+
+ else
+ {
+ print "<b>ACHTUNG >></B><br><br>Sie haben bisher noch keine Tabelle angelegt. Bitte lösen sie zuerst die <a href=/dipl/lessons/lessonstart.php?".SID.">Aufgabe 2(CREATE)</a> der Vorbereitung...<br><br>";
+?>
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+
+<?
+ include("../footer.php");
+ exit;
+ }
+ }
+?>
+
+ </div>
+ <? print $text[0];?>
+
+ <br><br>
+
+ Bitte geben Sie den SQL-Code in das Formularfeld ein und bestätigen sie mit "try".....
+
+ <br><br></td>
+ </tr>
+ <form action="<?=$_POST['PHP_SELF'] . "?lessNr=" . $_GET['lessNr'] . "&SQLtype=". $_GET['SQLtype'] . "&Part=". $_GET['Part'] . "&" . SID?>" method="post" class="text">
+
+ <table>
+ <tr >
+ <td class="titel">
+ <div>SQL</div></td>
+ </tr>
+ <TR>
+ <td align="left"><textarea type="text" name="query" class="inputtext" cols="90" rows="10"><?print $_SESSION['statment'];?></textarea></td>
+ </tr>
+
+ <tr>
+ <td align="left"><input type="submit" name="submitok" value="try...." class="inputsubmit"></td>
+ </tr>
+ </table>
+ </form>
+
+ </td> </tr></table>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+
+<?
+include("../footer.php");
+?>
diff --git a/doc/niels-diplom/Dateistruktur/lessons/lessonstart.php b/doc/niels-diplom/Dateistruktur/lessons/lessonstart.php
new file mode 100755
index 0000000..4a95a39
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/lessons/lessonstart.php
@@ -0,0 +1,183 @@
+<?php
+
+include("../header.php");
+include("try.php");
+
+
+?>
+
+<a name="start"></a>
+
+<tr>
+<td class="titel">Aufgabenbereich</td>
+</tr>
+ <tr>
+ <td class="text">
+ <tr>
+ <td class="text"><br>Willkommen im Aufgabenbereich Ihres Online-Praktikums. In diesem Bereich sollen sie in zwei Schritten einige grundlegende SQL-Statements ausprobieren und können die gestellten Aufgaben bequem von zu Hause aus zu erledigen.<br>
+ <UL>
+ <LI>Zuerst müssen die Aufgaben aus der Rubrik "Vorbereitung" abgearbeitet werden. </LI>
+ <LI>Im Anschluß können die Aufgaben aus der Rubrik "Abfragen" abgearbeitet werden.</LI>
+ <LI>Es können jedoch über den Punkt >Aufgabenübersicht< jederzeit alle Aufgabenstellungen eingesehen werden. Unter diesem Punkt finden sie auch alle bereits gelösten Aufgaben und ihre Lösungen wieder.</LI>
+ </UL>
+
+ Die bereits erledigten Aufgaben werden nicht mehr angezeigt.<br>Trotzdem haben sie die Möglichkeit, diese Aufgaben per Navigationmenü erneut aufzurufen, um so Ihren derzeitigen Stand nachvollziehen zu können. Nach erfolgreicher Erledigung jeder Aufgabe, werden Sie über das Ergebnis Ihrer Anfrage informiert und können entscheiden, ob Sie zur nächsten Aufgabe wechseln oder die Sitzung beenden wollen.<br> Während Ihrer Arbeit werden Ihre Datenbankzugriffe protokolliert und dem Kursleiter und Ihnen zur Verfügung gestellt. So können sie sich selbst kontrollieren und bekommen einen Nachweis über Ihre Tätigkeit. Viel Spaß und Erfolg im weiteren Verlauf des Praktikums.<br><br></td>
+
+
+<table>
+<thead>
+ <tr>
+ <th class=titel align=left width=180 bgcolor="#F7F7F7">1. Vorbereitung</th>
+ <th class=titel align=left width=180 bgcolor="#F7F7F7">2. Anfragen</th>
+ </tr>
+</thead>
+
+<tbody>
+
+<td align="left" valign=top width=180>
+<table>
+
+<?
+
+ unset($_SESSION['statment']); // vorangegangene Eingabe in das Textfeld verwerfen
+
+ $part = "Vorbereitung";
+
+
+ $lessontype = getlessontype($_SESSION['user'], $part); //die AUfgabenTypen bestimmen...
+ $lessonID = getlessonID($_SESSION['user'], $part); //die dazugehörige Aufgaben_ID bestimmen...
+ $lessonNR = getlessonNR($_SESSION['user'], $part);
+ $lessonPart = getlessonPart($_SESSION['user'], $part); //den Aufgabenpart bestimmen
+ $num = count($lessontype); //Anzahl der gefundenen Aufgaben ausgeben....
+
+
+ if ($lessontype[0] == "0")
+ {
+
+?>
+
+
+
+ <tr>
+ <td align="left" bgcolor=#ffb24a><div class=text>
+<?
+ print "Sie haben alle Vorbereitungen erfolgreich abgeschlossen! Bitte bearbeiten sie nun die Anfragen! <br>Sehen sie sich Ihre persönliche Auswertung unter dem entsprechenden Punkt im Menü an.";
+
+ //Falls der Nutzer noch einen Tablesspace hat - löschen...
+
+ $check = tab_space_check(strtoupper($_SESSION['name']), $_SESSION['user']); //hat der Nutzer noch Tablespace??
+
+?>
+ </div></td>
+ </tr>
+
+
+<?
+ }
+
+ else
+ {
+?>
+
+
+<?
+
+ for ( $i = 1; $i-1 < $num-1; $i++ )
+ {
+?>
+
+ <tr>
+
+ <td width=100%>
+ <a href="/dipl/lessons/lessoni.php?lessNr=<?=$lessonID[$i-1]?>&Nr=<?=$lessonNR[$i-1]?>&SQLtype=<?=$lessontype[$i-1]?>&Part=<?=$lessonPart[$i-1]?>&<?=SID?>" id="menue" >Aufgabe <? print $lessonNR[$i-1] . " (" . $lessontype[$i-1] . ") " ?></a>
+ </td>
+
+ </tr>
+
+<?
+ }
+ }
+?>
+
+</table>
+</td>
+
+<td align="left" valign=top width=180>
+<table>
+
+<?
+
+
+
+ $part = "Abfragen";
+
+ $lessontype = getlessontype($_SESSION['user'], $part); //die AUfgabenTypen bestimmen...
+ $lessonID = getlessonID($_SESSION['user'], $part); //die dazugehörige Aufgaben_ID bestimmen...
+ $lessonNR = getlessonNR($_SESSION['user'], $part);
+ $lessonPart = getlessonPart($_SESSION['user'], $part);
+ $num = count($lessontype); //Anzahl der gefundenen Aufgaben ausgeben....
+
+
+ if ($lessontype[0] == "0")
+ {
+
+?>
+ <tr>
+ <td align="left" bgcolor=#ffb24a><div class=text>
+<?
+ print "Sie haben alle Aufgaben erfolgreich gelöst! Ihr Praktikum ist damit abgeschlossen! <br>Sehen sie sich Ihre persönliche Auswertung unter dem entsprechenden Punkt im Menü an.";
+?>
+ </div></td>
+ </tr>
+
+<?
+ }
+
+
+ else
+ {
+
+ for ( $i = 1; $i-1 < $num-1; $i++ )
+ {
+?>
+
+ <tr>
+ <td align="left" width=100%><a href="/dipl/lessons/lessoni.php?lessNr=<?=$lessonID[$i-1]?>&Nr=<?=$lessonNR[$i-1]?>&SQLtype=<?=$lessontype[$i-1]?>&Part=<?=$lessonPart[$i-1]?>&<?=SID?>" id="menue" >Aufgabe <? print $lessonNR[$i-1] . " (" . $lessontype[$i-1] . ") " ?></a>
+ </td>
+ </tr>
+
+<?
+
+ }
+ }
+?>
+
+</table>
+</td>
+
+</tbody>
+<tfoot>
+ <tr>
+ <td class=titel align=left colspan=2 bgcolor="#F7F7F7"><br></td>
+ </tr>
+ <tr>
+ <td class=titel align=left colspan=2 bgcolor="#F7F7F7"><a href="/dipl/lessons/showlessons.php?<?=SID?>" id=menue>Aufgabenstellungen im Überblick >></td>
+ </tr>
+</tfoot>
+</table>
+
+
+</td>
+</tr>
+</table>
+
+
+<tr>
+<td align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+</tr>
+</table>
+
+
+<?
+ include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/lessons/showlessons.php b/doc/niels-diplom/Dateistruktur/lessons/showlessons.php
new file mode 100755
index 0000000..0c0e628
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/lessons/showlessons.php
@@ -0,0 +1,163 @@
+<?php
+
+ include("../header.php");
+ include("try.php");
+ $user = $_SESSION['user'];
+?>
+
+
+<tr >
+<td class=titel>Aufgabenübersicht von <?echo $_SESSION['fname'] . " " . $_SESSION['name']?></td>
+</tr>
+
+<tr >
+<td class=titel><br></td>
+</tr>
+
+<tr>
+<td bgcolor=#F7F7F7 colspan=2 class=text>Die nachfolgenden Aufgaben wurden erfolgreich gelöst</td>
+</tr>
+
+<tr>
+<td>
+
+<?
+
+$sql = "SELECT LE.TEXT FROM LESSONS LE, LOGON LO WHERE LO.STUD_ID = '$user' AND LO.LESSON_ID = LE.LESSON_ID order by LO.DATUM";
+
+?>
+
+<br>
+</td>
+</tr>
+
+
+
+
+
+<?
+
+$text = getreadyText($_SESSION['user']); //die dazugehörige Aufgaben_ID bestimmen...
+$muster = getreadyMuster($_SESSION['user']);
+$nr = getreadyNr($_SESSION['user']);
+$statement = getreadystatement($_SESSION['user']);
+$num = count($text);
+
+
+if ($text[0] == "0")
+ {
+
+?>
+ <tr>
+ <td align="left" bgcolor=#ffb24a><div class=text>
+<?
+ print "Bisher haben Sie keine der zu lösenden Aufgaben abgeschlossen. Auf auf ans Werk...";
+?>
+ </div></td>
+ </tr>
+
+<?
+ }
+
+
+ else
+ {
+
+ for ( $i = 1; $i-1 < $num; $i++ )
+ {
+?>
+ <tr>
+ <td class=titel>Aufgabe <?print $nr[$i-1]?></td>
+ </tr>
+ <tr>
+ <td align="left" width=100% class=text><b>Aufgabenstellung:</b> <?print $text[$i-1]?></td>
+ </tr>
+ <tr>
+ <td align="left" width=100% class=text><b>Die Musterlösung war:</b> <?print $muster[$i-1]?></td>
+ </tr>
+ <tr>
+ <td align="left" width=100% class=text><b>Ihre Lösung war:</b> <?print $statement[$i-1]?></td>
+ </tr>
+
+<?
+
+ }
+ }
+?>
+
+
+
+<tr>
+<td colspan=2 class=text><br><br></td>
+</tr>
+
+<tr>
+<td bgcolor=#F7F7F7 colspan=2 class=text>Folgende Aufgaben müssen zum erfolgreichen Abschluß des Praktikums noch gelöst werden.</td>
+</tr>
+
+<tr>
+<td>
+
+
+
+
+
+<br><br>
+</td>
+</tr>
+
+<?
+
+$text = todoText($_SESSION['user']); //die dazugehörige Aufgaben_ID bestimmen...
+$todonr = todoNr($_SESSION['user']);
+$num = count($text);
+
+
+if ($text[0] == "0")
+ {
+
+?>
+ <tr>
+ <td align="left" bgcolor=#ffb24a><div class=text>
+<?
+ print "Bisher haben Sie keine der zu lösenden Aufgaben abgeschlossen. Auf auf ans Werk...";
+?>
+ </div></td>
+ </tr>
+
+<?
+ }
+
+
+ else
+ {
+
+ for ( $i = 1; $i-1 < $num; $i++ )
+ {
+?>
+ <tr>
+ <td class=titel>Aufgabe <?print $todonr[$i-1]?></td>
+ </tr>
+ <tr>
+ <td align="left" width=100% class=text><b>Aufgabenstellung:</b> <?print $text[$i-1]?></td>
+ </tr>
+
+<?
+
+ }
+ }
+?>
+
+
+
+
+
+
+</table>
+</table>
+</table>
+
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/lessons/try.php b/doc/niels-diplom/Dateistruktur/lessons/try.php
new file mode 100755
index 0000000..8b54d82
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/lessons/try.php
@@ -0,0 +1,1145 @@
+<?php
+
+function select($sql, $user, $muster, $typ)
+
+{
+ $_SESSION['statment'] = $sql; // für die erneute Darstellung der Anfrage im Textfeld beim Navigieren zur eben gelösten Aufgabe...
+
+
+ $stmt = dbconnect($sql);
+
+
+ if ( OCIStatementType($stmt) == $typ ) //wenn die Eingabe ein select statement ist...
+
+ {
+
+ //...testen ob das eine sinnvolle SQL-Anweisung ist oder ggf. Fehler ausgeben...
+
+ $r = @OCIExecute($stmt);
+
+ if (!$r)
+ {
+ errors($sql, $user, $_GET['lessNr']);
+ $e = OCIError($stmt); // OCIFehlermeldung in Variable einlesen
+ PrintOCIError($e); // und ausgeben
+ }
+
+ }
+
+ else
+
+ {
+
+?>
+ <tr>
+ <td><div class=titel>AUSWERTUNG</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td bgcolor=#FE5555 colspan=2><div class=text>Ihr SQLStatement entspricht keiner SQL_<? print $typ; ?>_Anweisung. Bitte versuchen sie es erneut!</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Folgen sie bitte dem untenstehenden link, um zur eben bearbeiteten Aufgabe zurück zu gelangen.</td>
+ </tr>
+
+ <tr>
+ <td align="left" bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessoni.php?lessNr=<?=$_GET['lessNr']?>&SQLtype=<?=$_GET['SQLtype']?>&Part=<?=$_GET['Part']?>&<?=SID?>" id="menue"><< zurück zur Aufgabenstellung </a>
+ </td>
+ </tr>
+<?
+ exit; //....Ausgabe, daß ein ungültiges Statement vorliegt & Abbruch.....
+ }
+
+?>
+
+
+
+
+
+
+
+
+ <tr>
+ <td class=titel>AUSWERTUNG</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+
+<? //Erstellen der Musterlösung zum Vergleich der Ergebnissmenge
+
+ $sql_muster = getmuster($_GET['lessNr']); // Musterlösung als String aus der DB holen
+ $stmt_muster = dbconnect($sql_muster[0]);
+ OCIExecute($stmt_muster);
+
+
+ $nrows_muster = OCIFetchStatement($stmt_muster, $results_muster); //nrows = Anzahl der Elemente
+ $ncols_muster = OCInumcols($stmt_muster);
+
+
+
+ $nrows = OCIFetchStatement($stmt, $results); //Umfang der Eingabeergebnisse der Eingabe ermitteln
+ $ncols = OCInumcols($stmt);
+
+
+ if ($nrows_muster != $nrows or $ncols_muster != $ncols)
+ {
+ errors($sql, $user, $_GET['lessNr']);
+
+ print "<tr><td bgcolor=#FFB24A class=text>Sie haben eine syntaktisch richtige Anfrage erstellt. Ihre Anfrage entspricht allerdings noch nicht der in der Aufgabe geforderten Musterlösung.....<br><br>Anzahl der geforderten Spalten: $ncols_muster<br>Anzahl der geforderten Datensätze: $nrows_muster</td></tr>";
+?>
+
+ <tr><td>&nbsp;</td></tr><tr><td colspan=2 class=text>Folgen sie bitte dem untenstehenden link, um zur eben bearbeiteten Aufgabe zurück zu gelangen.</td></tr><tr><td align="left" bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessoni.php?lessNr=<?=$_GET['lessNr']?>&SQLtype=<?=$_GET['SQLtype']?>&Part=<?=$_GET['Part']?>&<?=SID?>" id="menue"><< zurück zur Aufgabenstellung </a>
+
+ </td>
+ </tr>
+<?
+ }
+
+ else
+ {
+ $OK = 0;
+ $differ = 0;
+
+ while ($column = each($results) and $column_muster = each($results_muster))
+ {
+ $data_muster = $column_muster['value'];
+ $data = $column['value']; // alle Values in ein Array übertragen....
+
+ for ( $i = 0; $i < $nrows; $i++ ) // Vergleich der Ergebnisse von Muster und Eingabe
+ {
+
+ if ($data_muster[$i] == $data[$i])
+ {
+ $OK = $OK + 1;
+ }
+
+ else $differ = $differ + 1;
+ }
+ }
+
+ if ($differ == 0)
+ {
+ unset($_SESSION['statment']); //bei richtiger Antwort wird die vorangegangene Lösung nicht mehr im Eingabefeld der nächsten Aufgabe angezeigt
+?>
+
+ <tr>
+ <td colspan=2 class=text>Richtig! Die Lösung der Aufgabe entspricht der gesuchten Musterlösung. Bitte drücken sie den untenstehenden link, um zur nächsten Aufgabe zu gelangen.</td>
+ </tr>
+
+ <tr>
+ <td align="left" bgcolor="#F7F7F7">
+
+<?
+
+ $lessontype = getlessontype($_SESSION['user'], $_GET['Part']); //die nachfolgende Aufgaben_ID & Typ bestimmen...
+ $lessonID = getlessonID($_SESSION['user'], $_GET['Part']);
+ $lessonPart = getlessonPart($_SESSION['user'], $_GET['Part']);
+ $lessonNr = getlessonNR($_SESSION['user'], $_GET['Part']);
+
+
+ if ($lessonID[1] == 0)
+ {
+?>
+ <a href="/dipl/lessons/lessonstart.php?<?=SID?>" id="menue" ><< zurück zur Übersicht</a>
+
+<?
+ }
+ else
+ {
+
+
+?>
+ <a href="/dipl/lessons/lessoni.php?lessNr=<?=$lessonID[1]?>&Nr=<?=$lessonNr[1]?>&SQLtype=<?=$lessontype[1]?>&Part=<?=$lessonPart[1]?>&<?=SID?>" id="menue" >zur nächsten Aufgabe >></a>
+<?
+
+ }
+
+?>
+
+ </td>
+ </tr>
+
+<?
+ }
+
+else
+ {
+ print "<tr><td bgcolor=#FDE264 class=text>Gut die Lösung kommt der Ergebnismenge schon nah. Die Elemente der Ergebnissmenge stimmen jedoch noch nicht denen in der Musterlösung überein. Überprüfen sie bitte auch die in der Frage gesuchte Reihenfolge der gesuchten Felder!!!</td></tr>";
+?>
+
+ <tr><td>&nbsp;</td></tr><tr><td colspan=2 class=text>Folgen sie bitte dem untenstehenden link, um zur eben bearbeiteten Aufgabe zurück zu gelangen.</td></tr><tr><td align="left" bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessoni.php?lessNr=<?=$_GET['lessNr']?>&SQLtype=<?=$_GET['SQLtype']?>&Part=<?=$_GET['Part']?>&<?=SID?>" id="menue"><< zurück zur Aufgabenstellung </a></td></tr>
+
+<?
+ }
+ }
+
+?>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Ihre Anfrage ergab folgende Ergebnisse:</td>
+ </tr>
+
+ <tr>
+
+
+
+<?
+
+// Ausgabe der Ergebnisse bei falschen Ergebnismengen
+
+$stmt = dbconnect($sql);
+
+@OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 )
+ {
+ print "<TABLE BORDER=\"1\">\n"; //Ausgabe der ERgebnisse auf der Seite...
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+
+ }
+ print "<tr><td colspan=$ncols class=text><br>$ncols Spalten mit<BR></td></tr>";
+ print "<tr><td colspan=$ncols class=text>$nrows Datensätzen ausgewählt<BR></td></tr>";
+ print "<tr><td colspan=$ncols class=text>\n Ihre Anfrage war: " . $sql . "</td></tr>";
+ print "</TABLE><BR>";
+ }
+
+else
+ {
+ print "<TABLE BORDER=\"1\">\n";
+ print "<tr><td class=text>Es wurden keine Daten gefunden...<BR>\n</td></tr>";
+ print "</TABLE><BR>";
+
+ }
+
+
+?>
+
+</tr>
+</table>
+</table>
+
+<?
+
+ include("../footer.php");
+
+ if ($nrows_muster != $nrows or $ncols_muster != $ncols or $differ != 0)
+ {
+ exit; //Abbruch um hochsetzen des Aufgabenstandes zu verhindern...
+ }
+
+
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function prep_select($sql, $user, $muster, $typ, $table,$name)
+
+{
+ $_SESSION['statment'] = $sql; // für die erneute Darstellung der Anfrage im Textfeld beim Navigieren zur eben gelösten Aufgabe...
+
+ $muster_string = getmuster($_GET['lessNr']);
+
+ $compare = correct($muster_string[0] . $table); //...test ob die selbstangelegte Tabelle angefragt wird...
+
+
+
+ $stmt = createconnect($sql);
+
+
+ if ( OCIStatementType($stmt) == $typ and $sql == $compare ) //wenn die Eingabe ein select statement ist...
+
+ {
+
+ $r = @OCIExecute($stmt);
+
+ if (!$r)
+ {
+ errors($sql, $user, $_GET['lessNr']);
+ $e = OCIError($stmt); // OCIFehlermeldung in Variable einlesen
+ PrintOCIError($e); // und ausgeben
+ }
+
+ }
+
+ else
+
+ {
+
+?>
+ <tr>
+ <td><div class=titel>AUSWERTUNG</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+<? if (OCIStatementType($stmt) <> $typ)
+ {
+?>
+ <td bgcolor=#FE5555 colspan=2><div class=text>Ihr SQLStatement entspricht keiner SQL_<? print $typ; ?>_Anweisung. Bitte versuchen sie es erneut!</div></td>
+<? }
+ else
+ {
+?>
+ <td bgcolor=#FE5555 colspan=2><div class=text>Sie fragen eine Tabelle ab, die sie nicht angelegt haben. Bitte versuchen sie es erneut!</div></td>
+<?
+ }
+?>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Folgen sie bitte dem untenstehenden link, um zur eben bearbeiteten Aufgabe zurück zu gelangen.</td>
+ </tr>
+
+ <tr>
+ <td align="left" bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessoni.php?lessNr=<?=$_GET['lessNr']?>&SQLtype=<?=$_GET['SQLtype']?>&Part=<?=$_GET['Part']?>&<?=SID?>" id="menue"><< zurück zur Aufgabenstellung </a>
+ </td>
+ </tr>
+<?
+ exit; //....Ausgabe, daß ein ungültiges Statement vorliegt & Abbruch.....
+ }
+
+?>
+
+
+
+
+
+
+
+
+ <tr>
+ <td class=titel>AUSWERTUNG</td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+
+<?
+ unset($_SESSION['statment']); //bei richtiger Antwort wird die vorangegangene Lösung nicht mehr im Eingabefeld der nächsten Aufgabe angezeigt
+?>
+
+ <tr>
+ <td colspan=2 class=text>Richtig! Die Lösung der Aufgabe entspricht der gesuchten Musterlösung. Bitte drücken sie den untenstehenden link, um zur nächsten Aufgabe zu gelangen.</td>
+ </tr>
+
+ <tr>
+ <td align="left" bgcolor="#F7F7F7">
+
+<?
+
+ $lessontype = getlessontype($_SESSION['user'], $_GET['Part']); //die nachfolgende Aufgaben_ID & Typ bestimmen...
+ $lessonID = getlessonID($_SESSION['user'], $_GET['Part']);
+ $lessonPart = getlessonPart($_SESSION['user'], $_GET['Part']);
+ $lessonNr = getlessonNR($_SESSION['user'], $_GET['Part']);
+
+
+ if ($lessonID[1] == 0)
+ {
+?>
+ <a href="/dipl/lessons/lessonstart.php?<?=SID?>" id="menue" ><< zurück zur Übersicht</a>
+<?
+
+ }
+ else
+ {
+
+
+?>
+ <a href="/dipl/lessons/lessoni.php?lessNr=<?=$lessonID[1]?>&Nr=<?=$lessonNr[1]?>&SQLtype=<?=$lessontype[1]?>&Part=<?=$lessonPart[1]?>&<?=SID?>" id="menue" >zur nächsten Aufgabe >></a>
+<?
+
+ }
+
+?>
+
+ </td>
+ </tr>
+
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Ihre Anfrage ergab folgende Ergebnisse:</td>
+ </tr>
+
+ <tr>
+
+
+
+<?
+
+// Ausgabe der Ergebnisse
+
+$stmt = createconnect($sql);
+
+$check = @OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 )
+ {
+ print "<TABLE BORDER=\"1\">\n"; //Ausgabe der ERgebnisse auf der Seite...
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+
+ }
+ print "<tr><td colspan=$ncols class=text><br>$ncols Spalten mit<BR></td></tr>";
+ print "<tr><td colspan=$ncols class=text>$nrows Datensätzen ausgewählt<BR></td></tr>";
+ print "<tr><td colspan=$ncols class=text>\n Ihre Anfrage war: " . $sql . "</td></tr>";
+ print "</TABLE><BR>";
+ }
+
+else
+ {
+ print "<TABLE BORDER=\"1\">\n";
+ print "<tr><td class=text>Es wurden keine Daten gefunden...<BR>\n</td></tr>";
+ print "</TABLE><BR>";
+
+ }
+
+
+?>
+
+</tr>
+</table>
+</table>
+
+<?
+
+ include("../footer.php");
+
+ if (!$r)
+ {
+ exit; //Abbruch um hochsetzen des Aufgabenstandes zu verhindern...
+ }
+
+
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function create($sql, $user, $muster, $typ, $name)
+
+{
+ $_SESSION['statment'] = $sql; //für die erneute Darstellung der Anfrage im Textfeld beim Navigieren zur eben gelösten Aufgabe...
+
+ $stmt = dbconnect($sql);
+
+
+ if ( OCIStatementType($stmt) == $typ ) //wenn die Eingabe ein create statement ist...
+
+ {
+ $do = "create tablespace $name$user logging datafile '/opt/oracle/oradata/dbprakt/$name$user.dbf' size 2m"; //Anlegen eines Tablespace mit dem Namen+ID des Studenten (STUDENTS.NAME+STUDENTS.STUD_ID)
+ $stmt_prepare_tablespace = createconnect($do);
+ $cr_tbl_sp = @OCIExecute($stmt_prepare_tablespace);
+
+ if ($cr_tbl_sp == 1)
+ {
+ $sqlspace = $sql . " tablespace $name$user"; //ergänzen des Statements um den eigenen Tablespace
+ $stmt_create = createconnect($sqlspace);
+ $cr_tbl = @OCIExecute($stmt_create); // ausführen des create_Table_Statements...
+
+ if ($cr_tbl == 1)
+ {
+?>
+ <tr>
+ <td><div class=titel>AUSWERTUNG</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Richtig! Die Lösung der Aufgabe entspricht einer gültigen CREATE-Anweisung. Sie haben eine Ihrer Eingabe entsprechenden Tabelle angelegt. Bitte drücken sie den untenstehenden link, um zur nächsten Aufgabe zu gelangen.</td>
+ </tr><tr>
+ <td align="left" bgcolor="#F7F7F7">
+
+<?
+
+ unset($_SESSION['statment']); //bei richtiger Antwort wird die vorangegangene Lösung nicht mehr im Eingabefeld der nächsten Aufgabe angezeigt
+ $lessontype = getlessontype($_SESSION['user'], $_GET['Part']); //die nachfolgende Aufgaben_ID & Typ bestimmen...
+ $lessonID = getlessonID($_SESSION['user'], $_GET['Part']);
+ $lessonPart = getlessonPart($_SESSION['user'], $_GET['Part']);
+
+
+ if ($lessonID[1] == 0)
+ {
+?>
+ <a href="/dipl/lessons/lessonstart.php?<?=SID?>" id="menue" ><< zurück zur Übersicht</a>
+
+<?
+ }
+ else
+ {
+
+
+?>
+ <a href="/dipl/lessons/lessoni.php?lessNr=<?=$lessonID[1]?>&SQLtype=<?=$lessontype[1]?>&Part=<?=$lessonPart[1]?>&<?=SID?>" id="menue" >zur nächsten Aufgabe >></a>
+<?
+
+ }
+
+?>
+
+ </td>
+ </tr>
+
+<?
+
+ }
+
+ else
+ {
+ $do = "drop tablespace $name$user including contents AND DATAFILES CASCADE CONSTRAINTS"; //Löschen eines Tablespace mit dem Namen+ID des Studenten (STUDENTS.NAME+STUDENTS.STUD_ID)
+ $stmt_drop_tablespace = dbconnect($do);
+ $dr_tbl_sp = OCIExecute($stmt_drop_tablespace);
+ print "Tablespace wieder gelöscht....<br><br>";
+ errors($sql, $user, $_GET['lessNr']);
+ $e = OCIError($stmt_create);
+ PrintOCIError($e); // OCIFehlermeldung in Variable einlesen
+ }
+ }
+
+ }
+
+ else
+
+ {
+?>
+ <tr>
+ <td><div class=titel>AUSWERTUNG</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td bgcolor=#FE5555 colspan=2><div class=text>Ihr SQLStatement entspricht keiner SQL_<? print $typ; ?>_Anweisung. Bitte versuchen sie es erneut!</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Folgen sie bitte dem untenstehenden link, um zur eben bearbeiteten Aufgabe zurück zu gelangen.</td>
+ </tr>
+
+ <tr>
+ <td align="left" bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessoni.php?lessNr=<?=$_GET['lessNr']?>&SQLtype=<?=$_GET['SQLtype']?>&Part=<?=$_GET['Part']?>&<?=SID?>" id="menue"><< zurück zur Aufgabenstellung </a>
+ </td>
+ </tr>
+<?
+ exit;
+ }
+
+
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function insert($sql, $user, $muster, $typ, $name)
+{
+ $_SESSION['statment'] = $sql; // für die erneute Darstellung der Anfrage im Textfeld beim Navigieren zur eben gelösten Aufgabe...
+
+ $stmt = createconnect($sql);
+
+
+ if ( OCIStatementType($stmt) == $typ ) //wenn die Eingabe ein select statement ist...
+
+ {
+
+ $r = @OCIExecute($stmt);
+
+ if (!$r)
+ {
+ errors($sql, $user, $_GET['lessNr']);
+ $e = OCIError($stmt); // OCIFehlermeldung in Variable einlesen
+ PrintOCIError($e); // und ausgeben
+ }
+
+ unset($_SESSION['statment']); //bei richtiger Antwort wird die vorangegangene Lösung nicht mehr im Eingabefeld der nächsten Aufgabe angezeigt
+?>
+ <tr>
+ <td><div class=titel>AUSWERTUNG</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Richtig! Sie haben erfolgreich einen Datensatz in die von Ihnen angelegten Tabelle eingefügt. Bitte klicken sie den unten stehenden Link um zur nächsten Aufgabe zu gelangen.</td>
+ </tr>
+
+ <tr>
+ <td align="left" bgcolor="#F7F7F7">
+
+<?
+
+ $lessontype = getlessontype($_SESSION['user'], $_GET['Part']); //die nachfolgende Aufgaben_ID & Typ bestimmen...
+ $lessonID = getlessonID($_SESSION['user'], $_GET['Part']);
+ $lessonPart = getlessonPart($_SESSION['user'], $_GET['Part']);
+ $lessonNr = getlessonNR($_SESSION['user'], $_GET['Part']);
+
+?>
+ <a href="/dipl/lessons/lessoni.php?lessNr=<?=$lessonID[1]?>&Nr=<?=$lessonNr[1]?>&SQLtype=<?=$lessontype[1]?>&Part=<?=$lessonPart[1]?>&<?=SID?>" id="menue" >zur nächsten Aufgabe >></a>
+ </td>
+ </tr>
+<?
+
+ }
+
+ else
+
+ {
+
+ print "nö - kein insert";
+ $e = OCIError($stmt); // OCIFehlermeldung in Variable einlesen
+ PrintOCIError($e);
+ exit;
+
+ }
+
+
+
+}
+
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function success($sql, $id, $lesson) // Eintrag richtiger Lösungen in die vorgesehene Tabelle
+
+{
+ $check = "select Lesson_id from logon where Stud_id='$id' and LESSON_id='$lesson'";
+
+ $checkstmt = dbconnect($check);
+
+ OCIExecute($checkstmt);
+
+ $exists = OCIFetchStatement($checkstmt, $results);
+
+ if ($exists > 0)
+ {
+ }
+ else
+ {
+ $sql = ereg_replace("'", "''", $sql);
+
+ $insert = "INSERT INTO NILS.LOGON VALUES ('$id', '$lesson', sysdate, '$sql')";
+
+ $stmt = dbconnect($insert);
+
+ $result = OCIExecute($stmt);
+ }
+}
+
+//--------------------------------------------------------------------------------------------------------
+
+function tab_space_check($name, $user)
+{
+ $exist = "SELECT * FROM dba_tables WHERE OWNER = 'CREATOR' AND TABLESPACE_NAME = '$name$user'"; //Löschen eines Tablespace mit dem Namen+ID des Studenten (STUDENTS.NAME+STUDENTS.STUD_ID)
+ $exist_tablespace = createconnect($exist);
+ OCIExecute($exist_tablespace);
+ $exists = OCIFetchStatement($exist_tablespace, $results);
+
+ if ($exists == 1)
+ {
+
+ $do = "drop tablespace $name$user including contents AND DATAFILES CASCADE CONSTRAINTS"; //Löschen eines Tablespace mit dem Namen+ID des Studenten (STUDENTS.NAME+STUDENTS.STUD_ID)
+ $stmt_drop_tablespace = dbconnect($do);
+ $dr_tbl_sp = OCIExecute($stmt_drop_tablespace);
+
+ }
+}
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function errors($sql, $id, $lesson) // Eintrag in die Tabelle für die fehlerhaften Statements..
+{
+ $sql = ereg_replace("'", "''", $sql);
+
+ $insert = "INSERT INTO NILS.ERROR_LOG VALUES ('$id', '$lesson', sysdate, '$sql')";
+
+ $stmt = dbconnect($insert);
+
+ $result = OCIExecute($stmt);
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function PrintOCIError($err) //Ausgabe der ORA-Fehlermeldungen während der Aufgaben....
+{
+ ?>
+
+
+ <tr >
+ <td><div class=titel>AUSWERTUNG</div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td bgcolor=#FE5555 colspan=2><div class=text>Ihr SQLStatement konnte nicht ausgeführt werden. <?echo "<pre>".$err['message']."</pre>\n";?> Bitte versuchen sie es erneut! </div></td>
+ </tr>
+ <tr>
+ <td>&nbsp;</td>
+ </tr>
+ <tr>
+ <td colspan=2 class=text>Folgen sie bitte dem untenstehenden link, um zur eben bearbeiteten Aufgabe zurück zu gelangen.</td>
+ </tr>
+ <tr>
+ <td align="left" bgcolor="#F7F7F7" ><a href="/dipl/lessons/lessoni.php?lessNr=<?=$_GET['lessNr']?>&SQLtype=<?=$_GET['SQLtype']?>&Part=<?=$_GET['Part']?>&<?=SID?>" id="menue"><< zurück zur Aufgabenstellung </a>
+ </td>
+ </tr>
+ <tr>
+ <td></td>
+ </tr>
+</table>
+</table>
+
+
+ <?
+include("../footer.php");
+ exit;
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function getlessontype($user, $part)
+{
+
+
+$sql = "SELECT tmp.TYP FROM LESSON_ORDER LO join (SELECT * FROM LESSONS L WHERE L.AKTIV=1 AND L.PART = '$part' AND L.LESSON_ID NOT IN (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$user')) tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR";
+
+//es werden alle LessonTypen eingelesen...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+$data[$nrows] = $nrows; //auf die letzte Stelle des Arrays die Anzahl der Elemente eintragen.....
+
+return $data;
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function getlessonID($user, $part)
+{
+
+$sql = "SELECT tmp.LESSON_ID FROM LESSON_ORDER LO join (SELECT * FROM LESSONS L WHERE L.AKTIV=1 AND L.PART = '$part' AND L.LESSON_ID NOT IN (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$user')) tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR";
+
+//es werden alle LessonID eingelesen...
+
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+function getlessonNR($user, $part)
+{
+
+$sql = "SELECT LO.NR FROM LESSON_ORDER LO join (SELECT * FROM LESSONS L WHERE L.AKTIV=1 AND L.PART = '$part' AND L.LESSON_ID NOT IN (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$user')) tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR";
+
+//es werden alle LessonID eingelesen...
+
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+
+function getlessonPart($user, $part)
+{
+
+$sql = "SELECT tmp.PART FROM LESSON_ORDER LO join (SELECT * FROM LESSONS L WHERE L.AKTIV=1 AND L.PART = '$part' AND L.LESSON_ID NOT IN (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$user')) tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR";
+
+//zugehörige Parts einlesen (vorbereitung oder Abfragen)...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results);
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ }
+ }
+
+return $data;
+
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function getText($ID) //zur Bereitstellung des Aufgabentextes
+{
+
+$sql = "SELECT TEXT FROM LESSONS WHERE LESSON_ID='$ID'"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results);
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ }
+ }
+
+return $data;
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function getMuster($ID) //zur Bereitstellung des zur Aufgabe dazugehörigen Musters
+{
+
+$sql = "SELECT Muster FROM LESSONS WHERE LESSON_ID='$ID'"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results);
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ }
+ }
+
+return $data;
+
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function savestatus($user, $lessNr) //Stand Aufgaben auf die Nummer der zuletzt bearbeiteten Aufgabe hochsetzen
+{
+ $update = "UPDATE students SET lesson_id = '$lessNr' where stud_id = '$user'";
+
+ $stmt = dbconnect($update);
+
+ $result = OCIExecute($stmt);
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function correct($statement) //einfaches Parsen der Eingaben
+{
+ $statement = ereg_replace("\r\n", " ", $statement); //Umbrüche im String entfernen
+ $statement = ereg_replace(" +", " ", $statement); //mehrere Leerzeichen ersetzen
+ $statement = ereg_replace(";$", "", $statement); //semikolon am Ende abschneiden
+ $statement = ereg_replace("[ ;]$", "", $statement); //Leerzeichen + semikolon abschneiden
+ $statement = ereg_replace("[ +;]$", "", $statement); //mehrere Leerzeichen + semikolon
+ $statement = ereg_replace("[ ]$", "", $statement); //ein Leerzeichen am Ende
+ $statement = ereg_replace("[ +]$", "", $statement); // mehrere Leerzeichen am Ende
+ $statement = trim($statement); // löscht whitespace am Ende und Anfang des Strings
+
+ $statement = strtolower($statement); //alle Zeichen der Zeichenkette werden auf Kleinbuchstaben getrimmt
+
+
+ return $statement;
+}
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function getreadyMuster($ID) //Bereitstellung der bereits gelösten Aufgabenmuster
+{
+
+$sql = "SELECT LE.MUSTER FROM LESSONS LE, LOGON LO WHERE LO.STUD_ID = '$ID' AND LO.LESSON_ID=LE.LESSON_ID order by LO.DATUM"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+
+}
+
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function getreadyNr($user)
+{
+
+$sql = "SELECT LO.NR FROM LESSON_ORDER LO join (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$user') tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+
+}
+
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+
+function getreadyText($ID) //Bereitstellung der bereits gelösten Aufgabentexte
+{
+
+$sql = "SELECT LE.TEXT FROM LESSONS LE, LOGON LO WHERE LO.STUD_ID = '$ID' AND LO.LESSON_ID=LE.LESSON_ID order by LO.DATUM"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+}
+
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+
+function getreadystatement($ID) //Bereitstellung der bereits gelösten Studentenlösungen
+{
+
+$sql = "SELECT LO.STATEMENT FROM LESSONS LE, LOGON LO WHERE LO.STUD_ID = '$ID' AND LO.LESSON_ID=LE.LESSON_ID order by LO.DATUM"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+}
+
+
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function todoText($ID)
+{
+
+$sql = "SELECT tmp.TEXT FROM LESSON_ORDER LO join (SELECT * FROM LESSONS L WHERE L.AKTIV=1 AND L.LESSON_ID NOT IN (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$ID')) tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+}
+
+
+
+//--------------------------------------------------------------------------------------------------------
+
+
+function todoNr($ID)
+{
+
+$sql = "SELECT LO.NR FROM LESSON_ORDER LO join (SELECT * FROM LESSONS L WHERE L.AKTIV=1 AND L.LESSON_ID NOT IN (SELECT LOGON.LESSON_ID FROM LOGON WHERE STUD_ID = '$ID')) tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR"; //...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen... nrows = Anzahl der Elemente
+
+if ( $nrows > 0 )
+ {
+ while ( $column = each($results) )
+ {
+ $data = $column['value']; // alle Values in ein Array übertragen....
+ }
+ }
+
+return $data;
+
+}
+
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/links.php b/doc/niels-diplom/Dateistruktur/links.php
new file mode 100755
index 0000000..ca5ec30
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/links.php
@@ -0,0 +1,62 @@
+<?
+ include("header.php");
+?>
+
+ <a name="start"></a>
+
+ <tr>
+ <td class="titel">Datenbanken Praktikum Prof. Dr.-Ing Düsterhöft</td>
+ </tr>
+ <tr>
+ <td valign="top" class="text">
+ <table>
+ <tr>
+ <td class="text">
+ In diesem Bereich befindet sich eine hilfreiche Linksammlung zu Seiten die das Thema der Vorlesung behandeln. Viel Spaß beim Entdecken...
+ </td>
+ </tr>
+ <tr>
+ <td class="text">&nbsp;</td>
+ </tr>
+ <tr><td>
+ <ul>
+ <li>
+ <a href="http://www.datenbank-sql.de/index.htm" class="link" target=_blank>ORACLE-SQL-Tutorial</a>
+ </li>
+ <li>
+ <a href="/dipl/help/ORACLE_SQL.pdf" class="link" target=_blank>übersichtliche ORACLE/SQL-Referenz (PDF)</a>
+ </li>
+ <li>
+ <a href="http://www.w3schools.com/sql/" class="link" target=_blank>W3_Schools_TUTORIAL</a>
+ </li>
+ <li>
+ <a href="http://www.sys-con.com/pbdj/source/12-97/36.htm" class="link" target=_blank>TRIGGER verstehen</a>
+ </li>
+ <li>
+ <a href="http://rfhs8012.fh-regensburg.de/~oracle/oracle/oradoc.html" class="link" target=_blank>ORACLE-DOKUMENTATION (ausführlich)</a>
+ </li>
+
+
+ <li>
+ <a href="http://www.mitlinx.de/oracledocs/" class="link" target=_blank>DOCUMENTATION zu ORACLE 9i - Tips und Tricks</a>
+ </li>
+ </ul>
+ </td>
+ </tr>
+ </table>
+
+ <p>&nbsp;</p></td>
+ </tr>
+</table>
+ </td>
+ </tr>
+ </table>
+</td> </tr>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+<?
+include("footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/logout/bye.php b/doc/niels-diplom/Dateistruktur/logout/bye.php
new file mode 100755
index 0000000..1a1e8f4
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/logout/bye.php
@@ -0,0 +1,69 @@
+<?php
+
+//include("./save.php");
+
+//savestatus($_GET['user'], $_GET['lessNr']);
+
+$wer = $_GET['Login'];
+
+$message = "Um sich erneut anzumelden, klicken Sie bitte auf das Loginfeld...";
+
+?>
+
+<head>
+<title>Datenbank_Praktikum_Duesterhoeft</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
+<meta name="keywords" content="Datenbank Praktikum Duesterhoeft Hochschule Wismar">
+<meta name="description" content="Bearbeitung von Praktikumsaufgaben von zu Hause">
+<link href="/dipl/css/stilneu1.css" rel="stylesheet" type="text/css">
+</head>
+
+<body class="titel">
+<table width="800" height="73" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+
+ <table width="800" border="0" cellpadding="2" cellspacing="0">
+ <tr>
+ <td width="613" height="110" valign="top">
+ <img src="/dipl/css/head.gif" width="555" height="100"></td>
+ <table class="titel" border=0 cellpadding=0 cellspacing=0>
+ <tr>
+ <td ><div >Bye...</div></td><br>
+
+ </tr>
+ <tr>
+ <td id=tdlist1 colspan=30><div id=fliesstext><?echo " User $wer hat sich ausgelogged...";?></div></td>
+ </tr>
+
+ <tr><td id=tdlistl colspan=30>&nbsp;</td></tr>
+
+ </table>
+
+
+ </tr>
+ <tr>
+ <td colspan="2"><img src="/dipl/css/ekg_long.gif" width="613" height="15" border="0">
+ <a href="../praktikum.php">
+ <img src="/dipl/css/ekg_Login.gif" alt="logout" border="0">
+ </a>
+ </td>
+ </tr>
+ </form>
+ </table>
+
+
+ <br>
+ <?
+ echo $message;
+ session_unset();
+ //session_destroy();
+ ?>
+
+
+
+
+
+
+
+
diff --git a/doc/niels-diplom/Dateistruktur/logout/save.php b/doc/niels-diplom/Dateistruktur/logout/save.php
new file mode 100755
index 0000000..f26b293
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/logout/save.php
@@ -0,0 +1,15 @@
+<?
+
+include ("../connect.php");
+
+function savestatus($user, $lessNr)
+{
+ $update = "UPDATE students SET lesson_id = '$lessNr' where stud_id = '$user'"; // update den Aufgabenstand....
+
+ $stmt = dbconnect($update);
+
+ $result = OCIExecute($stmt);
+}
+
+?>
+
diff --git a/doc/niels-diplom/Dateistruktur/nosession.php b/doc/niels-diplom/Dateistruktur/nosession.php
new file mode 100755
index 0000000..6b38952
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/nosession.php
@@ -0,0 +1,36 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+
+<html>
+<head>
+ <title>Datenbank_Praktikum_Duesterhoeft</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
+ <meta name="keywords" content="Datenbank Praktikum Duesterhoeft Hochschule Wismar">
+ <meta name="description" content="Bearbeitung von Praktikumsaufgaben von zu Hause">
+ <meta HTTP-EQUIV="Refresh" CONTENT="5; URL=/dipl/praktikum.php">
+ <link href="/dipl/css/stilneu1.css" rel="stylesheet" type="text/css">
+</head>
+
+<body class="titel">
+<table width="800" height="73" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+
+ <table width="800" border="0" cellpadding="2" cellspacing="0">
+ <tr>
+ <td width="613" height="110" valign="top">
+ <img src="/dipl/css/head.gif" width="555" height="100"></td>
+
+ <td width="179" height="110" align="left" class="titel">
+ Sie benutzen keine registrierte Session. Bitte loggen Sie sich erneut ein. In 5 Sekunden werden sie zur Startseite weitergeleitet ...
+ </td>
+
+ </tr>
+ <tr>
+ <td colspan="2"><img src="/dipl/css/ekg_long.gif" width="613" height="15" border="0">
+
+ </td>
+ </tr>
+ </form>
+ </table>
+</body>
+</html> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/portal/portal.php b/doc/niels-diplom/Dateistruktur/portal/portal.php
new file mode 100755
index 0000000..75df262
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/portal/portal.php
@@ -0,0 +1,44 @@
+<?
+ include("../header.php");
+?>
+
+ <a name="start"></a>
+
+ <tr>
+ <td class="titel">Datenbanken-Praktikum Prof. Dr.-Ing Düsterhöft</td>
+ </tr>
+ <tr>
+ <td valign="top" class="text"><table>
+ <tr>
+ <td valign="center" class="text">Herzlich Willkommen <?print $_SESSION['fname'] . " " . $_SESSION['name']?>!<br><br>Der Datenbankkurs von Prof. Dr.-Ing. Antje Düsterhöft ist ab sofort auch im Internet verfügbar. Die Seite ist in verschiedene für Sie nützliche Bereiche unterteilt, die sie jederzeit bequem über das Navigationsmenü erreichen können.<br>Im Bereich "ABSTRAKT" unterhalb des Navigationsmenüs finden sie eine kurze Erläuterung der einzelnen Menüpunkte, die eingeblendet werden, wenn sie mit der Maus über den entsprechenden Punkt Menü fahren.
+ </td>
+ </tr>
+ <tr>
+ <td valign="center" class="textred"><b>Das Praktikum befindet sich momentan noch in der Testphase!!</b>
+ </td>
+ </tr>
+ <tr>
+ <td valign="center" class="textred"><b>! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! </b></td>
+ </tr>
+ <tr>
+ <td valign="center" class="text">Die jetzige Version testet die Ergebnismengen der eingegebenen Statements und vergleicht diese mit der Ergebnismenge der Referenzlösung. Wichtig ist nur die richtige Reihenfolge der Ergebnisse - diese ist in der jeweiligen Aufgabenstellung dokumentiert.<br><br>Ansonsten lässt diese Version alle Lösungen mit der richtigen Ergebnismenge als richtig gelöst gelten. Beim ersten Test am Montag, dem 07.06.04 wurde die Eingabe streng mit einem Musterstring verglichen und nur kleine Abweichungen durch einen Parsingvorgang zugelassen. Ich hoffe, daß das Lösen der Aufgaben nun einfacher wird.<br>
+ Fehlermeldungen oder Verbesserungsvorschläge bitte an <a href="mailto:n.weber@stud.hs-wismar.de">Nils Weber</a>. Viel Spaß beim Testen!!
+ </td>
+ </tr>
+ </table>
+
+ <p>&nbsp;</p></td>
+ </tr>
+</table>
+ </td>
+ </tr>
+ </table>
+</td> </tr>
+ <tr>
+ <td width="200" align="right" valign="top" class="randmenu"><p>&nbsp;</td>
+ </tr>
+ </table>
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/praktikum.php b/doc/niels-diplom/Dateistruktur/praktikum.php
new file mode 100755
index 0000000..5a51c4b
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/praktikum.php
@@ -0,0 +1,121 @@
+<?php
+
+ if (isset($_POST['Login']))
+ {
+ include("connect.php");
+
+ $Login = $_POST['Login'];
+ $Password = $_POST['Password'];
+
+ $sql = "SELECT typ as X, stud_id as Y, aktiv as Z, datum as dat, name, f_name FROM students WHERE LOGIN = '$Login' AND NAME = '$Password'";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+ if ( $nrows == 1 )
+ {
+
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $type = OCIResult($stmt, "X");
+ $user_id = OCIResult($stmt, "Y");
+ $aktiv = OCIResult($stmt, "Z");
+ $datum = OCIResult($stmt, "DAT");
+ $name = OCIResult($stmt, "NAME");
+ $fname = OCIResult($stmt, "F_NAME");
+ }
+
+ if ($aktiv == 1) // Nutzer aktiv??
+ {
+
+ session_start();
+
+ $_SESSION['type'] = $type;
+ $_SESSION['user'] = $user_id;
+ $_SESSION['since'] = $datum;
+ $_SESSION['name'] = $name;
+ $_SESSION['fname'] = $fname;
+
+?>
+
+ <html>
+ <meta http-equiv="refresh" content="0; URL=/dipl/portal/portal.php?<?=SID?>">
+ </html>
+
+<?
+
+ }
+
+ else // Nutzer nicht aktiv!
+
+ {
+ if ( $aktiv == 0 ) $message = "Ihr Login ist derzeit nicht aktiviert - bitte wenden sie sich an Ihren Administrator!";
+ }
+
+
+ }
+
+ else // Loginname oder Passwort falsch geschrieben oder nicht vorhanden!
+
+ if ($rows == 0) $message = "Login oder Passwort ungültig!";
+
+
+
+ }
+
+ ?>
+
+
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//DE"
+ "http://www.w3.org/TR/html4/loose.dtd">
+<html>
+
+
+<head>
+<title>Datenbank_Praktikum_Duesterhoeft</title>
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
+<meta name="keywords" content="Datenbank Praktikum Duesterhoeft Hochschule Wismar">
+<meta name="description" content="Bearbeitung von Praktikumsaufgaben von zu Hause">
+<META http-equiv="Page-Enter" content="blendTrans(Duration=0.4)">
+<META http-equiv="Page-Exit" content="blendTrans(Duration=0.4)">
+<link href="/dipl/css/stilneu1.css" rel="stylesheet" type="text/css">
+</head>
+
+<body class="titel">
+<table width="800" height="73" border="0" cellpadding="0" cellspacing="0">
+ <tr>
+ <td>
+
+ <table width="800" border="0" cellpadding="2" cellspacing="0">
+ <tr>
+ <td width="613" height="110" valign="top">
+ <img src="/dipl/css/head.gif" width="555" height="100"></td>
+
+ <td width="179" height="110" align="right">
+ <form action="<?=$PHP_SELF?>" method="post" class="titel" height="110">
+ login&nbsp;<input name="Login" type="text" class="inputtext" size="15">
+ passwort&nbsp;<input name="Password" type="password" class="inputtext" size="15">
+ <img src="/dipl/css/HS.gif" width="179" height="45">
+ </td>
+
+ </tr>
+ <tr>
+ <td colspan="2"><img src="/dipl/css/ekg_long.gif" width="613" height="15" border="0">
+ <input type="image" name="submitok" src="/dipl/css/ekg_Login.gif" width="179" height="15" border="0" onclick="javascript:document.FormName.submit()">
+ </td>
+ </tr>
+ </form>
+ </table>
+
+
+
+ <? echo $message
+ ?>
+
+</body>
+</html> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/results/admin_result.php b/doc/niels-diplom/Dateistruktur/results/admin_result.php
new file mode 100755
index 0000000..00a6863
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/results/admin_result.php
@@ -0,0 +1,489 @@
+<?php
+
+ include("../header.php");
+
+ $user = $_SESSION['user'];
+
+ if (! isset($_GET['ID']))
+ {$message="Um Details anzuzeigen klicken sie bitte in der Übersicht den entsprechenden Link";}
+
+ $sql = "SELECT count(lesson_id) FROM lessons where aktiv=1"; // wieviele Aufgabe sind derzeit aktiv
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results);
+
+ if ( $nrows == 1 )
+ {
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $max = OCIResult($stmt, $results); // Anzahl der zu lösenden Aufgaben
+ }
+ }
+
+ //.....Info zu allen AKTIVIERTEN Nutzern.......
+
+ $sql = "select F_name as VORNAME, NAME, tmp.STATUS, S.STUD_ID as DEATILS from STUDENTS S JOIN (SELECT Count(distinct LESSON_ID) as STATUS, stud_ID from logon group by stud_ID) tmp on s.STUD_ID = tmp.STUD_ID and S.AKTIV=1";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+?>
+
+
+ <tr >
+ <td><div class=titel_15>AUSWERTUNGEN</div></td>
+ </tr>
+
+ <tr>
+ <td><br></td>
+ </tr>
+
+ <tr>
+ <td bgcolor=#e99900 colspan=2><div class=text>Übersicht über alle Studenten - Klick in die Spalte Detail zeigt die Einzelauswertung der Studenten im unteren Bereich der Seite....</div></td>
+ </tr>
+
+ <tr>
+ <td>
+
+
+
+
+
+
+<?
+
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+if ( $nrows > 0 )
+ {
+ print "<BR><TABLE BORDER=\"1\" class=text>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ $col=0;
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+
+ if ($col==2)
+ {
+ $percent = round($data[$i] * 100/$max);
+
+ if ($percent <= 25)
+ print "<td width=300>&nbsp;<img src=\"/dipl/css/balken_rot.gif\" width=$percent height=10 > $data[$i] Aufgaben gelöst ($percent %)</td>";
+ if ($percent > 25 and $percent < 50)
+ print "<td width=300>&nbsp;<img src=\"/dipl/css/balken_orange.gif\" width=$percent height=10 > $data[$i] Aufgaben gelöst ($percent %)</td>";
+ if ($percent >= 50)
+ print "<td width=300>&nbsp;<img src=\"/dipl/css/balken_gelb.gif\" width=$percent height=10 > $data[$i] Aufgaben gelöst ($percent %)</td>";
+ if ($percent == 100)
+ print "<td width=300>&nbsp;<img src=\"/dipl/css/abgeschlossen.gif\"> Alle Aufgaben erfolgreich gelöst.</td>";
+ }
+
+ else if ($col==3)
+ print "<TD><a href=\"/dipl/results/admin_result.php?ID=$data[$i]&" . SID . "\"\">>></a></TD>";
+ else
+ print "<TD>$data[$i]</TD>\n"; // Name und vorname ausgeben....
+ $col++;
+ }
+ print "</TR>\n";
+ }
+ print "<tr><td colspan=3 class=text>$nrows Studenten sind derzeit im Praktikum aktiv.<BR></td></tr>";
+ print "</TABLE><BR>";
+}
+
+
+$id = $_GET['ID'];
+
+$sql="select F_NAME, NAME from STUDENTS WHERE STUD_ID='$id'"; // Namen des STUDEnten auswählen, dessen DETaILs angezeigt werden sollen...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+while(OCIFetch($stmt))
+ {
+ $fname = OCIResult($stmt, "F_NAME");
+ $name = OCIResult($stmt, "NAME");
+ }
+
+?>
+
+<br><br>
+</td>
+</tr>
+
+<?
+
+ $sql = "SELECT distinct STUDENTS.F_NAME as VORNAME, STUDENTS.NAME, STUDENTS.GROUPS as GRUPPE, STUDENTS.DATUM as \"zugelassen seit:\", count(ERROR_LOG.STUD_ID) as Versuche from STUDENTS, ERROR_LOG where STUDENTS.STUD_ID not in (select distinct STUD_ID from LOGON) and TYP = 0 and ERROR_LOG.STUD_ID (+) = STUDENTS.STUD_ID group by STUDENTS.STUD_ID, STUDENTS.NAME, STUDENTS.F_NAME, STUDENTS.GROUPS, STUDENTS.DATUM";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+?>
+
+ <tr>
+ <td bgcolor=#e99900 colspan=2><div class=text>Übersicht über alle Studenten die fürs Praktikum aktiviert sind, jedoch noch keine Aufgabe gelöst haben....</div></td>
+ </tr>
+
+ <tr>
+ <td>
+
+<?
+
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+if ( $nrows > 0 )
+ {
+ print "<BR><TABLE BORDER=\"1\" class=text>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n"; // Name und vorname ausgeben....
+ }
+ print "</TR>\n";
+ }
+ print "<tr><td colspan=3 class=text>$nrows Studenten sind derzeit im Praktikum zugelassen ohne Aufgaben gelöst zu haben...<BR></td></tr>";
+ print "</TABLE><BR>";
+}
+
+?>
+
+<br><br>
+</td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#e99900 colspan=2><div class=text>DETAILS von <b><? print $fname . " " . $name;?></b>:</div></td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#F7F7F7 colspan=2><div class=text><b>Die richtigen Lösungen:</b></div></td>
+</tr>
+
+<tr>
+<td>
+
+<?
+
+$id = $_GET['ID'];
+
+
+$sql="select LO.NR, tmp.STATEMENT from LESSON_ORDER LO join (select L.LESSON_ID, L.STATEMENT from LOGON L where STUD_ID='$id')tmp on LO.LESSON_ID=tmp.LESSON_ID order by LO.NR"; // wähle alle studenten aus, die fertig sind...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<BR><TABLE BORDER=\"1\" class=text width=560>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+ print "</TABLE><BR>";
+} else
+ {
+ if (isset($_GET['ID']))
+ {
+ $message = "Es sind noch keine Aufgaben gelöst worden....";
+ }
+
+ print "<tr><td class=text>" . $message . "<BR></tr></td>";
+ }
+
+
+
+?>
+
+</td>
+</tr>
+
+
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#F7F7F7 colspan=2><div class=text><b>Aufgaben, die bisher noch nicht bearbeitet wurden:</b></div></td>
+</tr>
+<tr>
+<td>
+
+<?
+
+
+$sql="select LO.NR from LESSON_ORDER LO join (select LESSON_ID from LESSONS where AKTIV=1 and LESSON_ID not in (select LESSON_ID from ERROR_LOG where STUD_ID='$id' union select LESSON_ID from LOGON where STUD_ID='$id'))tmp on LO.LESSON_ID=tmp.LESSON_ID group by LO.NR"; // wähle alle studenten aus, die fertig sind...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if (isset($_GET['ID']) and $nrows > 0 ) {
+ print "<BR><TABLE BORDER=\"1\" class=text width=560>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+ print "</TABLE><BR>";
+} else
+ {
+ if (isset($_GET['ID']))
+ {
+ $message = "Es sind alle Aufgaben schon versucht worden zu lösen....";
+ }
+
+ print "<tr><td class=text>" . $message . "<BR></tr></td>";
+ }
+
+
+
+?>
+
+</td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+
+<tr>
+<td bgcolor=#FFDE00 colspan=2><div class=text><b>Lösungsversuche:</b></div></td>
+</tr>
+
+
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#F7F7F7 colspan=2><div class=text><b>Aufgaben, die beim ersten Versuch gelöst wurden:</b></div></td>
+</tr>
+<tr>
+<td>
+
+<?
+
+$sql="select LO.NR from LESSON_ORDER LO join (select distinct LESSON_ID from LOGON where STUD_ID='$id' and LESSON_ID not in (select LESSON_ID FROM ERROR_LOG where STUD_ID='$id'))tmp on LO.LESSON_ID=tmp.LESSON_ID order by LO.NR"; // Versuche pro Aufgabe...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<br><TABLE BORDER=\"1\" class=text width=560>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+ print "</TABLE><BR>";
+} else
+ {
+ if (isset($_GET['ID']))
+ {
+ $message = "Es sind noch keine Aufgaben beim ersten Versuch gelöst worden....";
+ }
+
+ print "<tr><td class=text>" . $message . "<BR></tr></td>";
+ }
+
+?>
+
+
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#F7F7F7 colspan=2><div class=text><b>Lösungsversuche pro Aufgabe:</b></div></td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td>
+
+<?
+
+$sql="select LO.NR, sum(tmp.versuche) as VERSUCHE from LESSON_ORDER LO join (select LESSON_ID, count(LESSON_ID) as versuche from ERROR_LOG where STUD_ID='$id' group by LESSON_ID union select distinct LESSON_ID, count(LESSON_ID) as versuche from LOGON where STUD_ID='$id' group by LESSON_ID)tmp on LO.LESSON_ID=tmp.LESSON_ID group by LO.NR"; // Versuche pro Aufgabe...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<TABLE BORDER=\"1\" class=text width=560>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+ print "</TABLE><BR>\n";
+} else
+ {
+ if (isset($_GET['ID']))
+ {
+ $message = "Es sind noch keine Aufgaben gelöst worden....";
+ }
+
+ print "<tr><td class=text>" . $message . "<BR></tr></td>";
+ }
+
+
+
+?>
+
+</td>
+</tr>
+
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#F7F7F7 colspan=2><div class=text><b>Die fehlerhaften Statements nach Aufgabe sortiert:</b></div></td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td>
+
+<?
+
+$sql="select LO.NR, tmp.STATEMENT from LESSON_ORDER LO join (select L.LESSON_ID, L.STATEMENT from ERROR_LOG L where STUD_ID='$id')tmp on LO.LESSON_ID=tmp.LESSON_ID order by LO.NR"; // wähle alle studenten aus, die fertig sind...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<TABLE BORDER=\"1\" class=text width=560>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+
+ }
+ print "<tr><td colspan=3 class=text>Bisher wurden $nrows Anfragen abgesetzt.<BR></td></tr>";
+ print "</TABLE>\n";
+} else
+ {
+ if (isset($_GET['ID']))
+ {
+ $message = "Es sind noch keine Aufgaben gelöst worden....";
+ }
+
+ print "<tr><td class=text>" . $message . "<BR></tr></td>";
+ }
+
+
+?>
+
+</td>
+</tr>
+
+</table>
+</table>
+</table>
+
+
+<?
+include("../footer.php");
+?>
+
+
+
diff --git a/doc/niels-diplom/Dateistruktur/results/statistic.php b/doc/niels-diplom/Dateistruktur/results/statistic.php
new file mode 100755
index 0000000..74e0fb8
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/results/statistic.php
@@ -0,0 +1,211 @@
+<?php
+
+ include("../header.php");
+
+ $user = $_SESSION['user'];
+
+ $sql = "select max(tmp.versuche) from ERROR_LOG join (SELECT LESSON_ID, count(lesson_ID) as VERSUCHE FROM error_log group by LESSon_ID)tmp on tmp.LESSON_ID=ERROR_LOG.LESSON_ID"; // wieviele Aufgabe sind derzeit aktiv
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results);
+
+ if ( $nrows == 1 )
+ {
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $max = OCIResult($stmt, $results); // Anzahl der zu lösenden Aufgaben
+ }
+ }
+
+
+ $sql = "select LO.NR, VERSUCHE_insgesamt from LESSON_ORDER LO join (SELECT LESSON_ID, count(lesson_ID) as VERSUCHE_insgesamt FROM error_log group by LESSON_ID)tmp on LO.LESSON_ID=tmp.LESSON_ID order by LO.NR";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+?>
+
+ <tr >
+ <td><div class=titel_15>STATISTIK</div></td>
+ </tr>
+ <tr>
+ <td><br></td>
+ </tr>
+ <tr>
+ <td bgcolor=#e99900 colspan=2><div class=text><b>Überblick über die Lösungsversuche pro Aufgabe:</b></div></td>
+ </tr>
+ <tr>
+ <td>
+
+<?
+
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+if ( $nrows > 0 )
+ {
+ print "<BR><TABLE BORDER=\"1\" class=text>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ $col=0;
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+
+ if ($col==1)
+ {
+ $percent = $data[$i] * 100/$max; //wieviel Prozent der aufgaben hat der Student gelöst
+
+ $width = $percent * 400/100; // Darstellung per Balkendiagramm
+
+ if ($percent <= 25)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_gruen.gif\" width=$width height=10 > $data[$i] Anfragen</td>";
+ if ($percent > 25 and $percent < 50)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_orange.gif\" width=$width height=10 > $data[$i] Anfragen</td>";
+ if ($percent >= 50)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_rot.gif\" width=$width height=10 > $data[$i] Anfragen</td>";
+ }
+
+ else
+ print "<TD>$data[$i]</TD>\n";
+ $col++;
+ }
+ print "</TR>\n";
+ }
+ print "<tr><td colspan=3 class=text>Verteilung der Anzahl Anfragen nach Aufgaben.<BR></td></tr>";
+ print "</TABLE><BR>";
+ }
+
+
+?>
+
+<br><br>
+</td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td bgcolor=#e99900 colspan=2><div class=text><b>durchschnittlich zur Lösung benötigte Zeit in Tagen:</b>:</div></td>
+</tr>
+<tr>
+<td colspan=2><div class=text>&nbsp;</div></td>
+</tr>
+<tr>
+<td>
+
+<?
+
+$sql="select max(schnitt) from LESSON_ORDER LO join (select LESSON_ID, round(sum(time)/count(LESSON_ID),1) as schnitt from (select LESSON_ID, STUD_ID, max(datum) - min(datum) as time from (select stud_ID, datum, LESSON_ID from ERror_log union select stud_ID, datum, LESSON_ID from Logon) group by (LESSON_ID, STUD_ID)) group by LESSON_ID)tmp on LO.LESSON_ID=tmp.LESSON_ID order by LO.NR";
+
+$stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+ $nrows = OCIFetchStatement($stmt,$results);
+
+ if ( $nrows == 1 )
+ {
+ OCIExecute($stmt);
+
+ while(OCIFetch($stmt))
+ {
+ $tagmax = OCIResult($stmt, $results); // Anzahl der zu lösenden Aufgaben
+ }
+ }
+
+
+
+
+$sql="select LO.NR, schnitt as \"benötigte Zeit\" from LESSON_ORDER LO join (select LESSON_ID, round(sum(time)/count(LESSON_ID),1) as schnitt from (select LESSON_ID, STUD_ID, max(datum) - min(datum) as time from (select stud_ID, datum, LESSON_ID from ERror_log union select stud_ID, datum, LESSON_ID from Logon) group by (LESSON_ID, STUD_ID)) group by LESSON_ID)tmp on LO.LESSON_ID=tmp.LESSON_ID order by LO.NR";// benötigte Zeit ermitteln...
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results);
+
+
+if ( $nrows > 0 )
+ {
+ print "<BR><TABLE BORDER=\"1\" class=text width=560>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) )
+ {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ )
+ {
+ $col=0;
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) )
+ {
+ $data = $column['value'];
+
+ if ($col==1)
+ {
+
+ $wert = (float)(ereg_replace(",", ".", $data[$i])); // umwandeln in float
+ $percent = $wert * 100/$tagmax; //wieviel Prozent der aufgaben hat der Student gelöst
+
+ $width = $percent * 4;
+
+ if ($percent >= 0 and $percent <= 25)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_gruen.gif\" width=$width height=10 > $wert Tage</td>";
+ if ($percent > 25 and $percent < 50)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_orange.gif\" width=$width height=10 > $wert Tage</td>";
+ if ($percent >= 50)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_rot.gif\" width=$width height=10 > $wert Tage</td>";
+ /*if ($percent == 0)
+ print "<td width=500>&nbsp;$wert Tage</td>";
+ if ($percent > 0 and $percent < 1)
+ print "<td width=500>&nbsp;<img src=\"/dipl/css/balken_rot.gif\" width=2 height=10 >$wert Tage</td>";*/
+ }
+
+ else
+ print "<TD>$data[$i]</TD>\n"; // Name und vorname ausgeben....
+ $col++;
+ }
+ print "</TR>\n";
+ }
+ }
+else
+ {
+ if (isset($_GET['ID']))
+ {
+ $message = "Es sind noch keine Aufgaben gelöst worden....";
+ }
+
+ print "<tr><td class=text>" . $message . "<BR></tr></td>";
+ }
+
+?>
+
+</td>
+</tr>
+
+</table>
+</table>
+</table>
+
+
+<?
+include("../footer.php");
+?> \ No newline at end of file
diff --git a/doc/niels-diplom/Dateistruktur/results/user_result.php b/doc/niels-diplom/Dateistruktur/results/user_result.php
new file mode 100755
index 0000000..dc09f63
--- /dev/null
+++ b/doc/niels-diplom/Dateistruktur/results/user_result.php
@@ -0,0 +1,187 @@
+<?php
+
+ include("../header.php");
+
+ $user = $_SESSION['user'];
+
+ //$sql = "SELECT lesson_ID as Aufgabe, Datum, Statement as Lösung FROM logon WHERE STUD_ID = '$user' order by logon.DATUM";
+
+ $sql ="SELECT LO.NR as Aufgabe, tmp.DATUM, tmp.STATEMENT FROM LESSON_ORDER LO join (SELECT * FROM LOGON WHERE STUD_ID = '$user') tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR";
+
+ $stmt = dbconnect($sql);
+
+ OCIExecute($stmt);
+
+?>
+
+
+<tr >
+<td class=titel>persönliche Auswertung von <?echo $_SESSION['fname'] . " " . $_SESSION['name']?></td>
+</tr>
+
+<tr>
+<td><br></td>
+</tr>
+
+<tr>
+<td bgcolor=#e99900 colspan=2 class=text>Ihre bisher erfolgreichen Anfragen waren:</td>
+</tr>
+
+<tr>
+<td>
+
+
+
+
+<?
+
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<BR><TABLE Border=1 class=text>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+
+ print "<tr><td colspan=3 class=text>$nrows Datensätzen ausgewählt<BR></td></tr>";
+ print "</TABLE><BR>";
+ }
+
+else
+ {
+ print "<TABLE BORDER=\"1\">\n";
+ print "<tr><td class=text>Bisher wurden noch keine Aufgaben erfolgreich gelöst...<BR>\n</td></tr>";
+ print "</TABLE><BR>";
+
+ }
+?>
+<br><br>
+</td>
+</tr>
+
+<tr>
+<td bgcolor=#e99900 colspan=2 class=text>Anfrageversuche waren:</td>
+</tr>
+
+<tr>
+<td>
+
+<?
+
+//$sql = "SELECT lesson_ID as Aufgabe, Datum, Statement as Lösung FROM ERROR_LOG WHERE STUD_ID = '$user' order by ERROR_LOG.DATUM";
+
+$sql = "SELECT LO.NR as Aufgabe, tmp.DATUM, tmp.STATEMENT FROM LESSON_ORDER LO join (SELECT * FROM ERROR_LOG WHERE STUD_ID = '$user') tmp ON tmp.LESSON_ID = LO.LESSON_ID order by LO.NR";
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<BR><TABLE BORDER=\"1\" class=text>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+
+ print "<tr><td colspan=3 class=text>$nrows Datensätzen ausgewählt<BR></td></tr>";
+ print "</TABLE><BR>";
+ }
+
+else
+ {
+ print "<TABLE BORDER=\"1\">\n";
+ print "<tr><td class=text>Es wurden keine Daten gefunden...<BR>\n</td></tr>";
+ print "</TABLE><BR>";
+
+ }
+
+?>
+<br><br>
+</td>
+</tr>
+
+<tr>
+<td bgcolor=#e99900 colspan=2 class=text>Praktikumsdauer:</td>
+</tr>
+
+<tr>
+<td>
+
+<?
+
+$start = $_SESSION['since'];
+
+$sql = "select round(max(datum) - min(datum),2) as \"BENÖTIGTE ZEIT IN TAGEN\" from (select datum from ERror_log where Stud_id = '$user' union select datum from Logon where Stud_id = '$user')";
+
+$stmt = dbconnect($sql);
+
+OCIExecute($stmt);
+
+$nrows = OCIFetchStatement($stmt,$results); //Ergebnisse in Array eintragen...
+
+
+if ( $nrows > 0 ) {
+ print "<BR><TABLE BORDER=\"1\" class=text>\n";
+ print "<TR>\n";
+ while ( list( $key, $val ) = each( $results ) ) {
+ print "<TH valign=left>$key</TH>\n";
+ }
+ print "</TR>\n";
+
+ for ( $i = 0; $i < $nrows; $i++ ) {
+ reset($results);
+ print "<TR>\n";
+ while ( $column = each($results) ) {
+ $data = $column['value'];
+ print "<TD>$data[$i]</TD>\n";
+ }
+ print "</TR>\n";
+ }
+ print "</TABLE>\n";
+} else {
+ echo "No data found<BR>\n";
+}
+print "$nrows Records Selected<BR>\n";
+
+?>
+
+</td>
+</tr>
+
+</table>
+</table>
+</table>
+
+
+<?
+include("../footer.php");
+?>
+
diff --git a/doc/niels-diplom/dipl.pdf b/doc/niels-diplom/dipl.pdf
new file mode 100755
index 0000000..00b39e9
--- /dev/null
+++ b/doc/niels-diplom/dipl.pdf
Binary files differ