Fijate que estas usando $row y no $value, por eso siempre muestra el primer item. Te lo paso corregido:
Código PHP:
$query = 'SELECT nombreprod, idprod FROM productos ORDER BY nombreprod';
$result = mysql_query ($query, $db) or die (mysql_error($db));
while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $value) {
echo '<option value="'.$value['idprod'].'">'.$value['nombreprod'].'</option>';
}
}