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

einfaches Websiteformular - bitte um Hilfe



<< >> 10 Einträge, 1 Seite
Marcoman
 2006-07-31 14:18
#34559 #34559
User since
2006-07-31
5 Artikel
BenutzerIn
[default_avatar]
Hallo Profis
Ersteinmal ein HALLO an euch, denn ich bin neu hier und freue mich, in eurer Community zu sein.

Ich habe eine wirklich große Bitte an euch, und ich hoffe, das mir geholfen werden kann. Leider habe ich mich bisher noch nie mit Perl beschäftigt, aber für eine kleine Sache, die ich machen muss, wurde mir gesagt, das das nur über Perl geht. Also wende ich mich vertrauensvoll an euch, mit der Hoffnung auf Erfolg....

Ich möchte folgendes Resultat haben:
EIn User öffnet eine Website (Intranet) und hat die Möglichkeit, in 4 Felder Daten bzw. Zahlen reinzuschreiben, die dann am besten auf dem Server in einer Datei gesammelt werden und ich dann abrufen kann.

Es muss nichts Kompiziertes sein. Vieleicht sagt euch das ja was. Wäre echt fantastisch, wenn von euch jemand sowas kann oder aber mir sagen kann, was ich machen kann, wenn es so nicht funktioniert.
Wenn ihr mehr Details braucht...noProb

lieben Dank soweit
Gruß Marco

(Kenn mich mit Excel und Access teilweise aus)
renee
 2006-07-31 14:38
#34560 #34560
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Wenn Du Dich mehr für die Materie interessierst, solltest Du Dir vielleicht mal ein CGI-Tutorial durchlesen. Auch das hier könnte für Dich interessant sein: http://perl.renee-baecker.de/kurs_01.pdf

Zu Deiner Frage:

Als erstes brauchst Du die Webseite, auf der das Formular ist. Dem Formular musst Du dann noch mit dem action-Attribut sagen, an welches Skript das geschickt werden soll.

Beispielseite.html:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
<html>
<body>
<form action="./cgi-bin/skript.cgi" method="post">
<input type="text" name="Feld1"><br />
<input type="text" name="Feld2"><br />
<input type="text" name="Feld3"><br />
<input type="text" name="Feld4"><br />
<input type="submit" value="Abschicken">
</form>
</body>
</html>


skript.pl
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl

use strict;
use warnings;
use CGI;

my $cgi = CGI->new();
print $cgi->header();
my %params = $cgi->Vars();

print $_," -> ",$params{$_},"<br />" for(sort keys %params);


Das Skript muss die Rechte 755 bekommen und der Webserver (Apache, IIS,...) muss die Ausführung von CGI-Skripten erlauben.
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/
Marcoman
 2006-07-31 23:39
#34561 #34561
User since
2006-07-31
5 Artikel
BenutzerIn
[default_avatar]
Hi

Oh man, vielen Dank für die Antwort. Ich muss ehrlich sagen, das ich berufsbedingt sehr viel mit Excel und Access zu tun habe. Was die Programmierung angeht, ist das sicherlich nicht meine Stärke.

Ich würde mich freuen, wenn du mir ein wenig beschreiben könntest, was ich wie machen muss.

Die Website soll nach Möglichkeit so aussehen:
http://people.freenet.de/snopy/Onlineformular.htm

Was genau müsste ich veranlassen, damit
1. In dem Feld "Datum" immer automatisch das Datum des aktuellen Tages drin steht
2. nach Absenden der Daten das Formular auf 0 gesetzt wird
3. Die Daten letztendlich in einer Datei gespeichert werden bzw. wo muss das 2. script von dir einfefügt werden und wie muss die Datei auf dem Server heißen bzw. funktionieren. Ist das eine Exceldatei oder wie muss ich mir das vorstellen?



Ich bin übrigens niemand, der sich das Wissen anderer erschleichen will. Ich wäre wirklich begeistert, wenn die Möglichkeit bestehen würde, mit mir zusammen so ein Formular zu kreieren. Allein packe ich das wirklich nicht und leider habe ich im Moment nicht die Zeit, mich da durch zu wuseln...

Gruß Marco\n\n

<!--EDIT|Marcoman|1154375595-->
renee
 2006-08-01 00:10
#34562 #34562
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das hier ist das Skript:
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
#!/usr/bin/perl

# nachfolgend zwei wichtige Pragmas, die den Programmierer zu sauberer
# Programmierung zwingen, siehe: wiki.perl-community.de/bin/view/Wissensbasis/UseStrict
use strict;
use warnings;

# CGI.pm ist praktisch fuer die Arbeit mit CGI
use CGI;

# allgemeine Einstellungen - die muessen angepasst werden
my $file = './zieldatei.txt';

# erzeuge ein Objekt von CGI, lese die Formulardaten aus und gebe den Header aus
my $cgi = CGI->new();
my %params = $cgi->Vars();
print $cgi->header();

if(exists $params{action} and $params{action} eq 'save'){
save_to_file($file,\%params);
show_formular(get_date(),'Daten wurden gespeichert');
}
else{
my $date = get_date();
show_formular($date);
}

#------------------------------------------------------------------------------#
# Subroutines #
#------------------------------------------------------------------------------#

##
# Methode zum Speichern der Daten
##
sub save_to_file{
my ($file,$params) = @_;
my $string = $params->{Date}.": ".
$params->{Name}.": ".
$params->{Number}.": ".
$params->{Units}.": ".
$params->{Comments}."\n\n";
open(my $w_fh,'>',$file) or die $!;
print $w_fh $string;
close $w_fh or die $!;
}

##
# Methode zum Berechnen des heutingen Tages
##
sub get_date{
my ($day,$mon,$year) = (localtime(time))[3..5];
my $date = sprintf("%02d.%02d.%04d",$day,$mon+1,$year+1900);
return $date;
}

##
# Methode zur Ausgabe des Formulars
##
sub show_formular{
my ($date,$msg) = @_;
print qq~<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY bgColor=#ffff80>
<P align=center><U><b><FONT color=#0000a0
size=7>Formular f&uuml;r
Details</FONT></b></U></P>
<P align=center><U></U>&nbsp;</P>
<P align=center>&nbsp;</P>
<P align=center>
<div align="center">
<form action="./skript.cgi" method="post">
<font color="#ff0000">$msg</font>
<TABLE style="WIDTH: 436px; HEIGHT: 206px" borderColor=#0000a0 bgColor=#c0c0c0
border=1>
<TR>
<TD>
<P align=right><FONT size=5><b>Datum:</b></FONT></P>

</TD>
<TD>
<INPUT style="WIDTH: 93px; HEIGHT: 22px" size=11 name="Date" value="$date">
</TD>
</TR>
<TR>
<TD>
<P align=right><FONT size=5><b>Name:</b></FONT></P>
</TD>

<TD>
<INPUT style="WIDTH: 93px; HEIGHT: 22px" size=11 name=Name>
</TD>
</TR>
<TR>
<TD>
<P align=right><FONT size=5><b>Nummer:</b></FONT></P>
</TD>
<TD>

<INPUT style="WIDTH: 93px; HEIGHT: 22px" size=11 name=Number>
</TD>
</TR>
<TR>
<TD>
<P align=right><FONT size=5><b>Anzahl:</b></FONT></P>
</TD>
<TD>
<INPUT style="WIDTH: 93px; HEIGHT: 22px" size=11 name=Units>

</TD>
</TR>
<TR>
<TD>
<P align=right><FONT size=5><b>Kommentar:</b></FONT></P>
</TD>
<TD>
<TEXTAREA name=Comments></TEXTAREA>
</TD>

</TR>
</TABLE>
<input type="submit" value="Eintragen">
<input type="hidden" name="action" value="save">
</form>
</div>
<div align="center"></div>
<div align="center"></div>
<P align=center><INPUT style="WIDTH: 153px; HEIGHT: 24px" type=submit size=204 value=Sichern name=Sichern></P>
</BODY>
</HTML>~;
}


Das musst Du in ein Verzeichnis speichern, in dem das Ausführen von CGI-Skripten erlaubt ist. Meistens hat es einen Namen wie "cgi-bin" oder so ähnlich. Du solltest es skript.cgi ändern oder Du musst in der Zeile des <form action="./skript.cgi" method="post"> bei action den neuen Namen eintragen.

Wenn Du das Skript gespeichert hast, musst Du dem Skript die Rechte 755 geben (mit chmod).

Arbeitest Du unter Unix oder Windows? welcher Webserver ist es?

Was meinst Du mit
Quote
2. nach Eintragung der Daten das Formular auf 0 gesetzt wird
?
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/
Marcoman
 2006-08-01 07:13
#34563 #34563
User since
2006-07-31
5 Artikel
BenutzerIn
[default_avatar]
Hi

Ich bin ja fasziniert... :)

Also, wir arbeiten unter Unix und Windows. Hauptsächlich aber auf Unix! Das würde auch reichen. Die Workstation ist auf jeden Fall Unix und unser Server dürfte eh Unix sein. Nur Hin und wieder gibt es PCs mit Windows. Das kann ich aber regeln.

Zu deinem zweiten Punkt - ich meinte, das wenn der User das Formular abgeschickt hat, das dann die Eintragungen im Formular, die er getätigt hat, wieder weg sind, so dass der nächste etwas einschreiben und abschicken kann.


Deine Punkte hinter den Rautezeichen muss ich selbst beachten, die darf ich nicht mit in das Quellverzeichnis der Website aufnehmen, richtig :)
Muss ich jetzt noch was wegen Unix beachten?

Ich bin ja mal gespannt....

Gruß Marco\n\n

<!--EDIT|Marcoman|1154402046-->
renee
 2006-08-01 09:38
#34564 #34564
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es kommt nur auf den Server an. Ob dann User mit Windows-PCs auf die Seite kommen, spielt keine Rolle.

Bei einem Unix-Server musst Du so vorgehen wie ich es oben geschrieben habe (chmod,etc).

Das Rautezeichen ist bei Perl ein Kennzeichen für ein Kommentar. Ich habe den Quellcode für Dich etwas kommentiert damit Du etwas bessr verstehst, was ich da mache.
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/
Marcoman
 2006-08-01 14:33
#34565 #34565
User since
2006-07-31
5 Artikel
BenutzerIn
[default_avatar]
Okay, vielen Dank erstmal. Ich probiere es aus und gebe auf jeden Fall Feedback!

THX
Marco
Marcoman
 2006-08-02 18:47
#34566 #34566
User since
2006-07-31
5 Artikel
BenutzerIn
[default_avatar]
Hallo

So, da bin ich wieder. Also, wir haben es so wie beschrieben gemacht. Leider bekamen wir die Fehlermeldung

"Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, ............. and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log."

Wir haben die Rechte vergeben und das auch umbenannt.
Vieleicht ist es einfacher, das Formular mit PHP zu schreiben? Habe davon gehört, das das einfacher sein soll...

Gruß Marco\n\n

<!--EDIT|Marcoman|1154530060-->
Ronnie
 2006-08-02 18:59
#34567 #34567
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
Schau einfach mal im error.log des Web-Servers was er da eigentlich genau bemängelt. Du kannst auch oben in dem Skript
Code: (dl )
use CGI::Carp qw/fatalsToBrowser/;
einfügen - dann sollte es im Browser eine ausführlichere Fehlermeldung geben.\n\n

<!--EDIT|Ronnie|1154530792-->
pq
 2006-08-02 19:58
#34568 #34568
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
[quote=Marcoman,02.08.2006, 16:47]Hallo

"Internal Server Error"
[/quote]
Wiki:Wissensbasis.FaqCGIServerError500
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 10 Einträge, 1 Seite



View all threads created 2006-07-31 14:18.