Probleem met checkbox

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Marijke Hakvoort

Marijke Hakvoort

28/11/2012 10:04:59
Quote Anchor link
Hallo,

Ik heb een aantal checkboxen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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"; } ?>
>
                                        &nbsp;&nbsp;&nbsp;
                                        FAR<input class="checkbox" type="checkbox" name="tag" value="far" onclick="this.form.submit();" <?php if($_GET['far'] == '1'){ echo "checked"; } ?>>
                                        &nbsp;&nbsp;&nbsp;
                                        EOF<input class="checkbox" type="checkbox" name="tag" value="eof" onclick="this.form.submit();" <?php if($_GET['eof'] == '1'){ echo "checked"; } ?>>
                                        &nbsp;&nbsp;&nbsp;
                                        RTP<input class="checkbox" type="checkbox" name="tag" value="rtp" onclick="this.form.submit();" <?php if($_GET['rtp'] == '1'){ echo "checked"; } ?>>
                                        &nbsp;&nbsp;&nbsp;
                                        LAN<input class="checkbox" type="checkbox" name="tag" value="lan" onclick="this.form.submit();" <?php if($_GET['lan'] == '1'){ echo "checked"; } ?>>
                                        &nbsp;&nbsp;&nbsp;
                                        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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
            }
        }

?>


Nu gaat hij van links naar rechts perfect, alleen van rechts naar links wijzigt hij de waardes niet.
Wie kan mij helpen?
 
PHP hulp

PHP hulp

27/11/2024 23:20:15
 
- SanThe -

- SanThe -

28/11/2012 10:17:09
Quote Anchor link
Alle checkboxen hebben dezelfde name="tag".
Dat werkt niet.
 
Marijke Hakvoort

Marijke Hakvoort

28/11/2012 10:25:19
Quote Anchor link
Dat zou moeten kunnen want je mag er maar 1 aanklikken..
 
- Mark -

- Mark -

28/11/2012 10:26:43
Quote Anchor link
Daar hebben ze radio buttons voor uitgevonden.

Niet getest maar als het goed is doet onderstaande hetzelfde als jouw code.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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' ;
            
            }
        }

?>
Gewijzigd op 28/11/2012 10:32:55 door - Mark -
 
- SanThe -

- SanThe -

28/11/2012 10:33:37
Quote Anchor link
Dan moet je inderdaad type="radio" gebruiken.
Daarbij is name="tag" geen probleem.
 
- Mark -

- Mark -

28/11/2012 10:59:00
Quote Anchor link
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.
 
Marijke Hakvoort

Marijke Hakvoort

28/11/2012 11:05:46
Quote Anchor link
Het is al opgelost met een loopje.
Bedankt!
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.