Alors pour les performance, afficher un code en html en dur, sera toujours plus performant que générer ce même code avec du php (une étape en moins), mais aussi beaucoup plus contraignant, parce que pour pouvoir le modifier ou le faire évoluer, il faut avoir accès au serveur et connaître un peu le code.
Mais je suis d'accord avec toi or1, la liste des pays évolue assez peu et pourrait être en dur. Avantage de les avoir en base, c'est que le filtre peut ne proposer que les pays pour lesquels il y a un résultat (et ainsi avoir une liste de pays dynamique quand même

)
@jeremygoldyn : je t'avoue que je suis un perdu avec les copies d'écran de tes tables, j'ai l'impression qu'il te manque quelques éléments.
Dans ta table lieux, la colonne pays devrait être remplacée par une colonne pays_id qui serait de type int. Celle-ci indiquer l'identifiant du pays que l'on va retrouver dans la table pays.
Dans ta table pays, tu aurais alors une colonne pays_id (même nom et même type que dans l'autre table, elle contient le même type d'information) et "nom" contiendra le libellé du pays.
Au niveau de la jointure tu aurais alors une requête de ce type :
SELECT lieux.lieu_id, lieux.nom, lieux.pays_id, pays.pays_id, pays.nom FROM lieux LEFT JOIN pays ON lieux.pays_id = pays.pays_id
Ou plus simplement / proprement :
SELECT l.lieu_id, l.nom, l.pays_id, p.pays_id, p.nom FROM lieux l LEFT JOIN pays p ON l.pays_id = p.pays_id
- Concrètement, on va chercher dans la table "lieux" (à laquelle on donne un alias L pour simplifier l'écriture) les champs "lieu_id", "nom" (du lieu) et "pays_id" et dans la table "pays" (alias p), le "pays_id" et "nom" (du pays).
- Dans la mesure où des champs ont le même nom dans différentes tables, il est important de toujours préfixer celui-ci par le nom de la table (ou l'alias) sinon MySQL ne saura pas auquel tu fais référence et te diras que tu as un nom de colonne ambiguë dans ta requête.
- Le fait de préciser la condition de jointure, permet d'associer le bon pays à chaque lieu (on ne retourne que les lieux et les pays pour lesquels pays_id est identique)
Au niveau de la requête, vu que le pays_id doit être identique, il est inutile de le récupérer deux fois. Il est également préférable de donner des alias différents aux colonnes qui ont le même nom histoire de s'y retrouver :
SELECT l.lieu_id, l.nom AS nom_lieu, l.pays_id, p.nom AS nom_pays FROM lieux l LEFT JOIN pays p ON l.pays_id = p.pays_id