Lieber matuoso,
entweder Du lässt HTML Tidy drüberlaufen (sofern verfügbar), oder Du musst - wie dedlfix schon anmerkte - die Steuerzeichen selbst in Deine Strings einfügen.
Bsp:
echo '<option selected="selected">'.$row["direction"].'</option>';
Gegen-Beispiel:
printf(  
    "\t<option selected=\"selected\">%s</option>\r\n",  
    htmlspecialchars($row['direction'])  
);
Vergiss nicht die kontext-gerechte Kodierung! Die DB-Inhalte sind sicherlich "reine" Daten, die nicht als "HTML-freundliche" Strings (mit passenden Steuerzeichen-Maskierungen) gespeichert wurden, oder?
Liebe Grüße,
Felix Riesterer.
-- 
ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
  ie:% br:> fl:| va:) ls:[ fo:) rl:| n4:? de:> ss:| ch:? js:) mo:} zu:)
 nicht angemeldet
 nicht angemeldet Matthias Apsel
 Matthias Apsel