scoubydog
Messages postés10Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention 8 février 2009
-
7 févr. 2009 à 18:08
scoubydog
Messages postés10Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention 8 février 2009
-
8 févr. 2009 à 21:35
Bonjour, je vous explique mon probleme :
Je travaille sur un petit module qui me permet de savoir en tapant un code postal francais si c'est au nord ou au sud de la France.
Pour cela j'ai un champs qui me permet de rentrer un code postal(5 chiffres). Quand je valide, je récupère les deux premiers numéros de la valeur et je les comparent à deux listes. La première possède tous les 2 premiers chiffre des codes postaux du nord et la deuxieme le reste.
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 7 févr. 2009 à 19:33
Salut,
Pour commencer, ta manière de faire les if conduira toujours ton expression a être vrai au tout premier (a moins que tu n'ai ici mis un raccourcis). En effet, les chaînes '03', '02' en sont pas comparées a $champscodepostal et sont évaluées comme tel, c'est a dire a une valeur qui est, dans le cas présent, toujours vrai.
Ceci corrigé, ton script marche très bien. Une solution beaucoup plus propre serait de te faire un tableau qui associe a chaque numéro du département (indice dont tu n'as pas a te soucier) le numéro de la zone.
Exemple pour les 4 premiers départements :
$zone_data = array(4, 3, 4, 4);
$zone = $zone_data[intval($champscodepostal) + 1];
Un tableau est indexé a partir de 0 et non de 1, d'où l'ajout de 1 lors de la recherche.
En théorie le intval() est inutile, PHP convertissant automatiquement.
scoubydog
Messages postés10Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention 8 février 2009 7 févr. 2009 à 22:38
Je te remercie pour ta réponse.
Effectivement l'idée du tableau est beaucoup plus propre et plus simple, mais il me reste une derniere petite erreur
Voici ce que j'ai fait :
<?php
$champscodepostal=10000;
$champscodepostal2=substr($champscodepostal,0,2); pour récupérer le deux premiers chiffres.
$zone_data = array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 ); ///different pour savoir quel valeur correspond.
TychoBrahe
Messages postés1309Date d'inscriptionsamedi 31 janvier 2009StatutMembreDernière intervention 5 juin 201312 8 févr. 2009 à 09:41
Salut,
En effet c'est bien -1 au lieux de +1 comme j'avais mis par erreur (encore une étourderie de ma part :s).
Par contre, tu as mal placé le dit -1 et tu ne semble pas avoir bien compris le principe du tableau que je voulais te montrer. Il ne faut pas mettre les numéros de départements dans le tableau mais les numéros de zone.
Si on reprend ce que j'avais mis pour les 4 premiers départements on a :
$zone_data = array(4, 3, 4, 4);
donc :
$zone_data[0] a pour valeur 4 => le département numéro 00 est dans la zone 4;
$zone_data[1] a pour valeur 3 => le département numéro 01 est dans la zone 3;
$zone_data[2] a pour valeur 4 => le département numéro 02 est dans la zone 4;
et ainsi de suite.
Bien entendu, vu qu'il n'existe pas de département 00 il faut enlever 1 pour retrouver la bonne valeur :
$champscodepostal=intval(substr($champscodepostal, 0, 2)) - 1;
Ceci te donne le numéro du département avec 1 de moins afin de se mettre a un index 0 et non 1.
Vous n’avez pas trouvé la réponse que vous recherchez ?
scoubydog
Messages postés10Date d'inscriptiondimanche 9 janvier 2005StatutMembreDernière intervention 8 février 2009 8 févr. 2009 à 21:35
Salut,
oui pour le -1 j'ai posté trop vite mais j'avais bien fait la modif apres. Pour ce qui des valeurs du tableau c'était juste pour effectuer mes test pour aller plus vite comme ca en mettant par exemple la valeur 08220 je savais que j'allais tomber sur 8 et ainsi de suite pour mes autres test. Dans la version finale j'ai changer les valeur par 1, 2 ou 3 par rapport à mes trois zones.