Me sumo a petit.
Ese while esta de sobra para obtener los datos del usuario. basta con el fetch y listo.
Estimado no uses extract con get post y files, no te lo voy a explicar aqui en los detalles del porque no, pero ve la documentacion de
extract php (disculpen el enlace a 3eros pero es php.net, no veo el problema)
Lo otro en
"UPDATE usuarios SET nombre='$nombre', apellidos='$apellidos', correo='$email', usuario='$user', clave='$pass', telefono='$telefono' WHERE id='$id'";
Y en
"SELECT * FROM usuarios WHERE useradmin='$user'"
Son variables dadas por el usuario si no escapas las variables pueden hacer injection y adios tabla....
2. El usuario no debería poder cambiar su nombre de usuario, es totalmente ilógico
$sentencia="UPDATE usuarios SET nombre='$nombre', apellidos='$apellidos', correo='$email',
usuario='$user', clave='$pass', telefono='$telefono' WHERE id='$id'";
Si el usuario es pedro y en el post pone pablo, adios usuario, y por otro lado en una tabla de usuarios, el nombre de usuario deberia ser unico, a que voy una persona puede crear muchos usuarios y hacer lo anterior, entonces podrias tener muchos usuarios "pablo" en tu tabla
Ahora viendo tu código no veo error, lo unico que estaría mal es lo que dijo petit $id = ['id'];
Saludos