Hola maribajar
La base la tenés correcta, aunque yo simplificaría el código si fuera vos:
Arriba del todo, antes del HTML, hacés el while:
Código PHP:
$lista_provincias = '';
while($row = mysql_fetch_array($nombre_provincia))
$lista_provincias .= '<option value="">'.$row['provincia']."</option>\n";
y luego, el HTML lo dejás como
Código:
<form method="post" action="<?PHP echo $PHP_SELF ?>" >
<select name="provincia" size="1">
<option value="elegir_provincia">-Elija provincia </option>
<?php echo $lista_provincias; ?>
</select>
En cualquier caso, el problema es que no estás especificando un valor correcto para el atributo
value de cada opción, que es lo que se enviará con el formulario.
Si acaso tenés un campo ID para cada provincia, lo ideal es que uses ese campo como valor del
option. Si no lo tenés, perfectamente podés usar el nombre mismo, pero tendrías que tener cuidado de que ningún nombre tenga comillas dobles.
En cuanto a la otra opción, la manera más sencilla es usar una función colocada con el evento "onchange" del
select. Seguramente en la lista de Preguntas frecuentes del foro de
Javascript ya se haya explicado un procedimiento similar.
Saludos.