Publicité :Stats

Lion1906
Recherche rapide 

Accueil Recherche Infos Utile Divers
Version francaise English version
Liste des sujets
 Discussion Principale
 Sujet : Calcul avec orthodromie en javascript+php (par JBB le 17-11-2008 à 15:57) Répondre 
Message :
Bonjour,

Je souhaiterai savoir comment est-il possible de faire pour calculer en javascript une variable que l'on nommerai "proximite" récupérant les codes INSEE pour pouvoir ensuite en PHP faire une requête sur une base MySQL pour afficher toutes les villes disposant de ce code INSEE... J'ai essayé en long, en large et en travers mais je n'y arrive pas, à croire que ce que je fais est de travers ;-)

J'espère que vous pourrez m'aider
 Sujet : Calcul avec orthodromie en javascript+ph... (par Lionel Delvarre le 20-11-2008 à 15:44) Répondre 
Message :
Salut JBB

Je suis en train de faire des modifications sur les 2 programmes de génération de carte (incluant les versions pour webmaster).
J'avais un projet dans le sens des générations de carte par lion1906 via un javascript placé sur un site distant (Voir Utile, Outils), et qui était destiné à faire ce que tu veux faire. En gros: Transmettre via un javascript un code Insee ou un code postal, et avoir en retour un tableau des codes insee des communes les plus proches. Je pense que je pourrai donc inclure un paramètre pour donner en plus un paramètre ''Parmis ces code insee''. Ce qui aboutirait à une fonction ''Retourne moi un tableau de x résultats de codes insee parmis telles valeurs classé par ordre croissant''

Est-ce bien dans ce genre de fonction js que tu souhaitais ?
Sinon, il est peut-être plus simple de faire tout cela en php ?

Lionel
 Sujet : Calcul avec orthodromie en javascript+ph... (par JBB le 20-11-2008 à 16:51) Répondre 
Message :
Salut Lionel,

Oui c'est dans l'idée de ce que je souhaiterai faire. Pour ce qui est de tout faire en PHP j'ai essayé mais je n'y suis pas arrivé, ceci dit c'est peut être aussi parceque je m'y prend mal. Voilà grosso modo les étapes de mes requêtes :

1- J'entre un code INSEE et il me ressort tous les codes INSEE qui sont dans un rayon de 30km
2- Grâce à ces codes je fais afficher tous les résultats de ma base qui sont compris.

Le seul truc c'est que je bloque entre l'étape 1 et 2 car en MySQL il n'y a pas possibilité de mettre des alias dans les clauses. Autrement dit si je met pour alias "proximite" le calcul de la distance orthodromique je ne pourrai avoir dans la requête "... WHERE proximite <= '30'"

Ce qui me fait conclure qu'il faut absolument passer par du javascript, mais là le problème se pose pour moi c'est que je suis une quiche en javascript :-S

Si tu as une idée je suis preneur en tous les cas
 Sujet : Calcul avec orthodromie en javascript+ph... (par Lionel Delvarre le 20-11-2008 à 18:25) Répondre 
Message :
Heu...

Pas de possibilité d'alias dans la clause Where ? Je pense que c'est bien possible. Tout mon site est basé là dessus.

Je remets la requete d'un message posté juste apres le tien :

SELECT les_champs,(6366*acos(cos($ValeurLatitudeDeLaVilleSelectionnee)*cos(champ_latitude_radian)*cos(champ_longitude_radian-$ValeurLongitudeDeLaVilleSelectionnee)+sin($ValeurLatitudeDeLaVilleSelectionnee)*sin(champ_latitude_radian))) as Proximite FROM LaTable WHERE IdVille!=$IdVilleSelectionne ORDER BY Proximite

Normalement, ca fonctionne sans problème... Au moins pour Mysql 3.23.

Sinon , tu peux mettre ici la structure de ta table pour trouver la solution.
Mon projet de javascript permettait de ne pas à avoir à installer un bdd de coordonnées géographiques sur un serveur... Mais si tu as déjà une telle bdd, autant faire tourner le serveur...

++
Lionel
 Sujet : Calcul avec orthodromie en javascript+ph... (par Mickael le 20-11-2008 à 20:56) Répondre 
Message :
Le seul truc c'est que je bloque entre l'étape 1 et 2 car en MySQL il n'y a pas possibilité de mettre des alias dans les clauses. Autrement dit si je met pour alias "proximite" le calcul de la distance orthodromique je ne pourrai avoir dans la requête "... WHERE proximite <= '30'"

en utilisant l'alias dans une clause pour une restriction d'un resultat
tu dois utilisé HAVING proximite <= 30

oublie javascript pour ce probleme ;-)

 Sujet : Calcul avec orthodromie en javascript+ph... (par JBB le 21-11-2008 à 17:39) Répondre 
Message :
Salut,

merci pour vos réponses, pour HAVING c'est ce que j'avais essayé mais je n'y suis pas arrivé, je vous montre mon bout de code si vous voyez pourquoi ça marche pas :

$latelev=$vi1['lat'];
$longelev=$vi1['longi'];

$sql= mysql_query("SELECT INSEE, lat, longi, (6366*acos(cos($latelev)*cos(lat)*cos(longi-$longelev)+sin($latelev)*sin(lat)))
AS proximite
FROM villes
GROUP BY INSEE HAVING proximite < 50
")or die(mysql_error());
$nville = mysql_fetch_array($sql);


$recherche= mysql_query("SELECT * FROM prf_coord
WHERE INSEEP='".$nville['INSEE']."'
")or die(mysql_error());
$rch=mysql_fetch_array($recherche);

 Sujet : Calcul avec orthodromie en javascript+ph... (par Lionel Delvarre le 21-11-2008 à 19:19) Répondre 
Message :
Salut.

Tu pourrais poster un dump de la structure de tes bdd, histoire que je teste directement en local ?

Lionel
 Sujet : Calcul avec orthodromie en javascript+ph... (par JBB le 30-11-2008 à 13:00) Répondre 
Message :
Salut,

Désolé pour le temps de réponse, où veux tu que je t'envoie une copie de la base "ville" ?

Merci pour le temps passé et ta réponse,
 Sujet : Calcul avec orthodromie en javascript+ph... (par jeca le 06-12-2008 à 12:01) Répondre 
Message :
Le code INSEE est unique. Alors, quelle est l'utilité de 'GROUP BY INSEE' ?
 Sujet : Calcul avec orthodromie en javascript+ph... (par -- le 06-12-2008 à 14:29) Répondre 
Message :
Parcequ'il me semble qu'en MySQL l'utilisation du HAVING nécessite la présence du GROUP BY préalablement. Mais paut-être je me trompe ?
 Sujet : Calcul avec orthodromie en javascript+ph... (par Lionel Delvarre le 22-12-2008 à 11:57) Répondre 
Message :
Salut Jeca.

En fait, il s'agit tout simplement du changement de structure de ma base de données. Auparavant, les villes étaient en doublon avec un code insee pouvant être renseigné plusieurs fois (chaque ligne en doublon possédait un code postal différent). Maintenant, cette structure ayant changé (le code postal est renseigné dans un seul champ), il n'y a plus lieu de mettre le group by, car il y a bien un seul code insee unique en bdd.
Donc, pour exemple : Lille a 2 codes postaux. Avant, il y avait 2 enregistrements (avec le code postal 59000 et 59800). Désormais, Une seule ligne, avec dans les champ code postal : 59000|59800.

Voila pour la petite précision
Lionel



















Accueil : Présentation | Actualités | Anciens sites | Forum | Plan du site | Mises à jour
Recherche : Localisation | Orthodromie | Proximité | Codes postaux | Codes INSEE | Carte interactive
Infos : Glossaire | Orthodromie - Cap | Départements et Villes | Le site | FAQ, Aide & possibilités | Articles
Utile : Conversion - Cap | Liens | Outils | Téléchargements
Divers : Webmaster | Livre d'or | Contact | Free