Schrift
[thread]730[/thread]

Wer hilft mir folgendes Script zu optimieren ??: Anfrage Hilfe

Leser: 1


<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten
Gast Gast
 2006-05-18 17:06
#7680 #7680
Hallo zusammen..

Ich würde mich über eine "grosse" Hilfe freuen. Ich selber habe zwar eine grosse Website, kann aber kein Perl.
Vor ein paar Jahren, hat mir ein netter User ein Scipt geschrieben, das für Euch bestimmt lachhaft ist,-
Ich hab keine Ahnung - Konnte es nur einbinden und es funkte.:
In einem *html <form> werden 20 fragen an unten aufgelistetes Script " Auswertung.pl"
im cgi-bin übergeben.
Das Script zählt die richtigen Antworten ,(aus 3 Fragegruppen) und gibt eine einfache Auswertung aus.


Auf meiner Domain http://www.RalfNickolaus.de kann man sich dieses Skript in funkion anschauen.
Auf der Denksportseite unter "Logictest".-> http://www.RalfNickolaus.de/die_denksportseite.html


Nun zu meinem Anliegen : Wer kann mir das Script etwas umändern sodas :
1.) nur noch eine fragegruppe mit 20 Fragen abgearbeitet wird,
und...
2.) bei 18 oder mehr richtigen Antworten soll das Script auf eine andere *.html Seite linken
(bzw. einen Link anzeigen.)

Geht das ?....

(Weiß nicht ob`s wichtig ist ,aber.. das ganze läuft auf einem Windows Server...)




Hier ist das Script :
------------------------------------------------------------------------------------------

---
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
133
134
135
136
137
138
#!/usr/local/bin/perl
#In der ersten Zeile nach #! ist der Pfad eingetragen, an dem sich perl.exe befindet.

%uservars = &read_query_string;
#Lesen der eingegebenen Felder in %uservars

$logischFig = 0;
$logischVerb = 0;
$raumlich = 0;


#Start der Auswertung der logisch-figuralen Fragen
if ($uservars{'IQ01'} eq 'B') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ02'} eq 'D') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ03'} eq 'B') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ04'} eq 'A') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ05'} eq 'C') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ06'} eq 'D') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ07'} eq 'D') {
$logischFig = $logischFig+1;
};
if ($uservars{'IQ08'} eq 'B') {
$logischFig = $logischFig+1;
};
#Ende logisch-figurale Fragen


#Start der Auswertung der logisch-verbalen Fragen
if ($uservars{'IQ09'} eq 'B') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ10'} eq 'D') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ11'} eq 'B') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ12'} eq 'C') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ13'} eq 'A') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ14'} eq 'D') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ15'} eq 'C') {
$logischVerb = $logischVerb+1;
};
if ($uservars{'IQ16'} eq 'C') {
$logischVerb = $logischVerb+1;
};
#Ende der logisch-verbalen Fragen


#Start der Auswertung der räumlichen Vorstellung
if ($uservars{'IQ17'} eq 'A') {
$raumlich= $raumlich+1;
};
if ($uservars{'IQ18'} eq 'C') {
$raumlich= $raumlich+1;
};
if ($uservars{'IQ19'} eq 'E') {
$raumlich= $raumlich+1;
};
if ($uservars{'IQ20'} eq 'E') {
$raumlich= $raumlich+1;
};
#Ende der Fragen zur räumlichen Vorstellung

$falsch = 20 - $raumlich - $logischVerb - $logischFig;

$logischFig=8-$logischFig;
$logischVerb=8-$logischVerb;
$raumlich=4-$raumlich;

print "Content-type: text/html\n\n";
print <<EOF;
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>

</head>
<BODY background="../back.jpg" text="#000000" bgcolor="#FFFFCC" link="#FF0000" vlink="#FF0000" alink="#FF0000">

<center><b><font size=+4>Testauswertung</font><br>
<br><font size=4>Diese Auswertung zeigt nur die falschen Angaben in den
jeweiligen Abschnitten:</font><font size=4></font>
<p><font size=4>Abschnitt 1) (logisches Denken figural)</font>
<br><font size=4><font color="#FF0000">$logischFig</font> Fehler in 8 Aufgaben</font><font size=4></font>
<p><font size=4>Abschnitt 2) (logisches Denken verbal)</font>
<br><font size=4><font color="#FF0000">$logischVerb</font> Fehler in 8 Aufgaben</font><font size=4></font>
<p><font size=4>Abschnitt 3) (räumliches Vorstellungsvermögen)</font>
<br><font size=4><font color="#FF0000">$raumlich</font> Fehler in 4 Aufgaben</font><font size=4></font>
<p><font size=4>-------------------------------------------------------------------------------------
----------------</font>
<br><font size=4>Ergebnis:</font>
<br><font size=4><font color="#FF0000">$falsch</font> Antwort(en) von 20
Aufgaben sind falsch .......</font><font size=4></font>
</center>


</body>
</html>

EOF

sub read_query_string
{
local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else { # this is a "GET method
$buffer = $ENV{'QUERY_STRING'};
} # else
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C", hex($1))/eg;
$FORM{$name} = $value;
} # foreach
%FORM;
}




---------------------------------------------------------------------------------


Ich danke für Eure Zeit.


Wer mir hilft, dem ist Dank sicher, gebe gerne exclusive Werbung auf meiner Webseite - bin sonst werbefrei...
mit freundlichen Grüssen

RalfNickolaus


Edit Dubu: Code-Tags spendiert\n\n

<!--EDIT|Dubu|1147959031-->
lichtkind
 2006-05-18 20:27
#7681 #7681
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
etwas mehr infos über das ganze währen nicht schlecht.
spontan würd ich das ganz erstmal zu folgendem optimieren:

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
#!/usr/local/bin/perl
#In der ersten Zeile nach #! ist der Pfad eingetragen, an dem sich perl.exe befindet.

%uservars = &read_query_string;
#Lesen der eingegebenen Felder in %uservars

$logischFig = 8;
$logischVerb = 8;
$raumlich = 4;

@anwort = (0,'B','D','B','A','C','D','D','B', 'B','D','B', 'C', 'A','D','C','C', 'A','C','E','E')

for (1..8) { $logischFig-- if $uservars{"IQ$_"} eq $antwort[$_] }
for (9..16) { $logischVerb-- if $uservars{"IQ$_"} eq $antwort[$_] }
for (17..20) { $raumlich-- if $uservars{"IQ$_"} eq $antwort[$_] }

$falsch = $raumlich + $logischVerb + $logischFig;

print "Content-type: text/html\n\n";
print <<EOF;
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>

</head>
<BODY background="../back.jpg" text="#000000" bgcolor="#FFFFCC" link="#FF0000" vlink="#FF0000" alink="#FF0000">

<center><b><font size=+4>Testauswertung</font><br>
<br><font size=4>Diese Auswertung zeigt nur die falschen Angaben in den
jeweiligen Abschnitten:</font><font size=4></font>
<p><font size=4>Abschnitt 1) (logisches Denken figural)</font>
<br><font size=4><font color="#FF0000">$logischFig</font> Fehler in 8 Aufgaben</font><font size=4></font>
<p><font size=4>Abschnitt 2) (logisches Denken verbal)</font>
<br><font size=4><font color="#FF0000">$logischVerb</font> Fehler in 8 Aufgaben</font><font size=4></font>
<p><font size=4>Abschnitt 3) (räumliches Vorstellungsvermögen)</font>
<br><font size=4><font color="#FF0000">$raumlich</font> Fehler in 4 Aufgaben</font><font size=4></font>
<p><font size=4>-------------------------------------------------------------------------------------
----------------</font>
<br><font size=4>Ergebnis:</font>
<br><font size=4><font color="#FF0000">$falsch</font> Antwort(en) von 20
Aufgaben sind falsch .......</font><font size=4></font>
</center>


</body>
</html>

EOF

sub read_query_string
{
local ($buffer, @pairs, $pair, $name, $value, %FORM);
# Read in text
$ENV{'REQUEST_METHOD'} =~ tr/a-z/A-Z/;
if ($ENV{'REQUEST_METHOD'} eq "POST") {
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
} else { # this is a "GET method
$buffer = $ENV{'QUERY_STRING'};
} # else
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%(..)/pack("C", hex($1))/eg;
$FORM{$name} = $value;
} # foreach
%FORM;
}


die sache für weniger fragen zu kürzen ist nun wirklich ein kleines, aber welche fragen genau gekürzt werden müsst ich wissen.\n\n

<!--EDIT|lichtkind|1147971769-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Strat
 2006-05-18 20:45
#7682 #7682
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
und das
Code: (dl )
%uservars = &read_query_string;

und die subroutine wuerde ich durch folgendes ersetzen:
Code: (dl )
1
2
3
use CGI;
my $cgi = CGI->new();
my %uservars = $cgi->Vars();

ist sicherer und leichter verstaendlich
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
lichtkind
 2006-05-18 21:11
#7683 #7683
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
genau strat und da ich jetzt mal vermute das die letzten beiden fragen wegsollen würde der code so aussehen:
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
#!/usr/local/bin/perl

use CGI;
my $cgi = CGI->new();
my %uservars = $cgi->Vars();

$fehler = @anwort = (0,'B','D','B','A','C','D','D','B', 'B','D','B', 'C', 'A','D','C','C', 'A','C');

for (1..$#anwort) { $fehler-- if $uservars{"IQ$_"} eq $antwort[$_] }

print "Content-type: text/html\n\n";
print <<EOF;
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>

</head>
<BODY background="../back.jpg" text="#000000" bgcolor="#FFFFCC" link="#FF0000" vlink="#FF0000" alink="#FF0000">

<center><b><font size=+4>Testauswertung</font><br>
<br><font size=4>Diese Auswertung zeigt nur die falschen Angaben in den
jeweiligen Abschnitten:</font><font size=4></font>
<p><font size=4>Abschnitt 1) (logisches Denken figural)</font>
<br><font size=4><font color="#FF0000">$logischFig</font> Fehler in 8 Aufgaben</font><font size=4></font>
<p><font size=4>Abschnitt 2) (logisches Denken verbal)</font>
<br><font size=4><font color="#FF0000">$logischVerb</font> Fehler in 8 Aufgaben</font><font size=4></font>
<p><font size=4>Abschnitt 3) (räumliches Vorstellungsvermögen)</font>
<br><font size=4><font color="#FF0000">$raumlich</font> Fehler in 4 Aufgaben</font><font size=4></font>
<p><font size=4>-------------------------------------------------------------------------------------
----------------</font>
<br><font size=4>Ergebnis:</font>
<br><font size=4><font color="#FF0000">$falsch</font> Antwort(en) von 20
Aufgaben sind falsch .......</font><font size=4></font>
</center>


</body>
</html>

EOF


jetzt müsste man noch html + links anpassen aber dazu brauch ich wirklich mehr infos
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
renee
 2006-05-18 23:24
#7684 #7684
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Und es fehlt ganz klar Wiki:use strict!

Man muss auch nicht jedesmal <font size=4> zu schreiben. Du kannst für das ganze Dokument ein <span style="font-size:4"> machen...
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/
lichtkind
 2006-05-19 00:23
#7685 #7685
User since
2004-03-22
5697 Artikel
ModeratorIn + EditorIn
[Homepage]
user image
und recht hat der renee, nächster versuch:

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
#!/usr/local/bin/perl

use strict;
use CGI;
my $cgi = CGI->new();
my %uservars = $cgi->Vars();

$fehler = @anwort = (0,'B','D','B','A','C','D','D','B', 'B','D','B', 'C', 'A','D','C','C', 'A','C');

for (1..$#anwort) { $fehler-- if $uservars{"IQ$_"} eq $antwort[$_] }

print "Content-type: text/html\n\n";
print <<EOF;
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<style type="text/css"><!--
body {font-size:18px; }
--></style>
</head>
<BODY background="../back.jpg" text="#000000" bgcolor="#FFFFCC" link="#FF0000" vlink="#FF0000" alink="#FF0000">

<center><b><font size=+4>Testauswertung</font><br>
<br>Diese Auswertung zeigt nur die falschen Angaben in den jeweiligen Abschnitten:
<p>Abschnitt 1) (logisches Denken figural)<br>
<font color="#FF0000">$logischFig</font> Fehler in 8 Aufgaben</p>
<p>Abschnitt 2) (logisches Denken verbal)
<br><font color="#FF0000">$logischVerb</font> Fehler in 8 Aufgaben
<p>Abschnitt 3) (räumliches Vorstellungsvermögen)
<br><font color="#FF0000">$raumlich</font> Fehler in 4 Aufgaben</p>
------------------------------------------------------------------------------------------
-----------
<br><br>Ergebnis:<br>
<font color="#FF0000">$falsch</font> Antwort(en) von $#anwort Aufgaben sind falsch .......
</center>
</body>
</html>
EOF


jetzt hast du schon auch automatisch aktielle anzahl der test drin, vielleicht noch netten titel?\n\n

<!--EDIT|lichtkind|1147984378-->
Wiki:Tutorien in der Wiki, mein zeug:
kephra, baumhaus, garten, gezwitscher

Es beginnt immer mit einer Entscheidung.
Strat
 2006-05-19 02:17
#7686 #7686
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
dann noch anstelle von
Code: (dl )
print "Content-type: text/html\n\n";

das einfachere:
Code: (dl )
1
2
print $cgi->header('text/html');
# oder kuerzer: print $cgi->header();

?

und vor $fehler fehlt ein my\n\n

<!--EDIT|Strat|1147990726-->
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
RalfNickolaus
 2006-05-19 06:52
#7687 #7687
User since
2006-05-18
9 Artikel
BenutzerIn
[Homepage] [default_avatar]
Hallo ich bin es nochmal.

Ich glaube ich habs zu kompliziert ausgedrückt.

die 3 Auswertungen sollen in eine einzige gewechselt werden.

Also
Auswertung der "logisch-figuralen Fragen" +
Auswertung der "logisch-verbalen Fragen" +
Auswertung der "räumlichen Vorstellung" sollen weg.

Nur noch (zb Auswertung "aller-Fragen").
Nicht mehr die"3geteilte Auswertung".


Bei der Auswertung sollte dann zu lesen sein (z.b)
"15 von 20 Aufgaben richtig beantwort."


und die Seite die angezeigt werden soll, wenn 18 oder mehr fragen richtig beantwortet sind soll zb. "richtig.html" heissen.

Wenn noch fragen sind - immer her damit .-)))

mit freundlichen Grüssen
Ralf Nickolaus
renee
 2006-05-19 10:45
#7688 #7688
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Vielleicht meinst Du:
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
#!/usr/local/bin/perl

use strict;
use CGI;
use HTML::Template::Compiled;

my $cgi = CGI->new();
my %uservars = $cgi->Vars();

my @anwort = qw(0 B D B A C D D B B D B C A D C C A C);
my $richtig;

for (1..$#anwort) { $richtig++ if $uservars{"IQ$_"} eq $antwort[$_] }

if($richtig >= 18){
print $cgi->redirect("richtig.html");
}
else{
my $template = HTML::Template::Compiled->new(filename => 'auswertung.tmpl');
$template->param(AUSWERTUNG => $richtig);
$template->param(ANZAHL => scalar(@antwort));
print $cgi->header(),$template->output();
}


auswertung.tmpl
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<!doctype html public "-//w3c//dtd html 4.0 transitional//en">
<html>
<head>
<style type="text/css"><!--
body {font-size:18px; }
--></style>
</head>
<BODY background="../back.jpg" text="#000000" bgcolor="#FFFFCC" link="#FF0000" vlink="#FF0000" alink="#FF0000">

<center><b><font size=+4>Testauswertung</font><br>

<br>Ergebnis:<br>
<font color="#FF0000"><TMPL_VAR NAME=AUSWERTUNG ></font> Antwort(en) von <TMPL_VAR NAME=ANZAHL > Aufgaben sind richtig .......
</center>
</body>
</html>
\n\n

<!--EDIT|renee|1148038763-->
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/
pq
 2006-05-19 14:09
#7689 #7689
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
@renee: entweder <TMPL_VAR oder <%VAR oder <%=, aber nicht <% TMPL_VAR
=)
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
<< |< 1 2 3 >| >> 30 Einträge, 3 Seiten



View all threads created 2006-05-18 17:06.