Input Type Radio Korter

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

 - Diov  -

- Diov -

12/07/2013 21:58:58
Quote Anchor link
Hoi,

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

            ?>
 
PHP hulp

PHP hulp

25/04/2024 19:16:55
 
Nick Dijkstra

Nick Dijkstra

12/07/2013 23:10:20
Quote Anchor link
Zoiets wordt het dan denk ik.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
echo '<td><input type="radio" name="trainer" value="1"' . ($row_get_lid['trainer'] == 1 ? ' checked' : '') . '> Ja';
echo '<input type="radio" name="trainer" value="0"' . ($row_get_lid['trainer'] == 0 ? ' checked' : '') . '> Nee</td>';
?>
 
Wouter J

Wouter J

12/07/2013 23:33:44
Quote Anchor link
Tijd voor een lesje code korter maken!

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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
function displayYesNoChecks($fieldName, $dbValue)
{

    echo '<td><input type="radio" name="'.$fieldName.'" value="1"' . ($dbValue == 1 ? ' checked' : '') . '> Ja';
    echo '<input type="radio" name="'.$fieldName.'" value="0"' . ($dbValue == 0 ? ' checked' : '') . '> Nee</td>';
}

?>
 
Eddy E

Eddy E

13/07/2013 09:08:29
Quote Anchor link
Daarnaast zeg je dat je dit opslaat met een '1' of een '0'.
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.
 
 - Diov  -

- Diov -

13/07/2013 11:51:32
Quote Anchor link
Hoi :)
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
 



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.