In een form blijven de gegevens staan na controle.
Dat lukt prima.
Mijn checkboxen en dropdown-list krijg ik niet terug gekoppeld.
Is meer of dit mogelijk is, dan dat ik het perse moet toepassen.
Bedankt vast voor het meedenken..
De gewone values krijg ik als volgt terug:

<input name="birth" type="text" class="field" value="<? echo $_POST['birth']; ?>" />


De code voor de checkboxen:

<input class="single-checkbox" type="checkbox" name="Werk[]" value="Zang">Zang
<input class="single-checkbox" type="checkbox" name="Werk[]" value="Geluid">Geluid


De code van het dropdown-menu (nog geen php beschikbaar):

<select name="country_code" />
    <option value="NL">NL</option>
    <option value="BE">BE</option>
    <option value="DU">DU</option>
    <option value="FR">FR</option>
    <option value="AU">AU</option>
    <option value="UK">UK</option>
    <option value="IT">IT</option>
    <option value="ES">ES</option>
    <option value="SE">SE</option>
    <option value="DK">DK</option>
    <option value="US">US</option>
    <option value="CA">CA</option>
  </select>

De PHP voor de checkboxen:

if (isset($_POST['Werk'])){
             foreach ($post['Werk'] as $value) {
                 echo $value;

             }            
         }
Je moet hiervoor controleren welke van de waardes de actieve is. Dit voeg je dan toe aan je html.


<?php

if($_POST['Werk'] == "Zang")
{
$checked_zang = "checked";
}

?>


Voeg $checked_zang toe aan de input.

Voor de option doe je eigenlijk een soortegelijk iets.
Wordt je option dynamisch opgebouwd? Zo nee, dan zou ik dit alsnog doen.


<?php

function landen_ophalen($geselecteerd_land)
{
for($index = 0; $index <=10; $index++)
{
$landen_ophalen .= "hier je option opbouwen";
}
}

?>

Het is $_POST['Werk'] i.p.v. $post['Werk']
Had ik inderdaad al gewijzigd Arien.
Het werkt nu...
Ik had net als bij de andere inputs de value veranderd...
Bedankt Peter voor het meedenken...
Moest natuurlijk zijn:

checked="<? echo $_POST['$checked_zang']; ?>"


Het werkt toch niet helemaal.
Want uiteraard vindt hij de values altijd.
Dus zijn alle checkboxen aangevinkt bij herstel.

ik zou wel <?php gebruiken i.p.v. de short-tag. Het wil wel eens gebeuren dat webhostings de short-tag uitzetten, met gevolg dat je source op straat ligt. En als je variabelen gebruikt, dan moet je geen quotes gebruiken, want variabelen horen buiten quotes.


 checked="<?php echo $_POST[$checked_zang]; ?>"


Maar volgens mij wil je juist het formulier-veld in de $_POST gebruiken.
Je voert hem net andersom uit zoals Arien aangeeft.


<?php

if($_POST['werk'] == "zang")
{
$checked_zang = "checked";
}

?>

<input type="checkbox" name="werk" value="zang" <?php echo $checked_zang; ?>">
<input type="checkbox" name="werk" value="xxx"> 


Dit moet werken normaal.
Of lekker in-line met de 'ternary' operator.....


<input type="checkbox" name="werk" value="zang" <?php echo ($_POST['werk'] == "zang" ? 'checked' : ''); ?>">
Ik krijg hem niet werkend nog.
Dit heb ik staan.
Ook al een " verwijderd. Want staat er volgens mij te veel.
Maar ook met " werkt het niet.

<input class="single-checkbox" type="checkbox" name="Werk[]" value="Zang" <?php echo $checked_zang; ?>">


if (isset($_POST['Werk'])){
             foreach ($_POST['Werk'] as $value) {
if($value == "Zang")
{
$checked_zang = "checked";
echo $value;
}
}
}


Waarom doe je onnodig moeilijk? En ik neem aan dat die PHP-code voor je HTML staat?
Pas het eens letterlijk aan naar wat ik hierboven heb gezegd... Dat moet werken.
Of gebruik de ternary-operator die compacter is. Bespaart meteen een hoop statements.

Reageren