#!/usr/bin/perl
use strict;
use warnings;
use DBI;
use CGI;
use CGI::Carp qw/fatalsToBrowser warningsToBrowser/;
use Data::Dumper;
my $cgi = new CGI;
my $suchen=$cgi->param("suchen") || "";
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") || "";
if($doctyp eq 'EI')
{
my $db="DBI:mysql:produkte";
my $user="lidos";
my $pass="lidos";
my $dbh = DBI->connect($db,$user,$pass) 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();
}
my ($day, $mon, $year)= (localtime(time))[3..5];
my $date= sprintf ("%04d-%02d-%02d",$year+1900,$mon+1,$day);
main();
sub main
{
my $cgi = CGI->new();
print $cgi->header(-type => 'text/html');
if ($suchen)
{
if($identnr =~m/^\<d{7,10}[AB]?$/) {
suchen()
}
else
{
print "<HTML>\<n";
print "<head><title>FEHLER</title></head>\<n";
print "<body>\<n";
print "Sie haben keine gültige Identnummer eingegeben.\<n";
print '<p><input type="button" value="Zurck" onClick="history.back()">';
}
}
elsif ($eintragen)
{
such_eintr();
}
elsif ($eintr)
{
if ($identnr =~m/^\<d{7,10}[AB]?$/)
{
tab_einf()
}
else
{
print "<HTML>\<n";
print "<head><title>FEHLER</title></head>\<n";
print "<body>\<n";
print "Sie haben keine gültige Identnummer eingegeben.\<n";
print '<p><input type="button" value="Zurck"
onClick="history.back()">';
}
}
}
sub ausgabe
{
print "<HTML>\<n";
print "<head><title>Neueintrag</title></head>\<n";
print "<body>\<n";
print "Ihr folgender Eintrag wurde gespeichert:\<n";
print "<ul> \<n";
print "<li>Ident-Nummer: <b>$identnr</b>\<n";
print "<li>Doctype: <b>$doctyp</b>\<n";
print "<li>Docname: <b>$docname</b>\<n";
print "<li>HL auf Deutsch: <b>$head_de</b>\<n";
print "<li>Ihr Text auf Deutsch: <b>$deutsch</b>\<n";
print "<li>HL auf Englisch: <b>$head_en</b>\<n";
print "<li>Ihr Text auf Englisch: <b>$englisch</b>\<n";
print "<li>HL auf Französisch: <b>$head_fr</b>\<n";
print "<li>Ihr Text auf Französisch: <b>$franz</b>\<n";
print "Es betrifft die Maschinen <b>$check1, $check2, $check3, $check4</b> \<n";
print "Erstellt wurde es vom <b>$ersteller $werk</b> am <b>$date</b>\<n";
print '<p><a href="http://127.0.0.1/">Weitere Bestellhinweise</a><p>';
}
sub tab_einf
{
my $db="DBI:mysql:produkte";
my $user="lidos";
my $pass="lidos";
my $dbh = DBI->connect($db,$user,$pass) or die $DBI::errstr;
my $statement_insert="INSERT INTO tbl0011990 VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?)";
my $sth_insert=$dbh->prepare($statement_insert) or die $DBI::errstr;
if ($head_de)
{
$sth_insert->execute($identnr,'DE',$doctyp,$docname,$head_de,$deutsch,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
}
if ($head_en)
{
$sth_insert->execute($identnr,'EN',$doctyp,$docname,$head_en,$englisch,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
}
if ($head_fr)
{
$sth_insert->execute($identnr,'FR',$doctyp,$docname,$head_fr,$franz,$date,$ersteller,$werk,$check1,$check2,$check3,$check4) or die $DBI::errstr;
}
ausgabe();
$sth_insert->finish();
$dbh->disconnect();
}
sub suchen
{
my $db="DBI:mysql:produkte";
my $user="lidos";
my $pass="lidos";
my $dbh = DBI->connect($db,$user,$pass) or die $DBI::errstr;
my $statement_suchen="SELECT * FROM tbl0011990 where ident_nr = '$identnr'";
my $sth_suchen=$dbh->prepare($statement_suchen) or die $DBI::errstr;
$sth_suchen->execute;
my %hash;
my $daten_ref;
while (my @row = $sth_suchen->fetchrow_array())
{
$hash{identnr} = $row[0];
$hash{doctyp} = $row[2];
$hash{docname} = $row[3];
$hash{head_de} = $row[4] if ($row[1] eq 'DE');
$hash{head_en} = $row[4] if ($row[1] eq 'EN');
$hash{head_fr} = $row[4] if ($row[1] eq 'FR');
$hash{deutsch} = $row[5] if ($row[1] eq 'DE');
$hash{englisch} = $row[5] if ($row[1] eq 'EN');
$hash{franz} = $row[5] if ($row[1] eq 'FR');
$hash{ersteller}= $row[7];
$hash{werk} = $row[8];
$hash{check1} = $row[9];
$hash{check2} = $row[10];
$hash{check3} = $row[11];
$hash{check4} = $row[12];
$daten_ref -> { $hash{$identnr} } -> { $hash{$docname} } = {%hash};
}
foreach my $identnr ( keys %$daten_ref )
{
doc_vorhanden ($identnr, $daten_ref, keys %{ $daten_ref -> {$identnr} });
}
$sth_suchen->finish();
$dbh->disconnect();
}
sub such_eintr
{
my (%param) = @_;
my $param = \%param;
print "<HTML>\<n";
print "<HEAD><TITLE>FORMULAR</TITLE>";
print "</HEAD>\<n<BODY>\<n";
if ($suchen){
print '<span style="font-size:20pt"><center><b>Dokumententyp:'.$param->{doctyp}.'</b></center></span>';
}
elsif ($eintragen) {
print '<span style="font-size:20pt"><center><b>Dokumententyp: '.$doctyp.'</b></center></span>';
}
print '<form method="POST" action="/cgi-bin/frontl.cgi">';
print "<p>Ident-Nummer:";
print '<INPUT name="identnr" size="20" maxlength="15" value='.$identnr.'>';
if ($suchen) {
print '<INPUT name="suchen" TYPE="submit" VALUE="Suchen">';
}
print "<p>DE:<br>";
print '<input name="head_de" type="text" size="50" value='.$param->{head_de}.'><br>';
if ($doctyp eq 'EI') {
print '<textarea name="deutsch" cols="50" rows="5">'.$param->{deutsch}.'</textarea>';
}
print "<p>EN:<br>";
print '<input name="head_en" type="text" size="50" value='.$param->{head_en}.'><br>';
if ($doctyp eq 'EI') {
print '<textarea name="englisch" cols="50" rows="5">'.$param->{englisch}.'</textarea>';
}
print "<p>FR:<br>";
print '<input name="head_fr" type="text" size="50" value='.$param->{head_fr}.'><br>';
if ($doctyp eq 'EI') {
print '<textarea name="franz" cols="50" rows="5">'.$param->{franz}.'</textarea>';
}
print '<p>Betrifft Maschinen: ';
if ($param->{check1}==1) {
print '<INPUT name="check1" TYPE="checkbox" VALUE="LHB" checked>LHB'}
else { print '<INPUT name="check1" TYPE="checkbox" VALUE="LHB">LHB'}
if ($param->{check2}==1) {
print '<INPUT name="check2" TYPE="checkbox" VALUE="LHB" checked>LFR'}
else { print '<INPUT name="check2" TYPE="checkbox" VALUE="LHB">LFR'}
if ($param->{check3}==1) {
print '<INPUT name="check3" TYPE="checkbox" VALUE="LHB" checked>LWT'}
else { print '<INPUT name="check3" TYPE="checkbox" VALUE="LHB">LWT'}
if ($param->{check4}==1) {
print '<INPUT name="check4" TYPE="checkbox" VALUE="LHB" checked>LBH'}
else { print '<INPUT name="check4" TYPE="checkbox" VALUE="LHB">LBH'}
print '<p>Ersteller:';
print '<INPUT size="15" type="text" name="ersteller" value="'.$param->{ersteller}.'" readonly> <<<
<select onchange="ersteller.value=options[selectedIndex].value">
<option value="M.Kapanke">M.Kapanke</option>
<option value="G.Goettelmann">G.Goettelmann</option>
<option value="T.Doppler">T.Doppler</option>
<option value="F.Waldhart">F.Waldhart</option>
</select>';
print '    Werk:
<SELECT name="werk" SIZE=1 ALIGN=left>
<OPTION selected>'.$param->{werk}.'
<OPTION>LHB
<OPTION>LFR
<OPTION>LBH
<OPTION>LWT
</SELECT><p>';
if ($eintragen) {
if ($doctyp eq 'SI') {
print '<p>Dokumentenname: <input size="15" name="docname" value='.$docname.'>';
}
print '<p><INPUT name="eintr" TYPE="submit" VALUE="Eintragen">';
}
elsif ($suchen) {
print '<p>Dokumentenname: <input size="15" name="docname" value='.$param->{docname}.'>';
}
print '<input name="doctyp" type="hidden" value='.$doctyp.'>';
print '<input name="neu" type="button" value="Neu" onClick=location.href="http://127.0.0.1/">';
print "</FORM>
</BODY>
</HTML>";
}
sub id_vorhanden
{
print <<ENDL;
<HTML>\<n
<head><title>Meldung</title></head>\<n
<body>\<n
Die von Ihnen angegebene Identnummer ($identnr) ist bereits vergeben.\<n
<p><input type="button" value="Zurck" onClick="history.back()">
ENDL
}
sub doc_vorhanden
{
my ($identnr, $daten_ref, @docnames) = @_;
print "<html>\<n";
print "<head><title>FORMULAR</title></head>\<n";
print "<body>";
print '<span style="font-size:20pt"><center><b>Bestellhinweis</b></center></span>';
print '<form method="POST" action="/cgi-bin/frontl.cgi">';
print "<p>Ident-Nummer:";
print '<input name="identnr" size="20" maxlength="15" value='.$identnr.'>';
print '<input name="suchen" TYPE="submit" VALUE="Suchen">';
print '<p>';
print '<table border="1" rules="groups">
<colgroup>
<col width="50">
<col width="80">
<col width="300">
<col width="50">
</colgroup>
<thead>
<tr>
<th>doc_typ</th>
<th>doc_name</th>
<th>headline</th>
</tr></thead>
<tbody>';
foreach my $docname (@docnames)
{
my $ptr = $daten_ref->{$docname};
my $doctyp = $ptr->{doctyp};
my $head_de = $ptr->{head_de};
print '<tr>';
print ' <td>'.$doctyp.'</td>
<td>'.$docname.'</td>
<td>'.$head_de.'</td>
<td><input type="button" value="Auswahl" onClick=""></td>
</tr>';
}
print '</tbody></table>';
print '<p><p><input type="button" value="Zurck" onClick="history.back()">';
print "</form>
</body>
</html>";
}