FONCTION RECHERCHE D'UNE RÉGION A PARTIR D'UN CODE POSTAL

malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 - 13 janv. 2006 à 11:01
fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006 - 18 janv. 2006 à 09:23
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/35542-fonction-recherche-d-une-region-a-partir-d-un-code-postal

fredericmaill Messages postés 144 Date d'inscription mercredi 16 juin 2004 Statut Membre Dernière intervention 22 mars 2006
18 janv. 2006 à 09:23
J'ai réalisé cette fonction pour un formulaire, les régions ainsi récupérées vont alimenter une liste déroulante. Afin d'effectué des recherche par critère de région pour avoir que la liste des régions utiles.

J'avais pensé à la localisation a partir de l'IP, mais cette liste de client, car il s'agit de client, peut être alimenté dans différent site.
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
18 janv. 2006 à 01:00
D'habitude se genre de script sert à localiser un utilisateur selon d'où il vient ,donc avec le genre de traitement que j'ai voulu faire on aurait pas à demande le code postal de l'utilisateur pour avoir les infos. Pour le script le WHOIS c'est plus "who is ?" parce que ça utilise la base de donnée du serveur et non les base de donnée de WHOIS. Pour se que je présente l'avantage c'est que t'as pas besoin d'avoir toute les bases de données pour les infos sur chaque pays ,IP et autres infos qui sont utiles sur les utilisateurs. Prends par exemple quelqu'un qui veut faire un site qui s'adresse à tout le monde et qui veut accumuler des données sur les utilisateurs qui vont sur sont site. Si il le fait sur un site gratuit il n'aura probablement pas assez d'espace (des sites gratuits et pas de pub ça donne pas grand espace) ou de ressources disponible (MySQL c'est pas sur tout les serveurs qui ont PHP).
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
16 janv. 2006 à 09:37
Arto_8000 => oui, mais ce n'est pas là le but. Le but est simplement de trouver une région en fonction d'un code postal, ici. Et puis, je préfère calculer ça, si c'est possiblé, à partir d'une fonction sur mon site, plutôt que de devoir me connecter à un autre site pour avoir cette réponse ;-)
Pour WHOIS, la population du pays...??

Enfin, sinon, le service que tu montres a l'air sympa, en effet :-)
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
16 janv. 2006 à 02:57
Plus simple pour avoir la région du visiteur :

<HTML>
<HEAD>
<TITLE>Where are you ?</TITLE>
<SCRIPT language="javascript" type="text/javascript" src="http://gd.geobytes.com/Gd?variables=GeobytesRegion"></SCRIPT>
<SCRIPT language="javascript" type="text/javascript">
alert(sGeobytesRegion);
</SCRIPT>
</HEAD>
</HTML>

Je ne sais pas si j'utilise la bonne variable, mais chez moi ça retourne Quebec.

J'ai trouver se merveilleux outil de WHOIS qui peut retourner à peu près n'importe quoi sur l'utilisateur, même la population de son pays et la ville. Pour plus d'info :

http://www.geobytes.com/GeoDirection.htm
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
15 janv. 2006 à 12:32
Je suis de l'avis de Coucou et de Kankrelune. A moins d'avoir un besoin express de ces données dans une bdd, je ne vois pas l'intérêt de faire des requêtes pour ça.
Et j'opterais plutôt aussi pour le tableau, qui donnera un code moins long, et plus clair. Et on peut s'amuser (mon code renvoie aussi le nom du département par exemple).
cs_dume Messages postés 3 Date d'inscription samedi 10 novembre 2001 Statut Membre Dernière intervention 14 janvier 2006
14 janv. 2006 à 22:41
Juste pour info, le code postal ne comporte que des chiffres, et pour la Corse il faut lire 20 et non pas 2A ou 2B...
Quant au code, j'opterais pour ma part, pour une requête sql sur une table de départements.
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
14 janv. 2006 à 17:57
moi j'opterais pour le switch car dans le cas d'une recherche de région comme pour cette source si on prend un tableau on répète la même entrée pour plusieurs départements alors qu'avec un switch on peut les grouper... par contre dans le cas d'une recherche de département c'est clair qu'un tableau sera plus adapté... .. .

@ tchaOo°
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
14 janv. 2006 à 10:39
salut

tableau ou switch, seraient de bien meilleurs solution, moi je choisirais le tableau car il serait moins répétitif que le switch, plus générique, et qu'on pourrait se servir du tazbleau pour rentrer ces données dans une base de donnée...

mais cette source là est très mal codée... seul la liste des dépatrements est interessante...
kankrelune Messages postés 1293 Date d'inscription mardi 9 novembre 2004 Statut Membre Dernière intervention 21 mai 2015
14 janv. 2006 à 01:52
euuh pourquoi ne pas passer par un tableau ?

function region($cp)
{
if(!is_numeric($cp)){
return false;
}

$regions = array(
'75' => 'Ile-de-France',
'77' => 'Ile-de-France',
'78' => 'Ile-de-France',
'91' => 'Ile-de-France',
'92' => 'Ile-de-France',
'93' => 'Ile-de-France',
'94' => 'Ile-de-France',
'95' => 'Ile-de-France',
la suite... .. .
);
if(isset($regions[$cp])){
return $regions[$cp];
} else {
return false;
}
}

ou même un switch...

function region($cp)
{
if(!is_numeric($cp)){
return false;
}

switch($cp){

case 75:
case 77:
case 78:
case 91:
case 92:
case 93:
case 94:
case 95:
return 'Ile-de-France';
break;

la suite... .. .

default:
return false;
break;
}
}

lefter utiliser MySQL ne sera pas plus simple et surement pas plus rapide... de plus je ne vois pas l'interet de créer une table et de générer des requetes juste pour retrouver une région c'est totalement inutile... .. .

@ tchaOo°
cs_Arnauti Messages postés 392 Date d'inscription mercredi 24 novembre 2004 Statut Membre Dernière intervention 26 septembre 2009
13 janv. 2006 à 18:23
Ba je ne suis pas sur qu'une requete SQL, soit plus lente. Ce n'est qu'une idee, je n'ai pas essayer.

A++
lefter Messages postés 63 Date d'inscription lundi 7 juin 2004 Statut Membre Dernière intervention 16 mai 2009
13 janv. 2006 à 11:21
Serai plus simple et plus rapide de faire une base de donnée, et d'y faire une recherche par une requête!
(Ton exemple est valable si ton fournisseur d'accès ne met pas à disposition une base de donnée MySql ou autre, sinon je ne vois pas l'intéret)
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
13 janv. 2006 à 11:01
Hello,

bon, je vais laisser ce source parce que je me doute qu'il sera utile aux plus grands débutants...Mais s'il te plait, change le!
Le code est vraiment moche...
les multiples retour, l'absence de vérifications sur le paramètre passé, les if () inutiles, les guillemets pour entourer les variables de type chaîne, la balise <?...etc
Je te donne un indice (un gros) :
<?php
function getRegion ($cp) {
if (false === is_numeric ($cp) || 2 > strlen ((string)$cp)) {
return false;
}
$dpt = substr ($cp, 0, 2);
$aReg array (0> 'Provence-Alpes-Côte d\'Azur',
1 => 'Picardie'
);
$aDpts array ('13'> array (0 => 'Bouches-du-Rhône', ),
'04' => array (0 => 'Alpes-de-haute-Provence'),
'80' => array (1 => 'Somme')
);
return $aRetour array ('dept'> $aDpts[$dpt][key ($aDpts[$dpt])], 'reg' => $aReg[key ($aDpts[$dpt])]);
}

print_r (getRegion ('13100'));
?>
Rejoignez-nous