Pero .. cual es el objetivo de lo que quieres hacer?
Sabes lo que hace realmente (lo puedes ver viendo el código fuente de tu página HTML generada en tu navegador ->ver código fuente) esta línea:
echo ("<option value=\"$datos[dni]\">$datos[nombre] $datos[apellidos]</option>");
eso va a generar algo tipo:
<option value="129209390-4">Fulano Sotano Mengano</option>
Ya te comenté (de HTML) que un "<select>" de HTML el dato que "viaja" a tu SCRIPT! PHP es el "option" seleccionado .. concretamente el "value" que este tenga y bajo la variable de nombre que defines en el <select name="loquesea">
Si dices <select name=\"emple\">??????
entonces en $_POST['emple'] tendrías tu "DNI" seleccionado de ese "empleado" para que lo uses en:
Código PHP:
<?php.....codigo
if (isset($_POST['enviar_persona'])){
$consulta=("SELECT f.nombre FROM funciones f, persofun pf
WHERE pf.dni='".$_POST['emple']."' and f.codFuncion=pf.codFuncion");
$resultado=mysql_query($consulta);
if (mysql_num_rows($resultado) ==1){
$nombre=mysql_result($resultado,'nombre');
echo "EMPLEADO: ".$nombre;
} else {
echo "Error: no se indicó empleado o no existe";
}
?>
Fijate que añadí algunas cosas .. Por ejemplo . .tu consulta SQL se espera 1 o 0 registros (como resultado) según se encuentre ese registro (teóricamente tienes DNI's de empleados iguales? .. no creo?). El caso es que debes validar si existe o no resultados .. para mostrar un error en consecuencia. También fijate que si sólo obtienes un campo .. con la función mysql_result() se puede obtener dicho campo sin bucle ni nada más (ahorrando recursos) ya que se supone que vas a obtener un máximo de 1 registros.
Un saludo,