IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Tableaux] Récupération valeur selon un identifiant


Sujet :

Langage PHP

  1. #1
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut [Tableaux] Récupération valeur selon un identifiant
    Hi all,

    J'ai un petit problème de d'interprétation d'un id de tableau correspondant à un mot.

    Dans un formulaire de contact, j'ai une liste déroulante rassemblant une liste de pays.

    la liste de pays est défini ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    //Inclusion des valeurs
    include ("../include/formen.php");
     
    $list[f_Pays]=array(CHOISIR_LIST, BE, CA, FR, DE, IT , NL, ES, CH, GB, US, AL, AD, AT, BY, BE, BA, BG, HR, CY, CZ, DK, EE, FO, FI, FR, DE, GI, GR, GL, HU, IS, IE, IT, LV, LI, LT, LU, MK, MT, MD, MC, NL, NO, PL, PT, RO, RU, SM, CS, SK, SI, ES, SE, CH, UA, GB, VA, DZ, AO, BJ, BT, BW, BF, BI, CM, CV, CF, TD, KM, CG, CD, CI, DJ, EG, GQ, ER, ET, GA, GM, GH, GN, GW, GY, KE, LS, LR, LY, MG, MW, ML, MR, MU, YT, MA, MZ, NA, NE, NG, RW, SH, ST, SN, SC, SL, SO, ZA, SD, SZ, TZ, TG, TN, UG, EH, ZM, ZW, CA, MX, PM, US, AR, BZ, BO, BR, CL, CO, CR, EC, SV, FK, GF, GT, HN, NI, PA, PY, PE, SR, UY, VE, AF, AM, AZ, BH, BD, BN, KH, CN, GE, HK, IN, ID, IR, IQ, IL, JP, JO, KZ, KP, KR, KW, KG, LA, LB, MO, MY, MV, MN, MM, NP, OM, PK, QA, SA, SG, LK, SY, TW, TJ, TH, TL, TR, TM, AE, UZ, VN, YE, AI, AG, AW, BS, BB, BM, KY, CU, DM, DORP, GD, GP, HT, JM, MQ, MS, AN, PR, RE, KN, LC, VC, TT, TC, VG, ASUS, AU, CC, CK, FJ, PF, KI, MH, FM, NR, NC, NZ, NU, PW, PG, PH, PN, WS, SB, TO, TV, VU, WF);
    $CodePays=array(" ", "BE", "CA", "FR", "DE", "IT" , "NL", "ES", "CH", "GB", "US", "AL", "AD", "AT", "BY", "BE", "BA", "BG", "HR", "CY", "CZ", "DK", "EE", "FO", "FI", "FR", "DE", "GI", "GR", "GL", "HU", "IS", "IE", "IT", "LV", "LI", "LT", "LU", "MK", "MT", "MD", "MC", "NL", "NO", "PL", "PT", "RO", "RU", "SM", "CS", "SK", "SI", "ES", "SE", "CH", "UA", "GB", "VA", "DZ", "AO", "BJ", "BT", "BW", "BF", "BI", "CM", "CV", "CF", "TD", "KM", "CG", "CD", "CI", "DJ", "EG", "GQ", "ER", "ET", "GA", "GM", "GH", "GN", "GW", "GY", "KE", "LS", "LR", "LY", "MG", "MW", "ML", "MR", "MU", "YT", "MA", "MZ", "NA", "NE", "NG", "RW", "SH", "ST", "SN", "SC", "SL", "SO", "ZA", "SD", "SZ", "TZ", "TG", "TN", "UG", "EH", "ZM", "ZW", "CA", "MX", "PM", "US", "AR", "BZ", "BO", "BR", "CL", "CO", "CR", "EC", "SV", "FK", "GF", "GT", "HN", "NI", "PA", "PY", "PE", "SR", "UY", "VE", "AF", "AM", "AZ", "BH", "BD", "BN", "KH", "CN", "GE", "HK", "IN", "ID", "IR", "IQ", "IL", "JP", "JO", "KZ", "KP", "KR", "KW", "KG", "LA", "LB", "MO", "MY", "MV",					 "MN", "MM", "NP", "OM", "PK", "QA", "SA", "SG", "LK", "SY", "TW", "TJ", "TH", "TL", "TR", "TM", "AE", "UZ", "VN", "YE", "AI", "AG", "AW", "BS", "BB", "BM", "KY", "CU", "DM", "DO", "GD", "GP", "HT", "JM", "MQ", "MS", "AN", "PR", "RE", "KN", "LC", "VC", "TT", "TC", "VG", "AS", "AU", "CC", "CK", "FJ", "PF", "KI", "MH", "FM", "NR", "NC", "NZ", "NU", "PW", "PG", "PH", "PN", "WS", "SB", "TO", "TV", "VU", "WF");
    selon les lettres, le fichier formen inclus, incluera le nom du pays correspondant au code défini, (ex: FR deviendra France).
    La liste affiche très bien le nom.

    Le problème survient au moment où je récupère le code pays pour l'envoi du mail de contact.

    dans le fichier de récup des infos du formulaire, je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     //Inclusion des valeurs
    include ("../include/formen.php");
     
    $list[f_Pays]=array(CHOISIR_LIST, BE, CA, FR, DE, IT , NL, ES, CH, GB, US, AL, AD, AT, BY, BE, BA, BG, HR, CY, CZ, DK, EE, FO, FI, FR, DE, GI, GR, GL, HU, IS, IE, IT, LV, LI, LT, LU, MK, MT, MD, MC, NL, NO, PL, PT, RO, RU, SM, CS, SK, SI, ES, SE, CH, UA, GB, VA, DZ, AO, BJ, BT, BW, BF, BI, CM, CV, CF, TD, KM, CG, CD, CI, DJ, EG, GQ, ER, ET, GA, GM, GH, GN, GW, GY, KE, LS, LR, LY, MG, MW, ML, MR, MU, YT, MA, MZ, NA, NE, NG, RW, SH, ST, SN, SC, SL, SO, ZA, SD, SZ, TZ, TG, TN, UG, EH, ZM, ZW, CA, MX, PM, US, AR, BZ, BO, BR, CL, CO, CR, EC, SV, FK, GF, GT, HN, NI, PA, PY, PE, SR, UY, VE, AF, AM, AZ, BH, BD, BN, KH, CN, GE, HK, IN, ID, IR, IQ, IL, JP, JO, KZ, KP, KR, KW, KG, LA, LB, MO, MY, MV, MN, MM, NP, OM, PK, QA, SA, SG, LK, SY, TW, TJ, TH, TL, TR, TM, AE, UZ, VN, YE, AI, AG, AW, BS, BB, BM, KY, CU, DM, DORP, GD, GP, HT, JM, MQ, MS, AN, PR, RE, KN, LC, VC, TT, TC, VG, ASUS, AU, CC, CK, FJ, PF, KI, MH, FM, NR, NC, NZ, NU, PW, PG, PH, PN, WS, SB, TO, TV, VU, WF);
    $CodePays=array(" ", "BE", "CA", "FR", "DE", "IT" , "NL", "ES", "CH", "GB", "US", "AL", "AD", "AT", "BY", "BE", "BA", "BG", "HR", "CY", "CZ", "DK", "EE", "FO", "FI", "FR", "DE", "GI", "GR", "GL", "HU", "IS", "IE", "IT", "LV", "LI", "LT", "LU", "MK", "MT", "MD", "MC", "NL", "NO", "PL", "PT", "RO", "RU", "SM", "CS", "SK", "SI", "ES", "SE", "CH", "UA", "GB", "VA", "DZ", "AO", "BJ", "BT", "BW", "BF", "BI", "CM", "CV", "CF", "TD", "KM", "CG", "CD", "CI", "DJ", "EG", "GQ", "ER", "ET", "GA", "GM", "GH", "GN", "GW", "GY", "KE", "LS", "LR", "LY", "MG", "MW", "ML", "MR", "MU", "YT", "MA", "MZ", "NA", "NE", "NG", "RW", "SH", "ST", "SN", "SC", "SL", "SO", "ZA", "SD", "SZ", "TZ", "TG", "TN", "UG", "EH", "ZM", "ZW", "CA", "MX", "PM", "US", "AR", "BZ", "BO", "BR", "CL", "CO", "CR", "EC", "SV", "FK", "GF", "GT", "HN", "NI", "PA", "PY", "PE", "SR", "UY", "VE", "AF", "AM", "AZ", "BH", "BD", "BN", "KH", "CN", "GE", "HK", "IN", "ID", "IR", "IQ", "IL", "JP", "JO", "KZ", "KP", "KR", "KW", "KG", "LA", "LB", "MO", "MY", "MV",					 "MN", "MM", "NP", "OM", "PK", "QA", "SA", "SG", "LK", "SY", "TW", "TJ", "TH", "TL", "TR", "TM", "AE", "UZ", "VN", "YE", "AI", "AG", "AW", "BS", "BB", "BM", "KY", "CU", "DM", "DO", "GD", "GP", "HT", "JM", "MQ", "MS", "AN", "PR", "RE", "KN", "LC", "VC", "TT", "TC", "VG", "AS", "AU", "CC", "CK", "FJ", "PF", "KI", "MH", "FM", "NR", "NC", "NZ", "NU", "PW", "PG", "PH", "PN", "WS", "SB", "TO", "TV", "VU", "WF");
    $idPays = isset($_POST['f_Pays']);
    $Country = $list[f_pays][$idPays];
    ET quand je fais le test de savoir si le champs $Country est bien rempli, et bien il me dit qu'il est vide.

    En gros, $idPays sera égale à 3 si c'est FR, et après $Country doit être égale à "France".

    Pouvez vous éclairer ma lanterne ?

    Merci pour vos réponses !!

  2. #2
    Membre expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Points : 3 212
    Points
    3 212
    Par défaut
    isset() renvoie true ou false selon que ta variable est initialisée ou non, donc tu ne peux pas utiliser sa valeur de retour pour l'affecter a $idPays, il faut faire ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if(isset($_POST['f_Pays']))
    {
    $idPays = $_POST['f_Pays'];
    }
    et penser a gérer le cas où cette valeur n'est pas initialisée.

  3. #3
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Merci d'avoir répondu

    Effectivement j'ai vu mon erreur, et je l'ai enlever mais toujours le mm problème

    Voici le code du formulaire concernant la liste déroulante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <span class="FormInputTitle">Country </span>
    <select name="f_Pays" id="pays" onfocus="this.className='focus';" onblur="this.className='normal';"  />
    	<?
    	include('../include/formen.php');	
    	$list[f_Pays]=array(CHOISIR_LIST, BE, CA, FR, DE, IT , NL, ES, CH, GB, US, AL, AD, AT, BY, BE, BA, BG, HR, CY, CZ, DK, EE, FO, FI, FR, DE, GI, GR, GL, HU, IS, IE, IT, LV, LI, LT, LU, MK, MT, MD, MC, NL, NO, PL, PT, RO, RU, SM, CS, SK, SI, ES, SE, CH, UA, GB, VA, DZ, AO, BJ, BT, BW, BF, BI, CM, CV, CF, TD, KM, CG, CD, CI, DJ, EG, GQ, ER, ET, GA, GM, GH, GN, GW, GY, KE, LS, LR, LY, MG, MW, ML, MR, MU, YT, MA, MZ, NA, NE, NG, RW, SH, ST, SN, SC, SL, SO, ZA, SD, SZ, TZ, TG, TN, UG, EH, ZM, ZW, CA, MX, PM, US, AR, BZ, BO, BR, CL, CO, CR, EC, SV, FK, GF, GT, HN, NI, PA, PY, PE, SR, UY, VE, AF, AM, AZ, BH, BD, BN, KH, CN, GE, HK, IN, ID, IR, IQ, IL, JP, JO, KZ, KP, KR, KW, KG, LA, LB, MO, MY, MV, MN, MM, NP, OM, PK, QA, SA, SG, LK, SY, TW, TJ, TH, TL, TR, TM, AE, UZ, VN, YE, AI, AG, AW, BS, BB, BM, KY, CU, DM, DORP, GD, GP, HT, JM, MQ, MS, AN, PR, RE, KN, LC, VC, TT, TC, VG, ASUS, AU, CC, CK, FJ, PF, KI, MH, FM, NR, NC, NZ, NU, PW, PG, PH, PN, WS, SB, TO, TV, VU, WF);
    	$CodePays=array(" ", "BE", "CA", "FR", "DE", "IT" , "NL", "ES", "CH", "GB", "US", "AL", "AD", "AT", "BY", "BE", "BA", "BG", "HR", "CY", "CZ", "DK", "EE", "FO", "FI", "FR", "DE", "GI", "GR", "GL", "HU", "IS", "IE", "IT", "LV", "LI", "LT", "LU", "MK", "MT", "MD", "MC", "NL", "NO", "PL", "PT", "RO", "RU", "SM", "CS", "SK", "SI", "ES", "SE", "CH", "UA", "GB", "VA", "DZ", "AO", "BJ", "BT", "BW", "BF", "BI", "CM", "CV", "CF", "TD", "KM", "CG", "CD", "CI", "DJ", "EG", "GQ", "ER", "ET", "GA", "GM", "GH", "GN", "GW", "GY", "KE", "LS", "LR", "LY", "MG", "MW", "ML", "MR", "MU", "YT", "MA", "MZ", "NA", "NE", "NG", "RW", "SH", "ST", "SN", "SC", "SL", "SO", "ZA", "SD", "SZ", "TZ", "TG", "TN", "UG", "EH", "ZM", "ZW", "CA", "MX", "PM", "US", "AR", "BZ", "BO", "BR", "CL", "CO", "CR", "EC", "SV", "FK", "GF", "GT", "HN", "NI", "PA", "PY", "PE", "SR", "UY", "VE", "AF", "AM", "AZ", "BH", "BD", "BN", "KH", "CN", "GE", "HK", "IN", "ID", "IR", "IQ", "IL", "JP", "JO", "KZ", "KP", "KR", "KW", "KG", "LA", "LB", "MO", "MY", "MV", "MN", "MM", "NP", "OM", "PK", "QA", "SA", "SG", "LK", "SY", "TW", "TJ", "TH", "TL", "TR", "TM", "AE", "UZ", "VN", "YE", "AI", "AG", "AW", "BS", "BB", "BM", "KY", "CU", "DM", "DO", "GD", "GP", "HT", "JM", "MQ", "MS", "AN", "PR", "RE", "KN", "LC", "VC", "TT", "TC", "VG", "AS", "AU", "CC", "CK", "FJ", "PF", "KI", "MH", "FM", "NR", "NC", "NZ", "NU", "PW", "PG", "PH", "PN", "WS", "SB", "TO", "TV", "VU", "WF");
     
    	for($id=0;$id<11;$id++){
    		print("<option value=".$id.">".$list[f_Pays][$id]."</option>");
    		unset($ct);
    	}
    ?>
    Ici on voit comment est bien afficher les Pays avec "$list[f_Pays][$id]", j'ai donc pris le même procédé et la même syntaxe que pour l'envoi du mail, mais la valeur n'est pas bonne

  4. #4
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 777
    Points
    17 777
    Par défaut
    Citation Envoyé par mLk92
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	for($id=0;$id<11;$id++){
    		print("<option value=".$id.">".$list[f_Pays][$id]."</option>");
    		unset($ct);
    	}
    On a déjà vu plus évolutif qu'une valeur codée en dur (le 11) (ce qu'on peut faire avec une boucle foreach ou l'utilisation de la fonction count ou de son alias sizeof).

    Vous n'auriez pas plus simple que de faire deux tableaux séparés ? En faire un seul qui est associatif ou alors utiliser la fonction array_combine ?

    f_Pays correspond à quoi ? Une constante ou une chaîne ?

    Citation Envoyé par mLk92
    j'ai donc pris le même procédé et la même syntaxe que pour l'envoi du mail, mais la valeur n'est pas bonne
    C'est à dire, que récupérez-vous ?

  5. #5
    Membre averti Avatar de mLk92
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    527
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 527
    Points : 305
    Points
    305
    Par défaut
    Je dois vous avouer que c'est un code que j'ai repris en marche, et je ne voudrais pas perdre trop de temps à refaire tout le code, car ce bout de code est répété une dizaine de fois

    Mais le problème ne provient pas (je pense) du formulaire, parce que lors d'une premier test, je récupèrais bien l'id correspondant aux pays choisi.

    Je n'ai pas voulu enlever dans un premier temps le "f_Pays", ne voulant pas créer de conflit direct, mais j'ai bien l'impression qu'il ne sert à rien. je vais essayer sans.

    Sinon la valeur renvoyé justement n'est en ce moment que le vide, tout à l'heure je récupèrai bien l'id. Seul la conversion en un nom de pays échouait.



    [MAJ]

    J'ai effectuer le test sans le f_pays de $list[f_Pays][$idPays], et cela fonctionne.

    Par contre une autre question

    J'ai essayé de remplacer le champs reçus, s'ils sont vide, par du textes, mais malheureusement ça ne fonctionne pas, voici le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    //Déclaration des commentaire en cas de champs vide
    $InformationVide = "No comments notified";
    $AdresseVide = "No address specified ";
    $CityVide = "No city specified";
     
    $Adresse = isset($_POST['address']) ? $_POST['address'] : $AdresseVide ;
    $City = isset($_POST['city']) ? $_POST['city'] : $CityVide ;
    $Information = isset($_POST['information']) ? $_POST['information'] : $InformationVide ;
    Or dans le mail, le vide n'est pas remplacé.

    Merci pour vos réponses, je vais me pencher dessus.

Discussions similaires

  1. [Tableaux] pb récupération valeurs listes
    Par clairette dans le forum Langage
    Réponses: 6
    Dernier message: 10/03/2011, 18h29
  2. [Tableaux] Récupération de la valeur d'un tableau
    Par gregal dans le forum Langage
    Réponses: 8
    Dernier message: 01/03/2006, 14h06
  3. Réponses: 5
    Dernier message: 14/02/2006, 18h52
  4. Réponses: 4
    Dernier message: 09/01/2006, 01h24
  5. [Tableaux] récupération de valeurs cochées
    Par juanelcalor dans le forum Langage
    Réponses: 7
    Dernier message: 20/09/2005, 13h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo