Input Type Radio Korter
Ik wist hier niet echt een goeie titel voor.
Ik heb dus een ledensysteempje, en daar kan je instellen per gebruiker wat ze kunnen.
Voorbeeld: Zijn ze trainer, mogen ze het forum bewerken ...
Die gegevens sla ik dan op in de database, met een '1' (Ja) of een '0' (Nee).
Om dit om te roepen, zet ik ze in een Input met Radio.
Maar, kan dit korter?
Want dit is zeer lang, en denk ook wat overbodige code ..
Ik moet dit 5 keer doen.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<?php
If($row_get_lid['trainer'] == "1") {
echo ' <td><input type="radio" name="trainer" value="1" checked > Ja';
echo ' <input type="radio" name="trainer" value="0" > Nee</td>';
} else {
echo '<td> <input type="radio" name="trainer" value="1"> Ja ';
echo ' <input type="radio" name="trainer" value="0" checked> Nee </td>';
}
?>
If($row_get_lid['trainer'] == "1") {
echo ' <td><input type="radio" name="trainer" value="1" checked > Ja';
echo ' <input type="radio" name="trainer" value="0" > Nee</td>';
} else {
echo '<td> <input type="radio" name="trainer" value="1"> Ja ';
echo ' <input type="radio" name="trainer" value="0" checked> Nee </td>';
}
?>
Lange code heeft vaak 2 typen bad practises: duplicated code en repeating code.
Duplicated code is het geen je in dit voorbeeld laat zien. Je hebt heel veel code die hetzelfde is tussen de if en de else (de static code) en eigenlijk maar 1 veranderende optie (dynamic code). Je maakt deze code korter door de static code te isoleren van de dynamische code. In ons geval betekend dat we de if eruit slepen en die gaan gebruiken zoals in Nick's voorbeeld.
Repeating code is code die meerdere malen voor een andere waarde uitgevoerd moet worden. Dit is wat jij zegt met "Ik moet dit 5 keer doen". Repeating code los je op door de code in een functie te zetten en de veranderende waarde in een parameter te plaatsen. In ons geval zou dat denk ik zo worden:
Nu hoop ik dat dat gewoon een INT(1)-veld is of (wellicht beter) een BOOLEAN.
Dus geen VARCHAR.
Waarom ik dit zeg? Omdat je haakjes gebruikt om de waarden.
Een 1 staat gelijk aan TRUE, een 0 gelijk aan FALSE (met ==, niet met ===).
Maar een '1' is gewoon een string. PHP is gelukkig (vind ik) wel zo flexibel dat hij dat ook wel ziet als een 1 (=== true), maar let op hoe je het opslaat in de database.
En wat Wouter J zegt: gewoon een functie schrijven inderdaad.
Dank voor de uitgebreide uitleg.
@ Nick, bedankt voor de korte if - else structuur. Ik wist niet dat dat bestond.
@ Wouter, ik zal die functie gebruiken, met de verkorte if - else structuur.
@ Eddy, het is een tinyint van 2 karakters.
Ik heb eigenlijk ook nog een klein vraagje:
Ik heb eigenlijk meerdere query's op 1 pagina.
En daar doe ik dus telkens foutafhandeling, kijken of er resultaten zijn ...
Is het dan niet mogelijk om dit ook met een functie te doen?
Dan ik telkens de query meegeef met een parameter? Hem in de functie uitvoer ..
Alvast bedankt,
Diov