Keep radio buttons checked na submit

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Senior, Medior and Junior SAP HANA Developer

Vacature details Vakgebied: Software/IT Opleiding: Medior Werklocatie: Veldhoven Vacature ID: 12696 Introductie Our client is the world's leading provider of lithography systems for the semiconductor industry, manufacturing complex machines that are critical to the production of integrated circuits or chips. Our purpose is “unlocking the potential of people and society by pushing technology to new limits”. We do this guided by the principles “Challenge”, “Collaborate” and “Care”. Wat verwachten we van jou? SAP Certified Application Associate - SAP HANA Cloud Modeling (training and/or certification) Bachelor degree or higher Excellent understanding of SAP HANA (2.0 / Cloud), Data Modelling and writing

Bekijk vacature »

Johan Vels

Johan Vels

19/01/2015 10:50:11
Quote Anchor link
Hallo Allemaal!

Heb een formulier waarin een email en radio submit zit.
Nu zou ik willen dat zowel de email value als de geselecteerde radio button checked blijft na submit van de form.

Nu is dat voor email gelukt, maar hoe doe ik dit voor de radio buttons?

Huidige 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
23
24
25
26
27
28
29
<?php
// define variables with the value for each field
// the value from POST, if this exist, or an empty value

$email = isset($_POST['email']) ? $_POST['email'] : '';

$fhtml = '


<form id="contact-form" action="send.php" method="post">

       <label>
      <span>E-mailadres*</span>
      <input type="email" name="email" tabindex="14" id="email" value="'
. $email. '">
      <button type="submit" formaction="index.php#form-anchor">Check E-mailadres</button>
      <label>

       <label>
       <span>Tijd</span>
<input id="item5" value="1 jaar" type="radio" name="tijd">&nbsp;&nbsp;
<label for="item5">1 Jaar</label>&nbsp;&nbsp;&nbsp;&nbsp;
<input id="item6" value="3 jaar" type="radio" name="tijd">
<label for="item6">3 Jaar</label>                    
       </label>


    </form> '
;

       echo $fhtml; ?>

  
Gewijzigd op 19/01/2015 10:50:49 door Johan Vels
 
PHP hulp

PHP hulp

21/12/2024 06:18:32
 
Ward van der Put
Moderator

Ward van der Put

19/01/2015 10:55:24
Quote Anchor link
Daarvoor voeg je het attribuut checked toe.

<input id="item6" value="3 jaar" type="radio" name="tijd">

wordt:

<input checked id="item6" value="3 jaar" type="radio" name="tijd">
 
Johan Vels

Johan Vels

19/01/2015 11:21:46
Quote Anchor link
Hallo Wardt,

Dat is dus niet helemaal wat ik bedoel.

Wil graag dat de radio button die geselecteerd is (2 keuzes) VOOR de submit NA de submit checked blijft. Zoals dat nu ook bij $email gebeurd, deze blijft NA submit de ingevulde value behouden met isset($_POST['email']) ? $_POST['email'] : '';
 
Ward van der Put
Moderator

Ward van der Put

19/01/2015 11:34:08
Quote Anchor link
Dat werkt volgens hetzelfde principe: controleer via $_POST of de radio button checked moet zijn of niet.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php if (isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar') { ?>
  <input checked id="item6" value="3 jaar" type="radio" name="tijd">
<?php } else { ?>
  <input id="item6" value="3 jaar" type="radio" name="tijd">
<?php } ?>
 
Johan Vels

Johan Vels

19/01/2015 11:45:44
Quote Anchor link
Bedankt!

Maar hoe pas ik dat toe binnen de $fhtml = '';
 
Ward van der Put
Moderator

Ward van der Put

19/01/2015 11:50:24
Quote Anchor link
Je moet de ene string die $fhtml nu is in stukken knippen. Daar plak je dan met .= in PHP wat HTML in.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if (isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar') {
    $fhtml .= '<input checked id="item6" value="3 jaar" type="radio" name="tijd">';
}
else {
    $fhtml .= '<input id="item6" value="3 jaar" type="radio" name="tijd">';
}

?>

Of korter:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$fhtml
.= '<input ';
if (isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar') {
    $fhtml .= 'checked ';
}

$fhtml .= 'id="item6" value="3 jaar" type="radio" name="tijd">';
?>
 
Joakim Broden

Joakim Broden

19/01/2015 12:13:51
Quote Anchor link
Ward waarom dubbele code?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $html
= '<input id="item6" value="3 jaar" type="radio" name="tijd" '.(isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar' ? 'checked="checked"' : '').'>';
?>
Gewijzigd op 19/01/2015 12:14:14 door Joakim Broden
 
Johan Vels

Johan Vels

19/01/2015 12:14:15
Quote Anchor link
Top! super bedankt.
 
- wes  -

- wes -

19/01/2015 13:28:01
Quote Anchor link
Sabaton Joakim op 19/01/2015 12:13:51:
Ward waarom dubbele code?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $html
= '<input id="item6" value="3 jaar" type="radio" name="tijd" '.(isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar' ? 'checked="checked"' : '').'>';
?>



Prefereer toch de laatste optie van Ward. Beter leesbaar, beter uitbreidbaar, betere code.
 
Johan Vels

Johan Vels

19/01/2015 14:16:49
Quote Anchor link
Hmm, toch nog even een vraag.

Valt dit ook te combineren met dubbele checkboxes dus geschreven als checkbox[]
 
Joakim Broden

Joakim Broden

19/01/2015 14:43:29
Quote Anchor link
Natuurlijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
  $html
= '<input id="item6" value="3 jaar" type="checkbox" name="tijd[]" '.(isset($_POST['tijd']) && in_array('3 jaar', $_POST['tijd']) ? 'checked="checked"' : '').'>';
?>


Toevoeging op 19/01/2015 14:52:29:

Wes is back op 19/01/2015 13:28:01:
Prefereer toch de laatste optie van Ward. Beter leesbaar, beter uitbreidbaar, betere code.

Ieder zijn mending ik vind die code van Ward juist snert code.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$fhtml
.= '<input ';
if (isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar') {
    $fhtml .= 'checked ';
}

$fhtml .= 'id="item6" value="3 jaar" type="radio" name="tijd">';
?>

vind ik dus totaal niet leesbaar. Vooral als je heel veel HTML moet toevoegen aan $fhtml zoals de topic start wil. Met de code van Ward zal het een heel onoverzichtigelijke code worden.

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
<?php

$fhtml
= '<form id="contact-form" action="send.php" method="post">
    <label><span>E-mailadres*</span>
        <input type="email" name="email" tabindex="14" id="email" '
;
        
        if (isset($_POST['email'])) {
            $fhtml .= 'value="'.$_POST['email'].'" ';
        }

        
        $fhtml .= '<button type="submit" formaction="index.php#form-anchor">Check E-mailadres</button>
    <label>
    <label>
        <span>Tijd</span>
        <input id="item5" value="1 jaar" type="radio" name="tijd"'
;
        
        if (isset($_POST['tijd']) && $_POST['tijd'] == '1 jaar') {
            $fhtml .= 'checked="checked" ';
        }

        
        $fhtml .= ' >&nbsp;&nbsp;
        <label for="item5">1 Jaar</label>&nbsp;&nbsp;&nbsp;&nbsp;
        <input id="item6" value="3 jaar" type="radio" name="tijd"'
;
        
        if (isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar') {
            $fhtml .= 'checked="checked" ';
        }

        
        $fhtml .= '>
        <label for="item6">3 Jaar</label>                    
    </label>
</form> '
;

?>

Dit is toch niet leesbarder of makkelijker uibrader dan:
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
<?php

$fhtml
= '<form id="contact-form" action="send.php" method="post">
    <label><span>E-mailadres*</span>
        <input type="email" name="email" tabindex="14" id="email" value="'
.(isset($_POST['email']) ? $_POST['email'] : '').'" >
        <button type="submit" formaction="index.php#form-anchor">Check E-mailadres</button>
    <label>
    <label>
        <span>Tijd</span>
        <input id="item5" value="1 jaar" type="radio" name="tijd" '
.(isset($_POST['tijd']) && $_POST['tijd'] == '1 jaar' ? 'checked="checked"' : '').'>&nbsp;&nbsp;
        <label for="item5">1 Jaar</label>&nbsp;&nbsp;&nbsp;&nbsp;
        <input id="item6" value="3 jaar" type="radio" name="tijd" '
.(isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar' ? 'checked="checked"' : '').'>
        <label for="item6">3 Jaar</label>                    
    </label>
</form> '
;

?>
 
- SanThe -

- SanThe -

19/01/2015 15:13:44
Quote Anchor link
Ben het met je eens.
Maar dit is voor mij weer onleesbaar:

Sabaton Joakim op 19/01/2015 14:43:29:
Dit is toch niet leesbarder of makkelijker uibrader dan:

Vooral die uibrader???
Gewijzigd op 19/01/2015 15:15:05 door - SanThe -
 
Johan Vels

Johan Vels

19/01/2015 15:23:24
Quote Anchor link
Code werkt inmiddels zoals ik wil.
Bedankt Ward en Joakim :)
 



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.