User since
2004-03-03
98
Artikel
BenutzerIn
Hallo,
habe folgendes Problem. Ich versuch es mal zu beschreiben:
Ich habe folgendes vor: Habe ein Tabelle mit drei Spalten und eine Zeile. Beschriftung ist folgende:
Stück Artikel Euro
1 blabla 5,00
Wenn man jetzt aber noch einen Artikel hinzufügen möchte, dann soll man auf so einen Button "Hinzufügen" draufklicken, damit man den nächsten Artikel eintippen kann.
Also folgendermaße:
Stück Artikel Euro
1 blabla 5,00
HINZUFÜGEN
Hier kommt mein bisheriger Code:
<HTML><HEAD>
<META http-equiv=content-type content=text/html;charset=iso-8859-1>
<script language=JavaScript>
</SCRIPT>
<META content="MSHTML 6.00.2600.0" name=GENERATOR></HEAD>
<BODY bgColor=#689cd0><FONT face=Arial,Helvetica,Geneva,Swiss,SunSans-Regular>
#<FORM action="/cgi-franz-kahl/kundenerfassung_org.pl" method="post">
</FONT>
<table border="1" width=750 align=center>
<tr>
<td width="5%">Stueck</td>
<td width="80%">Artikel</td>
<td width="15%">EURO</td>
</tr>
<!-- usw. andere Zeilen der Tabelle -->
<tr>
<td><INPUT size=5 name="STUECK"></td>
<td><INPUT size=90 name="ARTIKEL"></td>
<td><INPUT size=5 name="EURO"></td>
</tr>
Ist so was überhaupt möglich zu realisieren?
Vielen Dank im Voraus.
Piero
User since
2003-08-04
14371
Artikel
ModeratorIn
So wie Du das beschreibst, willst Du eher eine Zeile zu einer Tabelle hinzufügen...
Und das ist relativ einfach...
html-Formular:
<FORM action="/cgi-franz-kahl/kundenerfassung_org.pl" method="post">
<table border="1" width=750 align=center>
<tr>
<td width="5%">Stueck</td>
<td width="80%">Artikel</td>
<td width="15%">EURO</td>
</tr>
<!-- usw. andere Zeilen der Tabelle -->
<tr>
<td><INPUT size=5 name="STUECK"></td>
<td><INPUT size=90 name="ARTIKEL"></td>
<td><INPUT size=5 name="EURO"></td>
</tr></table>
<input type="submit" value="Artikel eintragen"> </form>
script:
use CGI;
use DBI;
my $cgi = CGI->new();
my %params = $cgi->Vars();
print $cgi->header();
my $dbh = DBI->connect("DBI:mysql:$dbname:$host",$user,$pwd) or die $!;
$dbh->do("INSERT INTO table(stueck,artikel,euro) VALUES('$params{STUECK}','$params{ARTIKEL}','$params{EURO}');");
print $cgi->h2('Artikel eingetragen);
$dbh->disconnect();
\n\n
<!--EDIT|renee|1082973987-->
User since
2004-03-03
98
Artikel
BenutzerIn
Hallo,
könnte man das Script so umschreiben, dass es auch ohne eine MYSQL Datenbank funktioniert?
Vielen Dank.
User since
2003-08-04
14371
Artikel
ModeratorIn
Natürlich geht das auch ohne MySQL...
Wie hast Du denn die Daten gespeichert??
User since
2004-03-03
98
Artikel
BenutzerIn
Hallo,
man könnte doch auch alles mit einem Array realisieren, oder?
Oder hab ich jetzt einen Denkfehler?
User since
2003-08-04
14371
Artikel
ModeratorIn
Du meinst ein "mehrdimensionales" Array?? Beschreib doch bitte mal genauer, was Du haben willst. Die wenigen Brocken, die Du uns hier zur Hand gibst, sind nicht genau genug. Da kann man nur raten, was Du genau willst...\n\n
<!--EDIT|renee|1082975600-->
User since
2004-03-03
98
Artikel
BenutzerIn
Hallo,
entschuldigung, dass man meine Problematik nicht verstanden hat. Aber du hast recht, zu wenige Informationen.
Ich hab folgendes vor:
Ich habe eine HTML-Datei mit dem Namen Bedarfsmeldung.
In dieser Datei gibt es eine Tabelle, in der man die Stückzahl, den Artikel und den Preis eintippen kann.
Wenn man mit den ersten Artikel eingetragen hat und man will noch einen weiteren eintragen, dann wollte ich es, dass man auf dem Button "hinzufügen" klickt, und dann erscheinen wieder drei INPUT-Feld unter der ersten Position, wo man dementsprechend den zweiten Artikel eingeben kann usw...
Später soll das ganze dann per E-Mail versendet werden.
Ist es jetzt die Problematik verstanden?
Danke.
User since
2003-08-04
14371
Artikel
ModeratorIn
Ich würde das etwas anders lösen:
Schon mal mit HTML::Template gearbeitet?? Wenn nein, dann kann ich es Dir nur empfehlen (Hier findest Du ein paar Informationen mehr:
http://perl.renee-baecker.de/HTML_Template.pdf )!
Erstelle Dir ein Template, das im Grunde so aussieht:
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
<html>
<body>
<FORM action="/cgi-franz-kahl/skript.pl" method="post">
<table>
<tr>
<td width="5%">Stueck</td>
<td width="80%">Artikel</td>
<td width="15%">EURO</td>
</tr>
<!-- TMPL_LOOP NAME=ARTIKELLISTE -->
<tr>
<td><!-- TMPL_VAR NAME=STUECK --></td>
<td><!-- TMPL_VAR NAME=ARTIKEL --></td>
<td><!-- TMPL_VAR NAME=EURO --></td>
</tr>
<!-- /TMPL_LOOP -->
<tr>
<td><INPUT size=5 name="STUECK"></td>
<td><INPUT size=90 name="ARTIKEL"></td>
<td><INPUT size=5 name="EURO"></td>
</tr>
<tr>
</table>
<input name="add" type="submit" value="Artikel hinzufügen"> * <input type="submit" name="email" value="E-Mail abschicken">
<input type="hidden" value="<!-- TMPL_VAR NAME=ALT ESCAPE=HTML -->" name="alt">
</form>
</body>
</html>
und statt der statischen HTML-Seite rufst Du folgendes Skript auf:
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
#! /usr/bin/perl
use strict;
use warnings;
use diagnostics;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use HTML::Template; # musst Du Dir evtl. noch installieren
my $cgi = CGI->new();
my %params = $cgi->Vars();
print $cgi->header(-type => 'text/html');
my $template = HTML::Template->new(filename => 'template.html');
if($params{add}){ # wenn artikel hinzugefügt werden soll
my @loop = ();
if($params{alt}){
my @artikel = split(/;/,$params{alt});
foreach(@artikel){
my ($art_name,$stueck,$euro) = split(/#/,$_);
push(@loop,{ARTIKEL => $art_name, STUECK => $stueck, EURO => $euro});
}
}
push(@loop,{ARTIKEL => $params{ARTIKEL}, STUECK => $params{STUECK}, EURO => $params{EURO});
my $alte = $params{alt}.";$params{ARTIKEL}#$params{STUECK}#$params{EURO}";
$template->param(ALT => $alte,
ARTIKELLISTE => \@loop);
}
else{
# Mail versenden
}
print $template->output();
Wie das dann ausssieht siehst Du hier:
http://renee-baecker.de/renee_cgi/template_test.cgi
User since
2003-08-04
14371
Artikel
ModeratorIn
Hier habe ich jetzt allerdings noch nicht die Mail-Versendung eingebaut...
User since
2004-03-03
98
Artikel
BenutzerIn
Hallo,
wo kann ich mir das Modul template.pm downloaden. Weißt es jemand zufällig?
Oder kann man das Skript auch so umschreiben, dass man das Modul nicht benötigt?