One of the possible ways.
Define an array $check[]. As you retrieve the values from the MySQL database,
list($option) = mysql_fetch_row($result) or something
put $check[$option] = 'selected'.
In the list put
$temp = $check[$option];
echo("<option $temp>$option</option>\n");
So effectively for all values that were in the database, a selected will come.
As for the others part, I am still a bit unclear. Do you want the text box to appear/not appear when data is edited or are you talking of the text sent on the form submission
As regards verifying whether fields are filled or not, just check if the particular field has been filled or not.
For the form fields you can do something like
<input type="text" name="text1" width="25" value="<?echo($text1)?>">
If some field is not filled, include the form again in your script. So the same form will be shown with all the other info filled and a message that some fields are not filled.
If you are still uncertain about this, email me.
Nilesh