Once you've queried the MySQL DB, and got the current values of D1, D2, D3 loaded into variables, try this:
Well first of all, if you want to dynamically create the page, you can do this:
<form method="POST" action="">
<p><select size="1" name="D1">
<?PHP
for($i = 01; $i <= 31; $i = sprintf('%02s', $i+1)) echo ' <option value="'.$i.'">'.intval($i)."</option>\n";
?>
</select>
<select size="1" name="D2">
<?PHP
for($i = 01; $i <= 12; $i = sprintf('%02s', $i+1)) echo ' <option value="'.$i.'">'.date('M', mktime(0, 0, 0, $i))."</option>\n";
?>
</select>
<select size="1" name="D3">
<?PHP
for($i = date("Y"); $i < date("Y")+2; $i++) echo ' <option value="'.$i.'">'.$i."</option>\n";
?>
</select></p>
</form>
To edit a date, retrieve the 3 values from MySQL and store them in $d1, $d2, and $d3. Then, you can do something like:
<form method="POST" action="">
<p><select size="1" name="D1">
<?PHP
for($i = 01; $i <= 31; $i = sprintf('%02s', $i+1)) echo ' <option value="'.$i.'"'.(($i == $d1) ? ' selected' : '').'>'.intval($i)."</option>\n";
?>
</select>
<select size="1" name="D2">
<?PHP
for($i = 01; $i <= 12; $i = sprintf('%02s', $i+1)) echo ' <option value="'.$i.'"'.(($i == $d2) ? ' selected' : '').'>'.date('M', mktime(0, 0, 0, $i))."</option>\n";
?>
</select>
<select size="1" name="D3">
<?PHP
for($i = date("Y"); $i < date("Y")+2; $i++) echo ' <option value="'.$i.'"'.(($i == $d3) ? ' selected' : '').'>'.$i."</option>\n";
?>
</select></p>
</form>
NOTE: You should make sure dates that people submit when adding/editing are valid. Do so by adding code like this:
if(checkdate($d2, $d1, $d3) === FALSE) {
echo 'Invalid date!';
// what to do if date is invalid (reprint form, etc)
exit;
}