key toevoegen aan combobox

Status
Niet open voor verdere reacties.

weswillem

Gebruiker
Lid geworden
8 nov 2011
Berichten
310
Mijn zoekopdracht op het www gaat niet zo goed. Kan het item niet zo goed vinden.
Bij deze plaats ik de vraag hier.
Wil bij de array in de combobox een key toevoegen omdat ik die key later nodig heb
om een andere box te vullen naar gelang de keuze die is gemaakt.
Ook na de knop -Bevestig- gedruk te hebben blijft de gekozen data niet staan, maar ga terug naar het laatste item van de array

Code:
<?php
$selected = (isset($_POST['afspraak']));
$Afspraken = array('Kies een datum','Woensdag 16 november', 'Woensdag 23 november', 'Woensdag 27 november', 'Zaterdag 3 december','Zondag 4 december','Maandag 5 december');
?>
<form method="post" action="">
    <select name="afspraak">
    <?php
    foreach ($Afspraken as $Afspraak) {
        if($selected == $Afspraak) {
            echo "<option selected='selected' value='$Afspraak'>$Afspraak</option>";
        }
        else {
            echo "<option value='$Afspraak'>$Afspraak</option>";
        }
    }
    ?>
    </select>
    <input type="submit" value="Bevestig">
</form>

Code:
 if ($_SERVER['REQUEST_METHOD']==="POST") {
    if (isset($_POST['afspraak'])) {
        if (in_array($_POST['afspraak'],$Afspraken)) {
            echo "Uw geselecteerde datum is ".$_POST['afspraak']."!";
            exit;
        }
    }
}
 
Laatst bewerkt door een moderator:
Deze regel vergelijkt verschillende types
Code:
if($selected == $Afspraak)

$selected is boolean; $Afspraak is string
 
@Bron
Dank voor je reactie.
heb het nu gezien. Blijkt weer een klein dingetje te zijn
Heb isset weggehaald bij $selected.
Ben nog aan het zoeken om een key toe te voegen.
 
isset() is best-practice. Iets als dit
Code:
// bestaat name="afspraak"
$selected = (isset($_POST['afspraak']));
// ja : $selOption is string $_POST['afspraak']
// nee: $selOption is string '' (lege string)
$selOption = ($selected) ? $_POST['afspraak'] : '';

Daarna kan je wel 2 strings vergelijken
Code:
if ($selOption == $Afspraak) {
 
thanx @bron

Is wel iets mooier en wat bij geleerd.

ben nu even aan het stoeien met die foreach key met deze code.
Code:
<?php
$Afspraken=array('Kies een datum'=>1,'Woensdag 16 november'=>2, 'Woensdag 23 november'=>3, 'Woensdag 27 november'=>4, 'Zaterdag 3 december'=>5,'Zondag 4 december'=>6,'Maandag 5 december'=>7);
$arrayLength = count($Afspraken);
//echo $selOption;
?>
<form method="post" action="">
    <select name="afspraak">
    <?php
    foreach ($Afspraken as $val => $key) {
        if($selOption == $val) {
            echo "<option selected='selected' value='$val'>$val</option>";
        } else {
            echo "<option value='$val'>$val</option>";
        }
    }
    ?>
    </select>
    <input type="submit" value="Bevestig">
</form>
heb in ieder geval een key toegevoegd.
Nu even het onderstaande aan de praat krijgen.
Ik wil weten wat de key is van het geselecteerde item en de tekst.
Code:
if ($_SERVER['REQUEST_METHOD']==="POST") {
    if (isset($_POST['afspraak'])) {
        if (in_array($_POST['afspraak'],$selOption)) {
            echo "Uw geselecteerde datum is ".$_POST['afspraak']."!";
            exit;
        }
    }
 
Laatst bewerkt door een moderator:
De array van bericht #1 is hetzelfde als dit.
- op deze manier een array noteren is vriendelijker ;)
- omdat hieronder hetzelfde is als in berichtje 1 is dit een beetje overkill.
- een array begint te tellen bij 0 en als je count() gebruikt krijg je 7 (dat klopt)
Code:
array(
  0 => 'Kies een datum',
  1 => 'Woensdag 16 november',
  2 => 'Woensdag 23 november',
  3 => 'Woensdag 27 november',
  4 => 'Zaterdag 3 december',
  5 => 'Zondag 4 december',
  6 => 'Maandag 5 december'
);

De foreach loop ziet er zo uit
$key loopt van 0 t/m 6 en $val is de waarde uit het array.
Code:
foreach ($Afspraken as $key => $val) {
  // ...
}


Maar dit kan ook
Code:
array(
  'geen ' => 'Kies een datum',
  'nov16' => 'Woensdag 16 november',
  'nov23' => 'Woensdag 23 november',
  'nov27' => 'Woensdag 27 november',
  'dec03' => 'Zaterdag 3 december',
  'dec04' => 'Zondag 4 december',
  'dec05' => 'Maandag 5 december'
);

De foreach loop ziet er hetzelfde uit maar nu
is $key een tekst die begint bij 'geen' en eindigt bij 'dec05'
Code:
foreach ($Afspraken as $key => $val) {
    if($selOption == $key) {
        echo "<option selected='selected' value='" . $key . "'>" . $val . "</option>";
    } else {
        echo "<option value='" . $key . "'>" . $val . "</option>";
    }
}
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan