Schrift
[thread]409[/thread]

Checkbox Werteübergabe

Leser: 2


<< >> 4 Einträge, 1 Seite
Cryog3n
 2005-01-19 19:10
#4141 #4141
User since
2004-12-17
18 Artikel
BenutzerIn
[default_avatar]
Hallo Leute,

bitte um Hilfe bei folgendem Problem.

Ich hab in meinem Perlscript ein Formular. Darin befindet sich auch eine Checkbox... hier der Code.

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
if ($alt != 0)
    {
    print<<ENDE;
    <td><div align="right"><input style="border:none;" type="checkbox" name="alternative" value="1" checked></div></td>
ENDE
    }

    if ($alt == 0)
    {
    print<<ENDE;
    <td><div align="right"><input style="border:none;" type="checkbox" name="alternative" value="1"></div></td>
ENDE
    }


die dekleration sieht folgendermaßen aus...

Code: (dl )
my $formalternative = $cgi->param ("alternative");


Nun übergebe ich das $formalternative an meine subroutine. Alles soweit sogut, aber wie kann ich den Wert der Checkbox abfragen? Das mit Value klappt ja nicht da ich dann immer ne 1 drin stehn hab... ich will aber entweder 1 oder 0 übergeben, jenachdem ob der User ein Häckchen setzt oder nicht...

Bitte um Hilfe!

P.S >>> das checked hilft mir nichts, da das nur das Häckchen beim laden des Fensters setzt oder nicht! Der User kanns dann entweder raus machen oder drin lassen... DEN Wert mit 0 oder 1 bräuchte ich dann...\n\n

<!--EDIT|Cryog3n|1106161535-->
Strat
 2005-01-19 23:10
#4142 #4142
User since
2003-08-04
5246 Artikel
ModeratorIn
[Homepage] [default_avatar]
wie rufst du die seite aus, auf der der wert der checkbox ausgewertet werden soll? gib vielleicht mal die komplette <form ...>...</form> oder, wenn du es mit javascript machst, dann noch zusaetzlich das javascript an...
perl -le "s::*erlco'unaty.'.dk':e,y;*kn:ai;penmic;;print"
http://www.fabiani.net/
mordur
 2005-01-20 09:38
#4143 #4143
User since
2003-09-25
182 Artikel
BenutzerIn
[Homepage] [default_avatar]
Zitat selfhtml
Quote
Mit dem Attribut value= bestimmen Sie einen internen Bezeichnerwert für jede Checkbox (value = Wert). Wenn der Anwender das Formular abschickt, werden die Bezeichnerwerte des oder der angekreuzten Buttons übertragen.

D.h. du bekommst natürlich immer 1 weil du immer value =1 setzt. Musst du den Wert da so setzen? Sonst würde ich im zweiten Block, wenn $alt=0 ist, value=0 setzen. Wenn du value nicht brauchst lass es ganz weg, dann wird 1 oder 0 gesendet (oder on/off?) je nachdem ob das gecheckt ist oder nicht. Das kannst du dann auswerten.
Musst du mal genauer erläutern was du da wie mit fürn Zweck verfolgen tutest.\n\n

<!--EDIT|mordur|1106206854-->
Dubu
 2005-01-20 13:38
#4144 #4144
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
@Cryog3n: Wenn der Benutzer das Feld angekreuzt hat, dann ist $cgi->param ("alternative") gleich 1, wenn er das nicht hat, dann ist es einfach undef, weil das Feld gar nicht erst uebertragen wird.

Wenn dir das undef nicht gefaellt, dann koenntest du deine Variable auch per Default auf 0 setzen:
Code: (dl )
my $formalternative = $cgi->param ("alternative") || 0;

Damit ist in $formalternative immer entweder der Wert aus dem Formular (also 1) oder 0.

Abgesehen davon: Es sollte so funktionieren, wie du es oben geschrieben hast, falls $alt den Wert von $formalternative hat. Leider ist der gepostete Code so unvollstaendig, dass man nicht erkennen kann, wo der Wert herkommt.

Der Code ist auch etwas unuebersichtlich (zu viel doppelt), und die zwei if-Abfragen, die sich ja eigentlich ausschliessen sollten, wirken auch komisch. Ich haette das so gemacht:
Code: (dl )
1
2
3
4
5
print q{<td><div align="right"><input style="border:none;" type="checkbox" name="alternative" value="1"};

print " checked" if $alt;

print "></div></td>\n";



@Mordur: Nee, der Code stimmt so. Wenn $alt gesetzt ist, soll nur zusaetzlich das "checked"-Attribut gesetzt werden. Der value sollte in beiden Faellen gleich sein.
<< >> 4 Einträge, 1 Seite



View all threads created 2005-01-19 19:10.