#!/usr/bin/perl use strict; use warnings; use DBI; use CGI; use CGI::Carp qw/fatalsToBrowser warningsToBrowser/; my $DBN = "DBI:mysql:produkte"; my $DBUSER = "lidos"; my $DBPASS = "lidos"; my $SCRIPT = "kathrin.pl"; my $cgi = CGI->new(); my $suchen=$cgi->param("suchen") || ""; my $such=$cgi->param("such") || ""; # zusätzlich my $eintragen=$cgi->param("eintragen") || ""; my $eintr=$cgi->param("eintr") || ""; my $identnr=$cgi->param("identnr") || ""; my $head_de=$cgi->param("head_de") || ""; my $deutsch=$cgi->param("deutsch") || ""; my $head_en=$cgi->param("head_en") || ""; my $englisch=$cgi->param("englisch") || ""; my $head_fr=$cgi->param("head_fr") || ""; my $franz=$cgi->param("franz") || ""; my $check1=$cgi->param("check1") || ""; my $check2=$cgi->param("check2") || ""; my $check3=$cgi->param("check3") || ""; my $check4=$cgi->param("check4") || ""; my $ersteller=$cgi->param("ersteller") || ""; my $werk=$cgi->param("werk") || ""; my $doctyp=$cgi->param("doctyp") || ""; my $docname=$cgi->param("docname") || ""; my $auswahl=$cgi->param("auswahl") || ""; my $date = sub { my ($day, $mon, $year)= (localtime(time))[3..5]; sprintf ("%04d-%02d-%02d",$year+1900,$mon+1,$day); }; &main; sub main { &check_doctype(); print $cgi->header(-type => 'text/html'); if($eintragen) { if($eintr) { &eintragen(); &ausgabe_eintragenerg(); } else { &ausgabe_eintragenform(); } } elsif($suchen) { if($such) { &suchen(); } else { &ausgabe_suchenform(); } } elsif($auswahl) { &ausgabe_auswahl(); } else { &ausgabe_start(); } } sub ausgabe_auswahl { print qq~ Auswahl IdentNr: $identnr
DocName: $docname ~; } sub suchen { &ausgabe_fehler() unless &check_identnr($identnr); my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr; my $statement_suchen="SELECT * FROM tbl0011990 where ident_nr = '$identnr' ORDER BY docname ASC"; my $sth_suchen=$dbh->prepare($statement_suchen) or die $DBI::errstr; $sth_suchen->execute or die $DBI::errstr; my @daten = (); my @order = qw/identnr langtyp doctyp docname head langtxt datum ersteller werk check1 check2 check3 check4/; while (my @row = $sth_suchen->fetchrow_array()) { my %hash; for(my $i = 0; $i < scalar @order; $i++) { $hash{$order[$i]} = $row[$i]; } push @daten, \%hash; } &ausgabe_suchenerg(\@daten); $sth_suchen->finish(); $dbh->disconnect(); } sub ausgabe_suchenerg { my ($daten) = @_; print "\FORMULAR\"; print '
Bestellhinweis
'; print qq~
~; print "

Ident-Nummer:"; print ''; print ''; print ''; print '

'; print ''; foreach my $ptr (@{$daten}) { print qq~~; } print '
doc_typ doc_name headline  
$ptr->{doctyp} $ptr->{docname} $ptr->{head} Auswählen
'; print '

'; print "

"; } sub ausgabe_suchenform { print<
Dokumententyp: $doctyp

Ident-Nummer:

HTML } sub eintragen_exe { my ($sth, $langtyp, $head, $langtxt) = @_; $sth->execute($identnr,$langtyp,$doctyp,$docname,$head,$langtxt,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr; } sub eintragen { &ausgabe_fehler() unless &check_identnr($identnr); my $dbh = DBI->connect($DBN,$DBUSER,$DBPASS) or die $DBI::errstr; my $statement_insert="INSERT INTO tbl0011990 VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)"; my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr; &eintragen_exe($sth_insert, 'DE', $head_de, $deutsch) if $head_de; &eintragen_exe($sth_insert, 'EN', $head_en, $englisch) if $head_en; &eintragen_exe($sth_insert, 'FR', $head_fr, $franz) if $head_fr; $sth_insert->finish(); $dbh->disconnect(); } sub ausgabe_eintragenerg { print "\Neueintrag\\ \Ident-Nummer: $identnr
\Doctype: $doctyp
\Docname: $docname
\HL auf Deutsch: $head_de
\Ihr Text auf Deutsch: $deutsch
\HL auf Englisch: $head_en
\Ihr Text auf Englisch: $englisch
\HL auf Französisch: $head_fr
\Ihr Text auf Französisch: $franz
\$check1, $check2, $check3, $check4
\$ersteller $werk am $date
\Weitere Bestellhinweise

'; } sub ausgabe_eintragenform { my ($text_de, $text_en, $text_fr) = ("", "", ""); my ($chk_1, $chk_2, $chk_3, $chk_4) = ("", "", "", ""); my $eintr = qq~~; if ($doctyp eq 'EI') { $text_de = qq~
~; $text_en = qq~
~; $text_fr = qq~
~; } elsif ($doctyp eq 'SI') { $eintr = qq~Dokumentenname: ~; } $chk_1 = "checked" if $check1; $chk_2 = "checked" if $check2; $chk_3 = "checked" if $check3; $chk_4 = "checked" if $check4; print<

Dokumententyp: $doctyp

Ident-Nummer:

DE:
$text_de

EN:
$text_en

FR:
$text_fr

Betrifft Maschinen: LHB LFR LWT LBH

Ersteller:

Werk:

$eintr

HTML } sub ausgabe_start { print< Eintragen
Suchen HTML } sub ausgabe_fehler { print< Sie haben keine gültige Identnummer eingegeben.

HTML exit; } sub check_doctype { if($doctyp eq 'EI') { my $dbh = DBI->connect($DBN, $DBUSER, $DBPASS) or die $DBI::errstr; my $statement_select="SELECT docname FROM tbl0011990 where docname like ?"; my $sth_select=$dbh->prepare($statement_select) or die $DBI::errstr; my $poss_docname=$identnr; $sth_select->execute($poss_docname) or die $DBI::errstr; my $i=1; my ($treffer)=$sth_select->fetchrow_array(); while ($treffer) { $poss_docname = $identnr.'_'.$i; $i++; $sth_select->execute($poss_docname) or die $DBI::errstr; ($treffer)=$sth_select->fetchrow_array(); } $docname =$poss_docname; $sth_select->finish(); $dbh->disconnect(); } } sub check_identnr { return $_[0] =~ m/^\d{7,10}[AB]?$/; }