Seleziona casella: come compilare anni php

Sto cercando di compilare una casella di selezione in php per anni in un field di compleanno. Una variabile $ anno viene impostata da una query e quell'anno particolare deve essere selezionato nella mia casella di selezione. Il codice finora è questo, si popola solo gli anni ma non seleziona l'anno che è archiviato in mysql db, qualcuno sa perché? Grazie

$year = $row['year']; // this comes from a query that is stored in the db <select name="year"><? for ($x = 1920; $x < date('Y'); $x++) { ?><option value=<? echo $x; if ($x == $year) {echo 'selected="selected"';}?>><? echo $x;?></option><? }?> </select> 

Prova questo:

 $year = (int)$row['year']; // this comes from a query that is stored in the db ?> <select name="year"><?php for ($x = 1920; $x < date('Y'); $x++) { ?><option value="<?php echo $x . '"'; if ($x == $year) { echo ' selected="selected"';}?>><?php echo $x; ?></option><? }?> </select> 

Il problema principale era che non hai chiuso il value con virgolette doppie, quindi è stato incluso 'selected="selected" . così hai ottenuto questo:

 <option value=1990selected="selected">1990</option> 

Inoltre, non hai chiuso il tag PHP prima di <select

Sembra che tu non abbia lasciato un vuoto tra il valore dei tag e l'etichetta selezionata. Prova a cambiare questo:

 <option value=<? echo $x; if ($x == $year) {echo 'selected="selected"';}?>><? echo $x;?></option> 

a:

 <option value="<? echo $x; ?>" <? if ($x == $year) {echo 'selected="selected"';}?>><? echo $x;?></option>