Probleem met checkbox
Ik heb een aantal checkboxen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?php
DEP<input class="checkbox" type="checkbox" name="tag" value="dep" onclick="this.form.submit();" [code]<?php if($_GET['dep'] == '1'){ echo "checked"; } ?>>
FAR<input class="checkbox" type="checkbox" name="tag" value="far" onclick="this.form.submit();" <?php if($_GET['far'] == '1'){ echo "checked"; } ?>>
EOF<input class="checkbox" type="checkbox" name="tag" value="eof" onclick="this.form.submit();" <?php if($_GET['eof'] == '1'){ echo "checked"; } ?>>
RTP<input class="checkbox" type="checkbox" name="tag" value="rtp" onclick="this.form.submit();" <?php if($_GET['rtp'] == '1'){ echo "checked"; } ?>>
LAN<input class="checkbox" type="checkbox" name="tag" value="lan" onclick="this.form.submit();" <?php if($_GET['lan'] == '1'){ echo "checked"; } ?>>
PRN<input class="checkbox" type="checkbox" name="tag" value="prn" onclick="this.form.submit();" <?php if($_GET['prn'] == '1'){ echo "checked"; } ?>>
?>
DEP<input class="checkbox" type="checkbox" name="tag" value="dep" onclick="this.form.submit();" [code]<?php if($_GET['dep'] == '1'){ echo "checked"; } ?>>
FAR<input class="checkbox" type="checkbox" name="tag" value="far" onclick="this.form.submit();" <?php if($_GET['far'] == '1'){ echo "checked"; } ?>>
EOF<input class="checkbox" type="checkbox" name="tag" value="eof" onclick="this.form.submit();" <?php if($_GET['eof'] == '1'){ echo "checked"; } ?>>
RTP<input class="checkbox" type="checkbox" name="tag" value="rtp" onclick="this.form.submit();" <?php if($_GET['rtp'] == '1'){ echo "checked"; } ?>>
LAN<input class="checkbox" type="checkbox" name="tag" value="lan" onclick="this.form.submit();" <?php if($_GET['lan'] == '1'){ echo "checked"; } ?>>
PRN<input class="checkbox" type="checkbox" name="tag" value="prn" onclick="this.form.submit();" <?php if($_GET['prn'] == '1'){ echo "checked"; } ?>>
?>
Als 1 van de checkboxen is aangevinkt, zet hij de rest van alle waardes standaard op 0, zodat deze niet aangevinkt zijn en de resultaten hiervan niet getoond worden.
Dit is de code die daarachter hoort:
Code (php)
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
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
<?php
if(isset($_POST['tag'])){
if($_POST['tag'] == 'dep' && $_GET['dep'] == 0){
$dep = '&dep=1';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'far' && $_GET['far'] == 0){
$dep = '&dep=0';
$far = '&far=1';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'eof' && $_GET['eof'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=1';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'lan' && $_GET['lan'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=1';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'prn' && $_GET['prn'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=1';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'rtp' && $_GET['rtp'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=1';
}
else{
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
}
?>
if(isset($_POST['tag'])){
if($_POST['tag'] == 'dep' && $_GET['dep'] == 0){
$dep = '&dep=1';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'far' && $_GET['far'] == 0){
$dep = '&dep=0';
$far = '&far=1';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'eof' && $_GET['eof'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=1';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'lan' && $_GET['lan'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=1';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'prn' && $_GET['prn'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=1';
$rtp = '&rtp=0';
}
elseif($_POST['tag'] == 'rtp' && $_GET['rtp'] == 0){
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=1';
}
else{
$dep = '&dep=0';
$far = '&far=0';
$eof = '&eof=0';
$lan = '&lan=0';
$prn = '&prn=0';
$rtp = '&rtp=0';
}
}
?>
Nu gaat hij van links naar rechts perfect, alleen van rechts naar links wijzigt hij de waardes niet.
Wie kan mij helpen?
Dat werkt niet.
Dat zou moeten kunnen want je mag er maar 1 aanklikken..
Niet getest maar als het goed is doet onderstaande hetzelfde als jouw code.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
# De lijst met tags.
$tags = array('dep', 'far', 'eof', 'lan', 'prn', 'rtp');
# Controleren of $_POST[''] bestaat en of het een geldige waarde bevat.
if(isset($_POST['tag']) and in_array($_POST['tag'], $tags)){
# Alle tags aflopen.
foreach($tags as $tag){
# De vars aanmaken en invullen.
$$tag = ($_POST['tag'] == $tag and isset($_GET[$tag]) and $_GET[$tag] == 0) ? '&'.$tag.'=1' : '&'.$tag.'=0' ;
}
}
?>
# De lijst met tags.
$tags = array('dep', 'far', 'eof', 'lan', 'prn', 'rtp');
# Controleren of $_POST[''] bestaat en of het een geldige waarde bevat.
if(isset($_POST['tag']) and in_array($_POST['tag'], $tags)){
# Alle tags aflopen.
foreach($tags as $tag){
# De vars aanmaken en invullen.
$$tag = ($_POST['tag'] == $tag and isset($_GET[$tag]) and $_GET[$tag] == 0) ? '&'.$tag.'=1' : '&'.$tag.'=0' ;
}
}
?>
Gewijzigd op 28/11/2012 10:32:55 door - Mark -
Daarbij is name="tag" geen probleem.
Die variabele vars "Het $$tag gedeelte" die ik gebruik zijn niet echt mooi eigenlijk. Het is beter om daar een array van te maken maar ik weet niet hoeveel werk het is om de rest van je script aan te passen.
Bedankt!