<perl>
if (%_put){ # wenn im Put-Hash was steht (dann passiert in der DB irgendwas...)
put [%_put], "Produkte" if $cmd eq "add"; # neuen DS zufügen, wenn Parameter cmd entspr.
mod "Id==$Id", [%_put], "Produkte" if $cmd eq "mod" && $Id>=0; # ändern wenn Parameter cmd entspr.
undef %_put; # put-Hash killen, damit nicht nochmal die Aktionen gemacht werden
$cmd = "list"; # wieder Liste anzeigen (ist m.E. sinnvoller als wieder das Eingabeform...)
}
if ($cmd eq "do_add" || $cmd eq "do_mod"){ # wenn Neu- oder Löschen-Link gewählt wurde
my $dsn = $Id; # ID des Datensatzes in lokaler Variable sichern
# Alle Nuzternamen aus der Nutzerdb holen und über eine Liste in einen Scalar
# in Form eines multiplen Optionfeldes schreiben
get "Mitarbeiter=*","Mitarbeiter", "mitarbeiterdb";
while(get_next("mitarbeiterdb")){
push @l_mitarbeiter,$Mitarbeiter; # Wert hinzufügen
}
#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
foreach $lw(@l_mitarbeiter) {
# hier evtl. noch fürs Ändern die Vorauswahl treffen,
# alles kann man ja nun auch nicht einfach so hergeben ;-)
$a_options .= "<option value=$lw>$lw</option>"; # das sind die einzelnen Optionwerte
}
#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
if ($cmd eq "do_mod"){ # nur wenn Ändern gewählt
# den Datensatz holen, der geändert werden soll und die Mitarbeiter in ne Variable speichern,
# die im Moment für den Artikel zuständig sind -
# ACHTUNG: Das Feld muss beim do_all dann mittels
# formfields ausgeklammert werden, sonst wirds Mist...
get "Id==$dsn", "Produkte","istmitarbeiter";
$a_mitarbeiter = convert_br($Mitarbeiter); # die new-lines in br's wandeln
# Die Werte für den aktuellen Mitarbeiter in die Ausgabevar schreiben
$a_mitarbeiter = "<b>Zuständige Mitarbeiter</b> für den Artikel $Produktname:<br> $a_mitarbeiter<br>";
} # E if do_mod
# nun noch das multiple Optionfeld bauen, dabei Formulardef. vornehmen,
# damit der Feldinhalt mit ins %_put wandert
# ist ein unsauberer Trick - weiss nicht, ob es in allen VBrowsern funzt....
# im Firefox 0.91 und IE6 SP2 gehts
# Das Formfeld und die zusätzlichen Infos in ne Var schreiben
$ff_mitarbeiter =<<EOF;
<hr width=75%>
$a_mitarbeiter
<p>Bitte zuständigen Mitarbeiter für das Produkt wählen:</p>
<!-- Dieses Form-Statement ist redundant, aber es baut das Feld so ein, dass die Daten
mit ins \%_get kommen-->
<form action="$_link&db=$_db&cmd=add" name="_baseportal_form0" method="post" enctype="multipart/form-data">
<select name="Mitarbeiter:=" size=5 multiple>
$a_options
</select><br>
<hr width=75%>
EOF
} # E if do_mod|do_add
#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
out $ff_mitarbeiter; # ist leer wenn nicht neu oder ändern
do_all "db=Produkte formfields=-Mitarbeiter","Produkte";
#. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .#
</perl>