PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 24-06-2012 11:49:09

tocata62
Membre
Inscription : 22-02-2011
Messages : 6

mettre une liste de pays dans un combo de selection

Bonjour, j'ai un soucis. J'ai une liste de pays avec leur dominutuf contenu dans une liste aray. Et je voudrait mettre dans un combo ( select ) dans un formulaire, ces pays et diminutifs de cette manière

<select name="pays" id="pays" size="30">
<option value="le diminutif">Le nom complet du pays</option>
</select>

il y'a 248 pays, je dois donc utiliser une boucle, mais je ne sais pas comment faire pour lire un array et y recuperer ce que j'ai besoin.

Merci de votre aide

<?
$flags = array(
  "ac" => "Ascension (île)",
  "ad" => "Andorre",
  "ae" => "Emirats Arabes Unis",
  "af" => "Afghanistan",
  "ag" => "Antigua et Barbuda",
  "ai" => "Anguilla",
  "al" => "Albanie",
  "am" => "Arménie",
  "an" => "Antilles Neerlandaises",
  "ao" => "Angola",
  "aq" => "Antarctique",
  "ar" => "Argentine",
  "as" => "American Samoa",
  "at" => "Autriche",
  "au" => "Australie",
  "aw" => "Aruba",
  "az" => "Azerbaidjan",
  "ba" => "Bosnie Herzégovine",
  "bb" => "Barbade",
  "bd" => "Bangladesh",
  "be" => "Belgique",
  "bf" => "Burkina Faso",
  "bg" => "Bulgarie",
  "bh" => "Bahrein",
  "bi" => "Burundi",
  "bj" => "Bénin",
  "bm" => "Bermudes",
  "bn" => "Brunei",
  "bo" => "Bolivie",
  "br" => "Brésil",
  "bs" => "Bahamas",
  "bt" => "Bhoutan",
  "bv" => "Bouvet (île)",
  "bw" => "Botswana",
  "by" => "Biélorussie",
  "bz" => "Bélize",
  "ca" => "Canada",
  "cc" => "Cocos (Keeling) îles",
  "cd" => "Rép. du Congo",
  "cf" => "Rép Centrafricaine",
  "ch" => "Suisse",
  "ci" => "Côte d'Ivoire",
  "ck" => "Cook (îles)",
  "cl" => "Chili",
  "cm" => "Cameroun",
  "cn" => "Chine",
  "co" => "Colombie",
  "cr" => "Costa Rica",
  "cs" => "Serbie Montenegro",
  "cu" => "Cuba",
  "cv" => "Cap Vert",
  "cx" => "Christmas (île)",
  "cy" => "Chypre",
  "cz" => "Tchéquie",
  "de" => "Allemagne",
  "dj" => "Djibouti",
  "dk" => "Danemark",
  "dm" => "Dominique",
  "do" => "Rép Dominicaine",
  "dz" => "Algérie",
  "ec" => "Equateur",
  "ee" => "Estonie",
  "eg" => "Egypte",
  "eh" => "Sahara Occidental",
  "er" => "Erythrée",
  "es" => "Espagne",
  "et" => "Ethiopie",
  "fi" => "Finlande",
  "fj" => "Fidji",
  "fk" => "Falkland (Malouines) îles",
  "fm" => "Micronésie",
  "fo" => "Faroe (îles)",
  "fr" => "France",
  "ga" => "Gabon",
  "gd" => "Grenade",
  "ge" => "Géorgie",
  "gf" => "Guyane Française",
  "gg" => "Guernsey",
  "gh" => "Ghana",
  "gi" => "Gibraltar",
  "gl" => "Groenland",
  "gm" => "Gambie",
  "gn" => "Guinée",
  "gp" => "Guadeloupe",
  "gq" => "Guinée Equatoriale",
  "gr" => "Grèce",
  "gs" => "Géorgie du sud",
  "gt" => "Guatemala",
  "gu" => "Guam",
  "gw" => "Guinée-Bissau",
  "gy" => "Guyana",
  "hk" => "Hong Kong",
  "hm" => "Heard et McDonald (îles)",
  "hn" => "Honduras",
  "hr" => "Croatie",
  "ht" => "Haiti",
  "hu" => "Hongrie",
  "id" => "Indonésie",
  "ie" => "Irlande",
  "il" => "Israël",
  "im" => "Ile de Man",
  "in" => "Inde",
  "io" => "Ter. Brit. Océan Indien",
  "iq" => "Iraq",
  "ir" => "Iran",
  "is" => "Islande",
  "it" => "Italie",
  "je" => "Jersey",
  "jm" => "Jamaïque",
  "jo" => "Jordanie",
  "jp" => "Japon",
  "ke" => "Kenya",
  "kg" => "Kirghizistan",
  "kh" => "Cambodge",
  "ki" => "Kiribati",
  "km" => "Comores",
  "kn" => "Saint Kitts et Nevis",
  "kp" => "Corée du nord",
  "kr" => "Corée du sud",
  "kw" => "Koweït",
  "ky" => "Caïmanes (îles)",
  "kz" => "Kazakhstan",
  "la" => "Laos",
  "lb" => "Liban",
  "lc" => "Sainte Lucie",
  "li" => "Liechtenstein",
  "lk" => "Sri Lanka",
  "lr" => "Liberia",
  "ls" => "Lesotho",
  "lt" => "Lituanie",
  "lu" => "Luxembourg",
  "lv" => "Lettonie",
  "ly" => "Libye",
  "ma" => "Maroc",
  "mc" => "Monaco",
  "md" => "Moldavie",
  "mg" => "Madagascar",
  "mh" => "Marshall (îles)",
  "mk" => "Macédoine",
  "ml" => "Mali",
  "mm" => "Myanmar",
  "mn" => "Mongolie",
  "mo" => "Macao",
  "mp" => "Mariannes du nord (îles)",
  "mq" => "Martinique",
  "mr" => "Mauritanie",
  "ms" => "Montserrat",
  "mt" => "Malte",
  "mu" => "Maurice (île)",
  "mv" => "Maldives",
  "mw" => "Malawi",
  "mx" => "Mexique",
  "my" => "Malaisie",
  "mz" => "Mozambique",
  "na" => "Namibie",
  "nc" => "Nouvelle Calédonie",
  "ne" => "Niger",
  "nf" => "Norfolk (île)",
  "ng" => "Nigéria",
  "ni" => "Nicaragua",
  "nl" => "Pays Bas",
  "no" => "Norvège",
  "np" => "Népal",
  "nr" => "Nauru",
  "nu" => "Niue",
  "nz" => "Nouvelle Zélande",
  "om" => "Oman",
  "pa" => "Panama",
  "pe" => "Pérou",
  "pf" => "Polynésie Française",
  "pg" => "Papouasie Nvelle Guinée",
  "ph" => "Philippines",
  "pk" => "Pakistan",
  "pl" => "Pologne",
  "pm" => "St. Pierre et Miquelon",
  "pn" => "Pitcairn (île)",
  "pr" => "Porto Rico",
  "pt" => "Portugal",
  "pw" => "Palau",
  "py" => "Paraguay",
  "qa" => "Qatar",
  "re" => "Réunion (île de la)",
  "ro" => "Roumanie",
  "ru" => "Russie",
  "rw" => "Rwanda",
  "sa" => "Arabie Saoudite",
  "sb" => "Salomon (îles)",
  "sc" => "Seychelles",
  "sd" => "Soudan",
  "se" => "Suède",
  "sg" => "Singapour",
  "sh" => "St. Hélène",
  "si" => "Slovénie",
  "sj" => "Svalbard/Jan Mayen (îles)",
  "sk" => "Slovaquie",
  "sl" => "Sierra Leone",
  "sm" => "Saint-Marin",
  "sn" => "Sénégal",
  "so" => "Somalie",
  "sr" => "Suriname",
  "st" => "Sao Tome et Principe",
  "su" => "Ex U.R.S.S.",
  "sv" => "Salvador",
  "sy" => "Syrie",
  "sz" => "Swaziland",
  "tc" => "Turks et Caïques (îles)",
  "td" => "Tchad",
  "tf" => "Territoires Fr du sud",
  "tg" => "Togo",
  "th" => "Thailande",
  "tj" => "Tadjikistan",
  "tk" => "Tokelau",
  "tm" => "Turkménistan",
  "tn" => "Tunisie",
  "to" => "Tonga",
  "tp" => "Timor Oriental",
  "tr" => "Turquie",
  "tt" => "Trinité et Tobago",
  "tv" => "Tuvalu",
  "tw" => "Taiwan",
  "tz" => "Tanzanie",
  "ua" => "Ukraine",
  "ug" => "Ouganda",
  "uk" => "Royaume Uni",
  "gb" => "Grande Bretagne",
  "um" => "US Minor Outlying (îles)",
  "us" => "Etats-Unis",
  "uy" => "Uruguay",
  "uz" => "Ouzbékistan",
  "va" => "Vatican",
  "vc" => "St Vincent et les Grenadines",
  "ve" => "Venezuela",
  "vg" => "Vierges Brit. (îles)",
  "vi" => "Vierges USA (îles)",
  "vn" => "Viêt Nam",
  "vu" => "Vanuatu",
  "wf" => "Wallis et Futuna (îles)",
  "ws" => "Western Samoa",
  "ye" => "Yemen",
  "yt" => "Mayotte",
  "yu" => "Yugoslavie",
  "za" => "Afrique du Sud",
  "zm" => "Zambie",
  "zr" => "Rép. Dém. du Congo (ex Zaïre)",
  "zw" => "Zimbabwe",
  "tv" => "Tuvalu",
  "ws" => "Western Samoa",
  "sw" => "Serbie",
);

Dernière modification par tocata62 (24-06-2012 12:55:51)

Hors ligne

#2 24-06-2012 12:57:24

tocata62
Membre
Inscription : 22-02-2011
Messages : 6

Re : mettre une liste de pays dans un combo de selection

si je fais

foreach($flags as $key => $valeur);
{
echo $valeur
}

je ne récupère que le nom complet des pays et pas le diminutif. Je pensais qu'ils seraient dans $key, mais non, j'ai juste le numero d'index ( qui ne m'intéresse pas )

Hors ligne

#3 24-06-2012 13:12:48

tocata62
Membre
Inscription : 22-02-2011
Messages : 6

Re : mettre une liste de pays dans un combo de selection

bon, j'ai réussi, voila ça marche.

echo"<select name=\"pays\" id=\"pays\" size=\"1\">";
asort($flags);
foreach ($flags as $cle=>$value){
  if (strlen($value) > 30)
    $value = substr($value, 0, 30).".";
echo"<option value=$cle>$value</option>";
}
echo"</select>";

Hors ligne

#4 24-06-2012 13:52:22

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : mettre une liste de pays dans un combo de selection

Saluton,
A l'avenir merci de mettre le bouts de script entre balises bbcode avec l'attribut code=php. Ça m'évitera de le faire à ta place.

Les balises PHP c'est <?php ?> oublie les short-tags ou tu auras un jour des problèmes avec certains serveurs sur lesquels ils sont désactivés, ou des problèmes de compatibilité avec XML.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#5 26-06-2012 12:23:33

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

Bonjour,

Il existe des bases de données pour faire ce genre de travail...


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#6 26-06-2012 15:51:01

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : mettre une liste de pays dans un combo de selection

Jc a écrit :

Il existe des bases de données pour faire ce genre de travail...

En l'occurrence, cette nomenclature des pays étant par définition peu variante, je ne vois pas l'intérêt de la mettre en BDD.
Ce serait juste plus long pour construire les <option> du <select>, il faudrait passer par une requête.
Ceci dit, pourquoi ne pas avoir directement entrer les données dans les values et les balises <option> du source HTML, la, en plus, on y gagnait le temps du parsing PHP.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#7 26-06-2012 19:58:50

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

MK, serais-tu en train de passer du côté obscur? wink
Je me permets de te rappeler que c'est le genre d'arguments de ceux qui font tout en PHP et qui persistent uniquement en BD....

Quand on commence derrière à faire un peu de décisionnel, c'est la fin des haricots.

++

Dernière modification par Jc (26-06-2012 19:59:41)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#8 27-06-2012 06:18:40

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : mettre une liste de pays dans un combo de selection

Je parle juste d'un strict point de vue des performances du script proposé.
A part de s'éviter la flemme d'écrire une seule et unique fois directement le code HTML, la solution choisie par tocata62 de créer un array pour le parcourir et faire générer les <option> du <select> ne se justifie pas, encore moins d'aller s'encombrer d'une table de BDD.
Le contenu de ces options étant très invariant autant créer directement le code HTML sans passer par PHP et le SGBDR.
Maintenant, si ces informations doivent servir ailleurs dans le système géré, c'est une autre histoire, mais il n'en demeure pas moins vrai, comme nous en avons déjà parlé à plusieurs reprises, que "requêter" pour construire les éléments les plus sollicités mais aussi les plus invariants des pages (menus, listes de sélection de nomenclatures, ...) est contre-productif si c'est fait sans discernement.
Pour ces parties là, je m'arrange pour que les processus qui engendrent des INSERT, UPDATE ou DELETE sur ces tables, régénèrent les includes HTML correspondant.
Ainsi, ce n'est pas à chaque fois qu'on sollicite, en HTML, ces éléments que le SGBD est mis à contribution pour un SELECT.
Je ne vois donc rien d'obscur là-dedans, mon cher Jc, cela me semble plutôt limpide.

Là-dessus, je vais prendre mon petit déjeuner puis je retourne à mon chantier de couloir.


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#9 27-06-2012 15:27:24

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

Pour le paramétrage applicatif, et donc pour les informations statiques dont l'application a besoin d'une manière fréquente et redondante, les systèmes de cache en PHP sont là pour ça wink


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#10 27-06-2012 15:49:52

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : mettre une liste de pays dans un combo de selection

Jc a écrit :

Pour le paramétrage applicatif, et donc pour les informations statiques dont l'application a besoin d'une manière fréquente et redondante, les systèmes de cache en PHP sont là pour ça wink

Et qui, parmi nos amis débutants, (sait) utilise(r) les sytèmes de cache en PHP ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#11 27-06-2012 16:05:09

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

Bien pour commencer notre ami tocata62 smile
C'est exactement ce qu'il a fait, même si ce n'est pas fait en POO.

Dernière modification par Jc (27-06-2012 16:05:24)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#12 27-06-2012 18:25:17

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : mettre une liste de pays dans un combo de selection

Jc a écrit :

Bien pour commencer notre ami tocata62 smile
C'est exactement ce qu'il a fait, même si ce n'est pas fait en POO.

Et t'as vu ça où ?
J'aurais encore loupé un truc ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#13 27-06-2012 19:37:47

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

Bien oui, je conviens que fait ainsi ce n'est pas très robuste mais cela rejoint l'idée d'un cache. Lui reste juste à le persister pour pouvoir lui donner le nom. De plus, je suis prêt à parier que c'est l'idée qu'il avait derrière la tête lorsque il a fait cela.


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#14 27-06-2012 22:57:36

Maljuna Kris
Infantimigulo
Lieu : Douarnenez 29100 Breizh Izel
Inscription : 08-05-2009
Messages : 2 453
Site Web

Re : mettre une liste de pays dans un combo de selection

Je crois qu'il faut que tu arrêtes les petites pilules bleues, mon bon Jc.
T'es en surchauffe ?


Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy

Hors ligne

#15 28-06-2012 00:37:27

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

lol


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

#16 28-06-2012 07:01:26

Pierrot
Ancien nouveau
Inscription : 08-05-2009
Messages : 1 195

Re : mettre une liste de pays dans un combo de selection

ha, il prend ausi les bleues ??? hmm:/:/:/

pauvre de lui hmm:/:/:/


cas perdu hmm:/:/:/


RIP hmm:/:/


a++

Hors ligne

#17 28-06-2012 22:28:05

Jc
Membre
Lieu : Zillisheim - Alsace
Inscription : 15-04-2010
Messages : 1 629
Site Web

Re : mettre une liste de pays dans un combo de selection

Blague à part, je crois qu'il va falloir en plus que je fasse un tuto détaillé sur la notion de cache, les types de cache, etc... bref le cache en général. Car il me semble pas que cet exercice ait déjà été fait sur le net, et une bonne piqûre de rappel (je ne dirais pas où) ne ferait visiblement pas de mal à certains.

big_smile ++

Dernière modification par Jc (28-06-2012 22:29:34)


POO PHP+Ajax en MVC avec PDO et Bases de données épaisses  : What else?

Hors ligne

Pied de page des forums