Global variable $naam is used before it is defined.
Verder vergelijk je $naam met $row['namen'] wat dus bij elke naam niet zal kloppen omdat $naam $row['namen'] genoemd wordt en de nieuwe naam dus altijd anders is. Zo zou het moeten werken:
<?
$character = '';
$result = mysql_query("SELECT namen FROM tabel_namen ORDER BY namen ASC");
while ($row = mysql_fetch_object($result)) {
if (substr($row->namen, 0, 1) != $character) {
$character = strtoupper(substr($row->namen, 0, 1));
echo "<br>\n".$character."<br>\n";
}
echo $row->namen."<br>\n";
}
?>