Problem mit dem option selected
Alex
- perl
Hi,
ich möchte auf meiner Seite ein Script zum Bewerten von Downloads
verwenden. Ähnlich wie bei Amazon. Mein Problem ist das bei dem
Dropdownmenu bei dem man die Bewertung auswählt "extrem schlecht" der
Wert ist, der an erster Stelle steht. Wenn also jemand nicht richtig
hinschaut bewertet er ausversehen das Download schlechter als er will.
Hier der Code aus dem Script:
print "<font size="1" face="Verdana">Bewertung:</font></td><td align="center"><select name="rating" size="1" style="font-family: Verdana; font-size: 8pt">";
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
for ($i = 0; $i <= $maxRating; $i++){
print "<option value="$i">$opinions[$i]</option>";
}
print "</select></td></tr>";
Ich weis das man in HTML mit <option selected="selected"></option> die
Option festlegen kann die am Anfang ausgewählt ist. Nur wie mache ich
das in dem Script?
Danke schon mal für eure Hilfe.
Gruß, Alex
Hallo,
indem du dem Skript mitteilst, wann er
"<option selected>" einsetzen soll.
Also wenn i den Wert hat, der dem
von dir gewünschten Text entspricht.
if (i==ArrayIndex[Text])
...
Grüße,
Dr Z.
Hallo,
indem du dem Skript mitteilst, wann er
"<option selected>" einsetzen soll.
Also wenn i den Wert hat, der dem
von dir gewünschten Text entspricht.if (i==ArrayIndex[Text])
...Grüße,
Dr Z.
Danke für deinen Tip. Ich bin leider nicht so fit mit solchen Sachen.
Es hat schon allein ein paar Monate gedauert nur das Design des Scripts
an meine Bedürfnisse anzupassen. Könntest du mir den Code vieleicht so
abändern das "extrem gut" Standard ist? Ich verstehe nicht ganz wo
"if (i==ArrayIndex[Text]) eingefügt werden muss.
Gruß Alex
Hallo,
nein - ich kann kein Perl ;-).
Die vorher angegebene Zeile, also die Bedingung
musst du inklusive dem was das Skript dann
machen soll in der Schleife unterbringen.
for ($i = 0; $i <= $maxRating; $i++){
if(Bedingung)
{
print "mach jetzt genau das";
}
print "<option value="$i">$opinions[$i]</option>";
}
Woher kommt eigentlich $maxRating? Ich hoffe es
gilt $maxRating = 5.
Grüße,
Dr Z.
Hallo,
nein - ich kann kein Perl ;-).
Die vorher angegebene Zeile, also die Bedingung
musst du inklusive dem was das Skript dann
machen soll in der Schleife unterbringen.for ($i = 0; $i <= $maxRating; $i++){
if(Bedingung)
{
print "mach jetzt genau das";
}
print "<option value="$i">$opinions[$i]</option>";
}Woher kommt eigentlich $maxRating? Ich hoffe es
gilt $maxRating = 5.Grüße,
Dr Z.
Hi, das is ne sehr gute frage ich denke aber auch $maxRating = 5.
Aber ich komme irgentwie kein Stück weiter, weil ich auch kein Perl kann.. Ich komm einfach nicht drauf, wie ich den Code ändern muss. Ich hab gerade noch ein bisschen rumprobiert, aber dann ging das ganze gar nicht mehr.
gruß, alex
hi,
versuchs mal so:
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
mz $defaultValue = 2; # index des wertes der vorselektiert sein soll (hier 2 für durchschnittlich)
for ($i = 0; $i < @opinions; $i++)
{
if ( $i == $defaultValue )
{
print "<option value=\"$i\" selected>$opinions[$i]</option>";
}
else
{
print "<option value=\"$i\">$opinions[$i]</option>";
}
}
schönen sonntag noch,
steckl
versuchs mal so:
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
mz $defaultValue = 2; # index des wertes der vorselektiert sein soll (hier 2 für durchschnittlich)for ($i = 0; $i < @opinions; $i++)
{
if ( $i == $defaultValue )
{
print "<option value="$i" selected>$opinions[$i]</option>";
}
else
{
print "<option value="$i">$opinions[$i]</option>";
}
}
Wie [schon gezeigt](https://forum.selfhtml.org/?t=136508&m=886679), das ist ein Einzeiler mit dem CGI Modul, eigentlich fast immer in einem CGI Programm gebraucht wird.
>
> schönen sonntag noch,
> steckl
Struppi.
--
[Javascript ist toll](http://javascript.jstruebig.de/) (Perl auch!)
hi,
versuchs mal so:
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
mz $defaultValue = 2; # index des wertes der vorselektiert sein soll (hier 2 für durchschnittlich)for ($i = 0; $i < @opinions; $i++)
{
if ( $i == $defaultValue )
{
print "<option value="$i" selected>$opinions[$i]</option>";
}
else
{
print "<option value="$i">$opinions[$i]</option>";
}
}
>
> schönen sonntag noch,
> steckl
Hi,
ich habe deinen Code gerade einmal ausprobiert. Jetzt wird leider
das Dropdownmenu gar nicht mehr angezeigt und alles was im Formular
hinter dem Dropdown ist auch nicht mehr. Könnte ich dir vieleicht
die ganze Datei mailen, das du dir das mal anschaust? Ich glaube dein
Ansatz ist richtig.
Gruß, Alex
An Struppi:
Ich glaube so kann ich das nicht machen. Ich will ja kein neues script schreiben, sondern lediglich ein vorhandenes Freewarescript
anpassen.
Ich glaube so kann ich das nicht machen. Ich will ja kein neues script schreiben, sondern lediglich ein vorhandenes Freewarescript
anpassen.
und das hat nicht irgendwo ein use CGI stehen?
Struppi.
Ich glaube so kann ich das nicht machen. Ich will ja kein neues script schreiben, sondern lediglich ein vorhandenes Freewarescript
anpassen.und das hat nicht irgendwo ein use CGI stehen?
Struppi.
Nein nirgentwo ein CGI USE..
Gruß, Alex
und das hat nicht irgendwo ein use CGI stehen?
Struppi.
Nein nirgentwo ein CGI USE..
Das wär auch merkwürdig, wenn muss es heißen use CGI;
Aber wenn das Skript das Modul nicht nutzt, ist das seltsam, entweder ist es uralt (vor 1998) oder es nutzt ein Template System (so sieht der Quellcode den man bisher sah nicht aus) oder schlecht geschrieben (am wahrscheinlichsten)
Struppi.
morgen
versuchs mal so:
print "<font size="1" face="Verdana">Bewertung:</font></td><td align="center"><select name="rating" size="1" style="font-family: Verdana; font-size: 8pt">";
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
mz $defaultValue = 2; # index des wertes der vorselektiert sein soll (hier 2 für durchschnittlich)for ($i = 0; $i < @opinions; $i++)
{
if ( $i == $defaultValue )
{
print "<option value="$i" selected>$opinions[$i]</option>";
}
else
{
print "<option value="$i">$opinions[$i]</option>";
}
}
print "</select></td></tr>";
> >
> Hi,
> ich habe deinen Code gerade einmal ausprobiert. Jetzt wird leider
> das Dropdownmenu gar nicht mehr angezeigt und alles was im Formular
> hinter dem Dropdown ist auch nicht mehr. Könnte ich dir vieleicht
> die ganze Datei mailen, das du dir das mal anschaust? Ich glaube dein
> Ansatz ist richtig.
du musst das
print "<font size=\"1\" face=\"Verdana\">Bewertung:</font></td><td align=\"center\"><select name=\"rating\" size=\"1\" style=\"font-family: Verdana; font-size: 8pt\">";
davor, und das
print "</select></td></tr>";
danach im script lassen.
mfG,
steckl
morgen
versuchs mal so:
print "<font size="1" face="Verdana">Bewertung:</font></td><td align="center"><select name="rating" size="1" style="font-family: Verdana; font-size: 8pt">";
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
mz $defaultValue = 2; # index des wertes der vorselektiert sein soll (hier 2 für durchschnittlich)for ($i = 0; $i < @opinions; $i++)
{
if ( $i == $defaultValue )
{
print "<option value="$i" selected>$opinions[$i]</option>";
}
else
{
print "<option value="$i">$opinions[$i]</option>";
}
}
print "</select></td></tr>";
> > >
>
> > Hi,
> > ich habe deinen Code gerade einmal ausprobiert. Jetzt wird leider
> > das Dropdownmenu gar nicht mehr angezeigt und alles was im Formular
> > hinter dem Dropdown ist auch nicht mehr. Könnte ich dir vieleicht
> > die ganze Datei mailen, das du dir das mal anschaust? Ich glaube dein
> > Ansatz ist richtig.
>
> du musst das
> print "<font size=\"1\" face=\"Verdana\">Bewertung:</font></td><td align=\"center\"><select name=\"rating\" size=\"1\" style=\"font-family: Verdana; font-size: 8pt\">";
> davor, und das
> print "</select></td></tr>";
> danach im script lassen.
>
> mfG,
> steckl
Also ich habe deinen Code kopiert, habe den Code im Script markiert und dann den Code eingefügt. Dann habe ich die ">>" weg gemacht. Das fenster vom Script öffnet sich. Aber das Dropdownfeld ist immernoch leer und danach höert das ganze Formular auf.
gruß, Alex
Also ich habe deinen Code kopiert, habe den Code im Script markiert und dann den Code eingefügt. Dann habe ich die ">>" weg gemacht. Das fenster vom Script öffnet sich. Aber das Dropdownfeld ist immernoch leer und danach höert das ganze Formular auf.
Meine güte dann probier doch mal:
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
print CGI::popup_menu(
-values => \@opinions,
-default => 'gut'
);
Struppi.
Also ich habe deinen Code kopiert, habe den Code im Script markiert und dann den Code eingefügt. Dann habe ich die ">>" weg gemacht. Das fenster vom Script öffnet sich. Aber das Dropdownfeld ist immernoch leer und danach höert das ganze Formular auf.
Meine güte dann probier doch mal:
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
print CGI::popup_menu(
-values => @opinions,
-default => 'gut'
);
>
>
> Struppi.
Das verursacht das selbe Problem wie Steckel's idee. Das Dropdown ist
leer, und danach hört das Fomrmular einfach aus.
Hell-O!
Das verursacht das selbe Problem wie Steckel's idee. Das Dropdown ist leer, und danach hört das Fomrmular einfach aus.
Dann liegt der Fehler nicht in dem Stückchen Code sondern woanders, denn dieser tut genau das, was du willst. Gibt denn das Errorlog irgendwas her? Wie sieht denn der fehlerhafte (?) HTML-Code aus, der im Browser ankommt?
Siechfred
Hell-O!
Das verursacht das selbe Problem wie Steckel's idee. Das Dropdown ist leer, und danach hört das Fomrmular einfach aus.
Dann liegt der Fehler nicht in dem Stückchen Code sondern woanders, denn dieser tut genau das, was du willst. Gibt denn das Errorlog irgendwas her? Wie sieht denn der fehlerhafte (?) HTML-Code aus, der im Browser ankommt?
Siechfred
Es kommt kein Fehler. Es fehlt einfach der Rest von dem Formular und der
Inhalt des Dropdowns. An dem Script funktioniert an sonsten alles enwandfrei. Es kann also kein anderes Fehler sein. soll ich notfalls den ganzen Code hier posten? Dieser wäre ziemlich lange.
hi,
Das verursacht das selbe Problem wie Steckel's idee. Das Dropdown ist leer, und danach hört das Fomrmular einfach aus.
Dann liegt der Fehler nicht in dem Stückchen Code sondern woanders, denn dieser tut genau das, was du willst. Gibt denn das Errorlog irgendwas her? Wie sieht denn der fehlerhafte (?) HTML-Code aus, der im Browser ankommt?
SiechfredEs kommt kein Fehler. Es fehlt einfach der Rest von dem Formular und der
Inhalt des Dropdowns. An dem Script funktioniert an sonsten alles enwandfrei. Es kann also kein anderes Fehler sein. soll ich notfalls den ganzen Code hier posten? Dieser wäre ziemlich lange.
Poste lieber (wie siechfred schon geschrieben hat) erstmal den HTML-Code, den dein Script erzeugt.
mfG, steckl
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type"content="text/html; charset=iso-8859-1"/>
<script src="http://1.2.3.4/bmi-int-js/bmi.js"language="javascript"></script>
<title>Fastlane - Intro</title>
</head>
<body>
<body link="#000000" vlink="#000000" alink="#000000">
<center><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
<b>Fastlane - Intro</b></font>
<br>
<font face="Verdana, Arial, Helvetica, sans-serif" size="1">Durchschnittliche Bewertung:</font>
<img src="http://www.duncman.de/images/criticalreviews/star.gif"><img src="http://www.duncman.de/images/criticalreviews/star.gif"><img src="http://www.duncman.de/images/criticalreviews/star.gif"><img src="http://www.duncman.de/images/criticalreviews/star.gif"><img src="http://www.duncman.de/images/criticalreviews/star.gif"><br>
<font face="Verdana, Arial, Helvetica, sans-serif" size="1">Wie findest Du den Track? Bewerte ihn doch einfach!</font>
<br>
<center><b></b><br><br><form action="criticalreviews.pl" method="POST">
<table border="0" cellpadding="0" cellspacing="0" width="260px"><tr><td align="left" width="80px">
<font size="1" face="Verdana">Name:</font></td><td align="center"><input type="text" name="reviewer" value="" size="20" maxlength="15" style="font-family: Verdana; font-size: 8pt"></td>
</tr><tr><td align="left"><font size="1" face="Verdana">Bewertung:</font></td><td align="center">
<select name="rating" size="1" style="font-family: Verdana; font-size: 8pt">
So, das ist der Quelltext der seite.
Gruß, Alex
hi,
So, das ist der Quelltext der seite.
sieht aus, als ob dein script an der stelle mit dem select-Feld abbricht.
es waere vielleicht hilfreich, wenn du die warnings einschaltest ( -w am Ende der ersten Zeile des scripts dranhaengen) und am Anfang des Scripts
use strict;
und
use CGI::Carp qw(fatalsToBrowser);
schreiben wuerdest, damit dir eventuelle Fehler angezeigt werden.
gibt es von deinem Server ein error-logfile? hier koennten auch nuetzliche informationen stehen.
ausserdem steht da noch
mz $defaultValue = 2; # index des wertes der vorselektiert sein soll (hier 2 für durchschnittlich)
wobei das 'mz' ein tippfehler ist und 'my' heissen muss.
mfG,
steckl
Hi nochmal an alle die mir geholfen haben,
jetzt klappt es. Ich habe das 'mz' in ein 'my' geändert und
alles funktioniert so wie ich es mir vorgestellt habe.
Vielen Dank an alle! Ihr wart eine große Hilfe.
Gruß, Alex
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
print CGI::popup_menu(
-values => @opinions,
-default => 'gut'
);
> >
> >
> > Struppi.
>
> Das verursacht das selbe Problem wie Steckel's idee. Das Dropdown ist
> leer, und danach hört das Fomrmular einfach aus.
Wenn ich einfach den Code da oben ausführe gibt mir Perl auf der Konsole folgendes aus:
~~~html
<select name="select">
<option value="sehr schlecht">sehr schlecht</option>
<option value="schlecht">schlecht</option>
<option value="durchschnittlich">durchschnittlich</option>
<option selected="selected" value="gut">gut</option>
<option value="sehr gut">sehr gut</option>
<option value="extrem gut">extrem gut</option>
</select>
Du hast irgendwo einen anderen Fehler.
Struppi.
Nochmal Hallo,
bin noch nicht ganz wach...
Ausserdem darf dein Skript die bisherige
Ausgabe nur dann machen, wenn die Bedingung
nicht wahr ist - else also
Grüße,
Dr. Z
hi,
Mein Problem ist das bei dem Dropdownmenu bei dem man die Bewertung auswählt "extrem schlecht" der Wert ist, der an erster Stelle steht. Wenn also jemand nicht richtig hinschaut bewertet er ausversehen das Download schlechter als er will.
Wenn du das änderst, bewertet also nachher jemand, der nicht genau hinschaut, aus Versehen einen Download besser als er wollte.
Es geht dir also nur um ein für dich psychologisch angenehmereres Ergebnis?
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
for ($i = 0; $i <= $maxRating; $i++){
print "<option value="$i">$opinions[$i]</option>";
}
Einfach die Reihenfolge umdrehen wäre hier vermutlich keine gute Idee - dann ändern sich zwar die Beschriftungen, aber die Option-Values bleiben gleich - dann würde für "extrem gut" der Wert 0 übergeben, und dein verarbeitendes Script würde das immer noch als "sehr schlecht" werten.
Du könntest aber die Reihenfolge der opionins umdrehen - und dann in der Ausgabeschleife als Value (5-$i) ausgeben. Dann sollten m.E. angezeitge Bewertung und übergebener Wert wieder zueinander passen.
gruß,
wahsaga
print "<font size="1" face="Verdana">Bewertung:</font></td><td align="center"><select name="rating" size="1" style="font-family: Verdana; font-size: 8pt">";
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
for ($i = 0; $i <= $maxRating; $i++){
print "<option value="$i">$opinions[$i]</option>";
}
print "</select></td></tr>";
Mal abgesehen von dem nicht mehr erwünschten Font-tag im HTML, benutzt du nicht das CGI Modul?
use CGI;
my @opinions = ("sehr schlecht", "schlecht", "durchschnittlich", "gut", "sehr gut", "extrem gut");
print CGI::popup_menu(
-values => \@opinions,
-default => 'gut'
);
Struppi.