1
2
3
4
5
6
7
8
9
10
11
while ( 1 ) {
# menütext ausgeben; und eine Option zum beenden
# Auswahl / Eingabe abfragen
# wenn eingabe zu einem menüeintrag passt, führe entsprechendes aus (i.d.R. rufe eine Subroutine)
# wenn eingabe zum beenden passt, beende die while-Schleife mit last.
}
Guest SCORRPiOEs geht darum das ich ein Menü habe und am ende jedes Menüpunktes (Programmabläufe) wieder zum Anfang meines Programms springen möchte.
sprich wie folgt:
Sicherlich ist dies ganz einfach... nur ich komm nicht drauf.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
#! /usr/bin/perl use strict; use feature qw(switch say); while (1) { print $clear; print "\t\t\t Datanbank Verwaltung\n\n"; print "Sie sind mit der Datenbank verbunden \n Was möchten Sie tun?"; print " 1. Tabelle anzeigen 2. Daten eintragen 3. Daten ändern 4. Daten löschen 6. Neue Tabelle anlegen 7. Tabelle wechseln (test) 8. Datenbank wechseln (test)\n 9. Programm beenden. "; my $eingabe = <STDIN>; # // problem liegt hier? # chomp $eingabe; #aktiviert und deaktiviert versucht print "$clear Datenbank: $db_name \nTabelle:"; ## 1 Tabelle zeigen #1 done klappt nicht given ($eingabe) { when(1) { print "Ihre eingabe: $eingabe"; print "\n"; } #Menü 2 #Menü 3 #Menü 4 #Menü 5 #Menü 6 klappt!! when(6) { print "Neue Tabelle erstellen"; } #Menü 7 } }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
#! /usr/bin/perl use strict; use feature qw(switch say); use DBI; use Term::ReadKey; binmode(STDOUT, ":utf8"); #für umlaute ;) my $db_user = 'user'; my $db_name = 'client'; my $db_pass = 'test1234'; my $table = 'rechner'; my $clear = "\033[2J \033[0;0H"; #clear the screen && #jump to 0,0 #~ print "Bitte den mySQL Benutzer Namen angeben: "; #~ my $db_user = <STDIN>; #~ chomp $db_user; #~ print "Bitte den mySQL Benutzer Passwort angeben: "; #~ ReadMode 'noecho'; #~ #my $db_pass = <STDIN>; #~ my $db_pass = ReadLine 0; #~ chomp $db_pass; #~ ReadMode 'normal'; #~ print "\nDatenbank: "; #~ my $db_name = <STDIN>; #~ chomp $db_name; #~ print "Tabelle: "; #~ my $table = <STDIN>; #~ chomp $table; my $dbh = DBI -> connect("DBI:mysql:database=$db_name", $db_user, $db_pass); while (1) { print $clear; print "\t\t\t Datanbank Verwaltung\n\n"; print "Sie sind mit der Datenbank ''$db_name'' verbunden und die Tabelle. \nWas möchten Sie tun?"; print " 1. Tabelle anzeigen 2. Daten eintragen 3. Daten ändern 4. Daten löschen 6. Neue Tabelle anlegen 7. Tabelle wechseln (test) 8. Datenbank wechseln (test)\n 9. Programm beenden. "; my $eingabe = <STDIN>; chomp $eingabe; print "$clear Datenbank: $db_name \nTabelle:"; ## 1 Tabelle anzeigen given ($eingabe) { when(1) { print "Ihre eingabe: $eingabe"; my $query_test = $dbh->prepare(<<SLCT); SELECT * FROM $table SLCT $query_test->execute() or die $query_test->err_str; print "\n"; print " +---------------+--------------+\n"; print " | name | ip |\n"; print " +---------------+--------------+\n"; while (my ($col_1, $col_2,$col_3) = $query_test->fetchrow_array() ) { print "\t| $col_1 \t| $col_2 |\n"; } print "\t+---------------+--------------+\n"; my $pause = <STDIN>; # unschön aber macht was es soll ;D # last; } ##2 Daten Eintragen ##3 Daten ändern ##4 Daten löschen ##6 Neue Tabelle anlegen when(6) { #if ($eingabe == 6){ print "Neue Tabelle erstellen"; print "\n\n Wie soll Ihre neue Tabelle heißen: "; my $new_table = <STDIN>; chomp $new_table; print "\nBitte bennen sie die einzelne Spalten nach folgendem Muster: Name VARCAR(20) <Spaltenname> <Wert>"; my @spalten; my $query_test = $dbh->prepare(<<CRTE); CREATE TABLE $new_table ( @spalten) CRTE $query_test->execute() or die $query_test->err_str; print "Ihre neue Tabelle lautet $new_table \n Tabelle verwenden? (ja/nein)"; my $choise = <STDIN>; if ($choise == 'ja'){ $table = $new_table; }; print "\n"; } ##7 Tabelle wechseln ##8 Datenbank wechseln ##9 Beenden when(9) { exit(2); $dbh ->disconnect(); } default { warn "Wert $_ ausserhalb des Bereichs 0 bis 11" } } #/give #/while }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Sie sind mit der Datenbank verbunden
Was möchten Sie tun?
1. Tabelle anzeigen
2. Daten eintragen
3. Daten ändern
4. Daten löschen
6. Neue Tabelle anlegen
7. Tabelle wechseln (test)
8. Datenbank wechseln (test)
9. Programm beenden.
1
Datenbank: foobar
Tabelle:Ihre eingabe: 1
Datanbank Verwaltung
my $pause = <STDIN>;
2014-02-18T15:14:36 SCORRPiOOh danke werde ich damit mal ausenander setzten.
1
2
3
4
5
6
7
8
Datenbank Verwaltung
Was möchten Sie tun?
1) Daten eintragen
2) Daten ändern
3) Programm verlassen
1
Tragen Sie Daten ein.
1
2
printf "%2d) %s\n", $_, $menu[$_]->{label} for 0 .. $#menu;
if ( $input !~ m/\A\d+\z/ || $input > $#menu || $input < 0 ) {