<select><option>waarde in database

Status
Niet open voor verdere reacties.

Tommiiee

Gebruiker
Lid geworden
6 feb 2010
Berichten
93
Hoi,

Ik heb een form, waarvan ik de gegevens naar een database wil schrijven.
De tekstvakken lees ik zo uit (voorbeeld):

Code:
        <p>
            <label class="field" for="naam">Voornaam:</label>
            <input type="text" 
                id="voornaam" 
                name="voornaam" 
                value="<?php echo isset($_SESSION['input']['voornaam']) ? $_SESSION['input']['voornaam'] : ''; ?>"
                class="<?php echo (isset($_SESSION['errors']['voornaam']) && $_SESSION['errors']['voornaam'] == 'true') ? 'error' : ''; ?>"
            />
        </p>

Nu heb ik één van die tekstvakken vervangen voor een <select>-box met <option>'s..
Alleen, ik krijg die waarde van de geselecteerde option niet in mijn query..

Het ziet er zo uit:
Code:
        <p>
            <label class="field" for="onderwerp">Service:</label>
            <select 
                id="service" 
                name="service"
                class="<?php echo (isset($_SESSION['errors']['service']) && $_SESSION['errors']['service'] == 'true') ? 'error' : ''; ?>"/>
                <option value="<?php echo isset($_SESSION['input']['service']) ? $_SESSION['input']['service'] : ''; ?>">Anders</option>
                <option value="<?php echo isset($_SESSION['input']['service']) ? $_SESSION['input']['service'] : ''; ?>">Hardwarematig</option>
                <option value="<?php echo isset($_SESSION['input']['service']) ? $_SESSION['input']['service'] : ''; ?>">Softwarematig</option>
                <option value="<?php echo isset($_SESSION['input']['service']) ? $_SESSION['input']['service'] : ''; ?>">Opschonen / Traagheid</option>
                <option value="<?php echo isset($_SESSION['input']['service']) ? $_SESSION['input']['service'] : ''; ?>">Malware</option>
                <option value="<?php echo isset($_SESSION['input']['service']) ? $_SESSION['input']['service'] : ''; ?>">Onbekend (zie bericht)</option>
            </select>
        </p>

Bovenstaande code werkt dus niet.

Ik ben echt géén held op het gebied van PHP, dus waarschijnlijk maak ik echt een domme fout. Kunnen jullie mij helpen?

Tom ;)
 
Je zet in elk value veld van de SELECT dezelfde waarde... dus ze zijn allemaal leeg.

Als je de oude waarde wilt bewaren, moet je de selected property zetten:

HTML:
<select>
<option value="waarde1">Waarde 1</option>
<option value="waarde2">Waarde 2</option>
<option value="waarde3" selected="selected">Waarde 3</option>
<option value="waarde4">Waarde 4</option>
</select>

Nu zal Waarde 3 standaard gekozen worden, maar wat er in de database komt is afhankelijk van welk van de velden je selecteerd.
 
Maar hoe krijg ik dan 'service' terug voor in de array? Die array wordt uiteindelijk in een query omgezet..

Ik moet dus net als uit die textboxes bij die select option de value ophalen, en naar die array wegschrijven.. Hoe doe ik dat?
 
Zoals je het nu ook al doet. De inhoud van $_POST['service'] is gelijk aan de value van het element uit de lijst dat de gebruiker geselecteerd heeft.

Wat je moet doen om de juiste standaard te selecteren is elke value vergelijken met wat hij ingevuld heeft, en bij het juiste element de selected property zetten:

PHP:
echo '<select name="service">';
echo '<option value="waarde1" ';
if ( $_POST['service'] == "waarde1" ) {
echo 'selected="selected"';
}
echo '>Waarde1</option>';

echo '<option value="waarde2" ';
if ( $_POST['service'] == "waarde2" ) {
echo 'selected="selected"';
}
echo '>Waarde2</option>';
// etc.
echo '</select>';

Niet super netjes maar dit is het idee :)
 
Dat deed je al goed, namelijk door het name argument aan de select toe te voegen (en het later op te vragen met $_POST["service"]).

Wat Frats heeft proberen uit te leggen is dat je geen unieke waardes aan de options meegeeft - in jouw code bevatten ze óf allemaal dezelfde informatie of géén informatie. Het gaat er dus om dat je ervoor zorgt dat de value bij elke option anders is.
 
Laatst bewerkt:
Bedankt!

Er zat een klein foutje in (ik kreeg allemaal foutmeldingen).. zo niet meer:

PHP:
echo '<select name="service">';
echo '<option value="waarde1" ';
echo '>Waarde1</option>';
if ( $_POST['service'] == "waarde1" ) {
echo 'selected="selected"';
}
 
echo '<option value="waarde2" ';
echo '>Waarde2</option>';
if ( $_POST['service'] == "waarde2" ) {
echo 'selected="selected"';
}
// etc.
echo '</select>';

Nu krijg ik alleen allemaal errors bij het verzenden :(
Daar ga ik even achteraan..

Bedankt!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan