Hi,
bin jetzt seit ca. 1 Wochen dabei mit CGI zu arbeiten und bräuchte mal eure Hilfe bei einem Script.
Sieht wie folgt aus.
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
#! /usr/bin/perl -w
use strict;
use CGI qw(:standard escapeHTML);
use CGI::Carp qw(fatalsToBrowser);
use WebDB;
my @element_liste =
(
{ name => "seriennr",
bez => "Seriennummer:", size => 30, muss => 1 },
{ name => "kauf_datum",
bez => "Kauf-Datum:", size => 20, muss => 1 },
{ name => "kauf_ort",
bez => "Wo gekauft:", size => 30 },
{ name => "anrede",
bez => "Anrede:", size => 30 },
{ name => "nach_name",
bez => "Nachname:", size => 30, muss => 1 },
{ name => "vor_name",
bez => "Vorname:", size => 30, muss => 1 },
{ name => "strasse",
bez => "Strasse:", size => 30 },
{ name => "plz",
bez => "Postleitzahl:", size => 10 },
{ name => "ort",
bez => "Ort:", size => 30 },
{ name => "land",
bez => "Land:", size => 2 },
{ name => "tel",
bez => "Telefon:", size => 20 },
{ name => "email",
bez => "E-Mail Adresse:", size => 60 }
);
print header (),
start_html (-title => "Produkt Registrierungs Formular",
-bgcolor => "white"),
h1("Produkt Registrierungs Formular");
eingabe_formular_anzeigen (\@element_liste);
print end_html ();
exit (0);
sub eingabe_formular_anzeigen # v3 mit Tabelle und Sternchen
{
my $element_liste_ref = shift;
my @zeile;
print start_form (-action => url ());
print p ("Bitte geben sie die Registrierungs-Daten "
. "ein, und drücken Sie dann den "
. strong ("Absenden") . "-Knopf.");
print p ("(Felder mit einem Sternchen müssen ausgefüllt werden)");
foreach my $f (@{$element_liste_ref})
{
my $bez = $f->{bez};
$bez .= "*" if $f->{muss}; # Sternchen hinzufügen
push (@zeile, Tr (
td (escapeHTML ($bez)),
td (textfield (-name => $f->{name},
-size => $f->{size}))
));
}
print table (@zeile),
submit (-name => "aktion", -value => "Absenden"),
end_form ();
}
Ich habe dieses Beispiel aus einem Buch.
Ich würde es aber gerne nach meinen wünschen anpassen, bekomme es aber nicht wirklich hin.
Könnt ihr mir vielleicht Tips geben wie ich die folgenden 2 Änderungen vornehmen kann?
1) Ich hätte gerne das es nicht, wie jetzt, von oben nach unten einfach angeordnet wird sondern das die Textfelder jeweils 3 spalten nebeneinander angeordnet werden und danach eine neue Zeile angefangen wird.
Ungefähr so
----------------------------------
| | | |
| | | |
----------------------------------
| | | |
| | | |
----------------------------------
2)Ich würde gerne nicht nur "textfield" sondern auch "popup_menu" usw. benutzten und es sollte möglichst dynamisch bleiben.
Das liebste wäre es mir wenn man es in @element_liste einfach als art angeben könnte.
Ich habe es wie folgt schon versucht es hat aber immer Syntaxfehler ausgespuckt.
my @element_liste =
(
{ art => textfield,
name => "nachname",
bez => "Nachname:", size => 30},
)
td ($f->{art} (-name => $f->{name},
-size => $f->{siz},
))
Ich hoffe ihr könnt mir weiterhelfen. ;)
Gruß
Serioscha aka Zipster\n\n
<!--EDIT|zipster|1128781629-->