Prüfen, ob nur ein Eingabefeld ausgefüllt
Silke
- perl
0 k@rl0 Silke0 Klaus Mock0 Silke
Ich habe ein Formular geschrieben, dessen Daten ich in mehrere Tabellen übergeben möchte. Allen Tabellen gemeinsam ist die Kundennummer. Jetzt möchte ich Datenbankeinträge verhindern, die außer der Kundennummer nichts beinhalten. Gibt es da so etwas wie:
if only($kdnr){
#starte insert into}
else {
&sub1}
???
Ich habe nämlich eine Vielzahl von Eingabefeldern und möchte die nicht einzeln abprüfen.
Ich habe nämlich eine Vielzahl von Eingabefeldern und möchte die nicht einzeln abprüfen.
Hallo Silke,
sieht imho schlecht aus. Du könntest aber schreiben:
unless (length($feld1.$feld2.$feld3.$feld4 ....)) { # in Datenbank eintragen } else { # Fehlermeldung }
btw: ich habe bwußt "length(...)" genommen, denn ein Test unless ($feld1.$feld2.$feld3.$feld4) {... würde probeleme bereiten, wenn "0" eine gültige Eingabe ist.
Ciao K@rl
unless (length($feld1.$feld2.$feld3.$feld4 ....)) {
# in Datenbank eintragen
}
else {
# Fehlermeldung
}
Kann ich damit auch einen Datenbankeintrag machen, wenn nur zwei Felder von mehreren ausgefüllt sind? Ich möchte nämlich einen Datenbankeintrag dann machen, wenn mindestens ein Feld außer der Kundennummer eingetragen wurde. In meinem Formular existieren auch Kannfelder; deshalb die Prüfung ;-)
Hallo,
Kann ich damit auch einen Datenbankeintrag machen, wenn nur zwei Felder von mehreren ausgefüllt sind? Ich möchte nämlich einen Datenbankeintrag dann machen, wenn mindestens ein Feld außer der Kundennummer eingetragen wurde. In meinem Formular existieren auch Kannfelder; deshalb die Prüfung ;-)
In Anlehnung an des Ausgangsposting (die Erwartung einer Funktion 'only' finde ich übrigens toll) könntest Du das eventuell so lösen:
sub only
{
return 0 unless $kdnr;
return 1 if $feld1;
return 1 if $feld2;
return 1 if $feld3;
return 1 if $feld4;
return 1 if $feld5;
return 0;
}
oder wenn Du das Ganze z.B. in einem Hash gespeichert hast:
sub only
{
my($must,$hashref) = @_;
return 0 unless $hashref->{$must};
foreach my $key(keys %$hashref)
{
return 1 if $hashref->{$key};
}
return 0;
}
Aufgerufen wird ersters dann
if(&only)
{
&machwas;
}
else
{
&machnix;
}
und zweiteres
if(&only('kdnr',%werte))
{
&machwas;
}
else
{
&machnix;
}
Aber das gibt es sicherlich noch viele andere Spielarten.
Grüße
Klaus
Werd ich doch glatt mal ausprobieren ;-) Danke