Hallo,

Ik heb een aantal checkboxen:

<?php
DEP<input class="checkbox" type="checkbox" name="tag" value="dep" onclick="this.form.submit();" <?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:

<?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?
Alle checkboxen hebben dezelfde name="tag".
Dat werkt niet.
Dat zou moeten kunnen want je mag er maar 1 aanklikken..
Daar hebben ze radio buttons voor uitgevonden.

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

<?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' ;

}
}
?>
Dan moet je inderdaad type="radio" gebruiken.
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.
Het is al opgelost met een loopje.
Bedankt!

Reageren