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:

<?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; ?>
   
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">
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'] : '';
Dat werkt volgens hetzelfde principe: controleer via $_POST of de radio button checked moet zijn of niet.


<?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 } ?>
Bedankt!

Maar hoe pas ik dat toe binnen de $fhtml = '';
Je moet de ene string die $fhtml nu is in stukken knippen. Daar plak je dan met .= in PHP wat HTML in.

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

<?php
$fhtml .= '<input ';
if (isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar') {
    $fhtml .= 'checked ';
}
$fhtml .= 'id="item6" value="3 jaar" type="radio" name="tijd">';
?>

Ward waarom dubbele code?

<?php
  $html = '<input id="item6" value="3 jaar" type="radio" name="tijd" '.(isset($_POST['tijd']) && $_POST['tijd'] == '3 jaar' ? 'checked="checked"' : '').'>';
?>
Top! super bedankt.
Sabaton Joakim op 19/01/2015 12:13:51

Ward waarom dubbele code?

<?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.
Hmm, toch nog even een vraag.

Valt dit ook te combineren met dubbele checkboxes dus geschreven als checkbox[]
Natuurlijk:

<?php
  $html = '<input id="item6" value="3 jaar" type="checkbox" name="tijd[]" '.(isset($_POST['tijd']) && in_array('3 jaar', $_POST['tijd']) ? 'checked="checked"' : '').'>';
?>


[size=xsmall]Toevoeging op 19/01/2015 14:52:29:[/size]

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.

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


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

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

?>

Reageren