Schrift
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]590[/thread]

Brauche CGI Nachilfe.



<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten
zipster
 2005-10-08 18:24
#5756 #5756
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
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.
Code: (dl )
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.
Code: (dl )
1
2
3
4
5
6
7
8
9
10
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-->
renee
 2005-10-08 18:32
#5757 #5757
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Z Deiner ersten Frage:

Meinst Du das ungefähr so:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
       my $counter = 1;
my @fields;
foreach my $f (@{$element_liste_ref})
{
my $bez = $f->{bez};
$bez .= "*" if $f->{muss}; # Sternchen hinzufügen
push(@fields,td (escapeHTML ($bez)),
td (textfield (-name => $f->{name}, -size => $f->{size}))));
if($counter % 3 == 0){
push (@zeile, Tr (@fields));
@fields = ();
$counter = 0;
}
$counter++;
}


Ist ungetestet...
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2005-10-08 18:46
#5758 #5758
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Perfekt ;) (Wie immer....)

Sau gut.
Woran ich nen ganzen Tag rum mache, erledigst du in knapp 10 min..


Hattest ein kleinen Fehler drin. In folgender Zeile war ein ")" zuviel.
Code: (dl )
 td (textfield (-name => $f->{name}, -size => $f->{size})));
zipster
 2005-10-11 17:23
#5759 #5759
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hat keiner ne Idee wie man Punkt 2 lösen könnte?
Quote
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.
Strat
 2005-10-11 17:46
#5760 #5760
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Popup_menu erwartet eine referenz auf ein array von werten... dies vorher bauen und dann verwenden, z.B.
Code: (dl )
1
2
3
4
5
my @values = ();
foreach my $item (@element_liste) {
push (@values, $item->{name});
} # foreach
print popup_menu(-name => 'irgendwas', -values = \@values);

oder:
Code: (dl )
1
2
my @values = map { $_->{name} } @element_liste;
print popup_menu(-name => 'irgendwas', -values = \@values);

oder gleich in einem schritt:
Code: (dl )
1
2
print popup_menu(-name => 'irgendwas', 
-values = [ map { $_->{name} } @element_liste ]);


und wenn du da nicht ->{name} drinnen haben willst, sondern ->{bez} ?\n\n

<!--EDIT|Strat|1129038453-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
zipster
 2005-10-11 19:51
#5761 #5761
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
@Strat
Danke für deine Antwort. Aber ich denke du hast nicht ganz verstanden was ich vorhabe. Vielleicht habe ich mich nicht deutlich genug ausgedrückt :D (was mir öfter passiert)

In "@element_liste" werden ja die Textfelder definiert. So das ich sie dann alle mit einer "foreach" Schleife printen kann.
Ich habe aber nun vor in meinem Dokument nicht nur "Textfields" zu benutzten will aber von der Lösung mit "@element_liste" nicht weg.

Wie muss ich meinen Code abändern das ich in "@element_liste" einfach nur angebe was ich will "Textfield", "radio_group", "checkbox" usw. und ich der "foreach" Schleife wird dann erkannt was ich will und erzeugt.

Ich hoffe diesmal habe ich es verständlicher erklärt. :cool:


Gruß
Serioscha aka zipster
renee
 2005-10-11 23:35
#5762 #5762
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Hast Du Deinen eigenen Vorschlag mal ausprobiert??
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2005-10-12 11:08
#5763 #5763
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Meinst du den?
Code: (dl )
1
2
3
4
5
6
7
8
9
10
my @element_liste =
(
{ art => textfield,
name => "nachname",
bez => "Nachname:", size => 30},
)

td ($f->{art} (-name => $f->{name},
-size => $f->{siz},
))


Wenn ja
Das habe ich ja oben geschrieben. :)

Ohne "" kam das als Fehlermeldung raus
Quote
Can't use string ("<input type="text" name="" />") as a subroutine ref while "strict refs" in use at C:\Programme\Apache Group\Apache2\cgi-bin\kontakte.pl line 93.


Und mit ""kam die
Quote
Can't use string ("textfield") as a subroutine ref while "strict refs" in use at C:\Programme\Apache Group\Apache2\cgi-bin\kontakte.pl line 93.



Das doofe ist laut Buch soll es ja möglich sein. Sie beschreiben nur nicht wie! Grrrr :angry:
renee
 2005-10-12 11:31
#5764 #5764
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
setz das textfield mal in " und mach dann
Code: (dl )
1
2
3
&{$f->{art}}(-name => $f->{name},
-size => $f->{siz},
))
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
zipster
 2005-10-12 11:57
#5765 #5765
User since
2004-09-06
458 Artikel
BenutzerIn
[default_avatar]
Hat leider garnicht verändert.
:(
<< |< 1 2 3 >| >> 21 Einträge, 3 Seiten



View all threads created 2005-10-08 18:24.