#!/usr/bin/perl use warnings; use strict; use DBI; use Tk; #erstellt neues Fenster mit Standart 500x500 my $window = MainWindow->new(); $window->geometry("500x500"); #Größerziehen verhindern $window->resizable(0,0); #Titel des Fensters $window->title('Fehlzeiten der Schueler'); #Frame wird erstellt my $fo = $window->Frame()->pack(-side => 'top', -expand => 1, -fill => 'both', ); #############################FRAME-OBEN############################# #Frame_Oben wird in Frame fo erstellt my $Frame_Oben = $fo->Frame(-borderwidth => 3, -relief => 'groove', ) ->pack(-side => 'top', -expand => 0, -fill => 'both', ); $Frame_Oben ->Label(-text=>"FEHLZEITEN")->pack(-side=>'top'); #############################FRAME-OBEN############################# #############################FRAME-EINS############################# # Frame1 in FRAME fo my $f1 = $fo->Frame(-borderwidth => 3, -relief => 'groove', ) ->pack(-side => 'left', -expand => 1, -fill => 'both', ); $f1->Label(-text=>'Klassen')->pack(); #Datenbankverbindung my $dbh = DBI::->connect("dbi:SQLite:dbname=./datenbank.db","","") or die print "FEHLER"; if (!$dbh) { print "Zugriff verweigert!\n"; exit (1); } #SQL befehl, liefert die namen der Klassen zurück my $sql = "SELECT name FROM klassen"; my $sth = $dbh->prepare($sql) or die print "FEHLER"; my $rv = $sth->execute or die print "FEHLER"; if ($rv < 0) { print "Keine Ergebniswerte!\n"; exit (1); } # Erstellt in Frame1 Radiobuttons und belegt diese mit den Daten der Datenbank my $Klasse=1; for(my $i=1;my @row = $sth->fetchrow_array;$i++) { $f1->Radiobutton(-text => $row[0], -variable=>\$Klasse, -value => $i, -command => sub{ print $Klasse; &daten_holen($Klasse); #Öffnet die Funktion daten_holen } ) ->pack(-anchor=>'w'); } #############################FRAME-EINS############################# #############################FRAME-ZWEI############################# # SPALTE 2 in FRAME fo my $f2 = $fo->Frame(-borderwidth => 3, -relief => 'groove', ) ->pack(-side => 'left', -expand => 1, -fill => 'both', ); #Überschrift Schueler in Frame 2 $f2->Label(-text=>'Schueler')->pack(); #############################FRAME-ZWEI############################# #$dbh->disconnect; #DATENBANK VERBINDUNG TRENNEN #############################FRAME-DREI############################# # SPALTE 3 in FRAME fo my $f3 = $fo->Frame(-borderwidth => 3, -relief => 'groove', ) ->pack(-side => 'left', -expand => 1, -fill => 'both', ); $f3->Label(-text=>'Uhrzeiten')->pack(); # BRECHNUNG FEHLSTUNDEN --> Wird beim OK Button zusammengezählt my @Stunde = ('Stunde1','Stunde2','Stunde3','Stunde4'); my $gesamt=0; for (my $i=1;$i<=8;$i++) { $Stunde[$i]=0; #alles mit 0 initialisieren, sonst wenn nichts geklickt wurde gibt es eine fehlermeldung $f3->Checkbutton(-text => "Stunde $i",-variable=>\$Stunde[$i])->pack(-anchor=>'w'); } #############################FRAME-DREI############################# #Speichern-Button $window->Button(-text => 'Speichern', -command => sub { if($Klasse==0) { print "Klasse: EAV1/2\n"; } elsif($Klasse==1) { print "Klasse: EAV3/4\n"; } elsif($Klasse==2) { print "Klasse: IAV1/2\n"; } elsif($Klasse==3) { print "Klasse: IAV3/4\n"; } else { print "Falsche Eingabe"; } $gesamt=$Stunde[1]+$Stunde[2]+$Stunde[3]+$Stunde[4]+$Stunde[5]+$Stunde[6]+$Stunde[7]+$Stunde[8]; print "Gefehlt: $gesamt Stunden\n"; $window -> DESTROY; &init_widgets(); }, ) ->pack(-side => 'left', -expand => 1, -fill => 'none', -ipadx => 80, -pady => 5,); #Beenden-Button $window->Button(-text=>'Beenden',-command=>sub{exit;}) ->pack(-side => 'left', -expand => 1, -fill => 'none', -ipadx => 80, -pady => 5,); #-------------- OK Button--------# MainLoop(); sub daten_holen() { # DATENBANK ABFRAGE $sql = "SELECT name FROM schueler WHERE klassen_id==(?)"; $sth = $dbh->prepare($sql) or die print "FEHLER"; $rv = $sth->execute($Klasse) or die print "FEHLER"; if ($rv < 0) { print "Keine Ergebniswerte!\n"; exit (1); } # GIBT NAMEN DER SCHÜLER AUS my $Schueler = 1; for(my $i=1;my @row = $sth->fetchrow_array;$i++) { $f2->Radiobutton(-text => $row[0], -variable => \$Schueler, -value => $i, ) ->pack(-anchor=>'w'); } }