select box met selected waarde uit de database

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Donald Boers

Donald Boers

09/10/2015 08:48:54
Quote Anchor link
Ik loop nu al een uur te darren met iets dat toch heel simpel zou moeten zijn. Ik heb een select box met jaren. Op de update pagina dient echter het jaar geselecteerd te zijn die in de database staat, maar ik krijg het niet voor elkaar. Dit is wat ik heb:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$huidigJaar = date("Y");
$startJaar  = date("Y") - 40;
$jaren      = range ($huidigJaar, $startJaar);


en in de select box

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php foreach ($jaren as $bouwjaar): ?>
  <option value="<?php echo $bouwjaar; if ($product_info['bouwjaar'] == $bouwjaar ) echo 'selected="selected"'; ?>" ><?php echo $bouwjaar; ?></option>
<?php endforeach; ?>


Ik krijg de lijst met jaren maar de database waarde is niet geselecteerd. Wat doe ik fout?

Alvast bedankt
 
PHP hulp

PHP hulp

19/04/2024 19:02:13
 
Bo Ter Ham

Bo Ter Ham

09/10/2015 09:19:57
Quote Anchor link
Je sluit het value attribuut niet af voordat je selected="selected" aan het option element toevoegd, er staat dus value="1980selected="selected"" ipv value="1980" selected="selected"
 
Thomas van den Heuvel

Thomas van den Heuvel

09/10/2015 13:17:01
Quote Anchor link
Maak hier een apart brokje HTML van die je in een PHP-variabele stopt om e.e.a. wat beter leesbaar te houden:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
foreach ($jaren as $bouwjaar) {
    $selected = ($product_info['bouwjaar'] == $bouwjaar ? ' selected="selected"' : '');
    ?>
<option value="<?php echo $bouwjaar ?>"<?php echo $selected ?>><?php echo $bouwjaar ?></option><?php
}
?>

(let ook op de spatie voor ' selected=...')
 
Eddy E

Eddy E

09/10/2015 21:40:53
Quote Anchor link
Waarom een "value" opgeven als je in de <option> exact hetzelfde is?
Volgens de specificatie van HTML 4.1 (en die is al een tijdje uit) is een value niet nodig. Als hij niet gegeven wordt, wordt de waarde van tussen <option> en </option> zelf gepakt.
Dus je code wordt dan nog leesbaarder.
 
Thomas van den Heuvel

Thomas van den Heuvel

09/10/2015 22:19:29
Quote Anchor link
Quote:
Waarom een "value" opgeven als je in de <option> exact hetzelfde is?

Uniformiteit omdat dit niet altijd het geval is?

Ik genereer dropdowns vaak a.d.h.v. arrays of equivalent (een lijst van key-value paren, de key voor het value-attribuut en de value voor het label).

Als iets niet hoeft wil dat niet zeggen dat het niet mag :p.

Indien je dan toch voor een van de twee varianten zou moeten kiezen (1 vorm lijkt mij handiger) zou ik de variant met value-attribuut kiezen.
 
Donald Boers

Donald Boers

10/10/2015 09:30:52
Quote Anchor link
Hi Bo, Thomas en Eddy. Bedankt voor de reacties en input. Ik heb dit nu werkend maar loop dus tegen een volgend select box probleem aan. Bij de bovenstaande select box waren de value en de optie het zelfde. Ik heb nu echter een select box waar de value een id is en de optie text. Ik heb het volgende geprobeerd:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php foreach ( $categories as $key => $value ):
  $key = $key + 1;?>

<option value="<?php echo $key; ?>" <?php if ($key == $value['categorie_id']) echo 'selected="selected"'; ?>><?php echo $value['categorie_naam']; ?></option>  
<?php endforeach; ?>


Maar met deze wijze staan alle opties als selected weergegeven. Wat is hier fout aan?

Bij voorbaat dank
 
Bo Ter Ham

Bo Ter Ham

10/10/2015 11:42:24
Quote Anchor link
Wat je nu doet is een beetje raar, je vergelijkt de key (die variabel is) met een value (die ook variabel is) het is dan natuurlijk zeker mogelijk dat er meerdere options geselecteerd worden. In de code van het eerste probleem had je een vaste waarde ($product_info['bouwjaar']) die maar één waarde kan zijn, maar $value['categorie_id'] heeft verschillende waardes deze variabele komt immers uit een loop.
 
Donald Boers

Donald Boers

10/10/2015 11:49:41
Quote Anchor link
Hi Bo bedankt voor je reactie. Ik heb in de database een veld categorie_id. In de update pagina dient die dus geselecteerd te zijn. Maar ik dien tevens de mogelijkheid te hebben die waarde te kunnen veranderen vandaar dat ik die loop gebruik. Hoe zou ik dat anders moeten aanpakken.

Bij voorbaat dank
 
Bo Ter Ham

Bo Ter Ham

10/10/2015 13:50:03
Quote Anchor link
Je kunt de geselecteerde waarde niet uit dezelfde query halen als de query waarmee je alle categorieën ophaalt. Je zult dus een aparte query moeten maken waarmee je de huidige categorie selecteert.
 
Thomas van den Heuvel

Thomas van den Heuvel

10/10/2015 14:55:04
Quote Anchor link
Daarnaast is het ongebruikelijk (en misschien levert dit fouten op) dat je de index waarmee je $categories doorloopt ($key) binnen deze loop ophoogt.

Ik zou er voor zorgen dat de informatie die je wilt afdrukken / selecteren in eerste instantie goed in $categories zit, in plaats van het op het laatste moment wijzigen van de betrokken waarden...
 



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.