neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 04 juillet 2006 - 13 h 44 m 32 s |
|
|
Reprise du premier message :Bonjour,
Je vous expose mon projet :
sur une carte recensant les stations de comptages du département, je veux faire correspondre pour chacune des stations les données de trafic routiers selon les années (fichier excel).
Quelle est selon vous la meilleure solution pour cela ?
Sachant que je bidouille à peine en html...
point actuel au 14 janvier 2007 :
http://info-routiere.net
Merci de vos réponses
|
|
| |
Message édité 3 fois, la dernière par neigerome le 14 janvier 2007 - 08 h 58. |
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 07 septembre 2006 - 11 h 04 m 18 s |
|
|
Reprise du message précédent :hello
merci pour la structure. dans un 1er temps, je te conseille de virer les "%" dans les noms de champs, le "%" étant un caractère joker en mysql, cela risque de crééer des problèmes ultérieurs
donc a priori, tu as pour chaque entrée :
- un identifiant unique (ta cle)
- une designation
- une categorie (correspond a quoi ?)
- un numero (correspond a quoi ?)
- des données par annee (mja + pl)
peux tu me dire a quoi correspondent les mja et pl ? traffic routier de l'annee, mais l'autre ?
donc dans ton cas, une fois cette table remplie, il te suffira dans ta page php de faire un truc du genre :
1- chargement des donnees via requete sql
2- preparation du formatage des donnees de l'infobulle
3- integration de la carte (graphique)
4- definition de tes zones et affichage de la bulle correspondante pregeneree dynamiquement.
par contre :
je pense que la structure de ta table est pas bonne, en effet, l'annee prochaine, il te faudra ajouter un champs, c'est assez moyen...
je pense qu'il serait mieux d'utiliser plusieurs tables au lieu d'une.
essaye de me donner la description des champs que je t'ai demande plus haut et je te pondrai une structure coherente et evolutive, ensuite, une fois cette partie bouclee, on s'attaque au code
++
oliv
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 07 septembre 2006 - 22 h 15 m 32 s |
|
|
Le 07 septembre 2006 - 11 h 04, grabber a écrit :
hello
merci pour la structure. dans un 1er temps, je te conseille de virer les "%" dans les noms de champs, le "%" étant un caractère joker en mysql, cela risque de crééer des problèmes ultérieurs 
donc a priori, tu as pour chaque entrée :
- un identifiant unique (ta cle)
- une designation
- une categorie (correspond a quoi ?)
- un numero (correspond a quoi ?)
- des données par annee (mja + pl)
peux tu me dire a quoi correspondent les mja et pl ? traffic routier de l'annee, mais l'autre ?
|
catégorie = correspond au type de route (nationale, départementale, voie rapide urbaine...)
numéro = son numéro associé
mja = moyenne journalière annuelle
pl = associé à % signifie le pourcentage de poids lourds présent par rapport au trafic total.
Faut il faire une table par année avec à l'intérieur les mja et les % PL ?
donc dans ton cas, une fois cette table remplie, il te suffira dans ta page php de faire un truc du genre :
1- chargement des donnees via requete sql
2- preparation du formatage des donnees de l'infobulle
3- integration de la carte (graphique)
4- definition de tes zones et affichage de la bulle correspondante pregeneree dynamiquement.
par contre :
je pense que la structure de ta table est pas bonne, en effet, l'annee prochaine, il te faudra ajouter un champs, c'est assez moyen...
je pense qu'il serait mieux d'utiliser plusieurs tables au lieu d'une.
essaye de me donner la description des champs que je t'ai demande plus haut et je te pondrai une structure coherente et evolutive, ensuite, une fois cette partie bouclee, on s'attaque au code 
++
oliv
|
Ai je bien répondu maître vénéré ? ;-)
En tout cas, merci pour l'aide apporté
|
|
| |
Message édité 2 fois, la dernière par neigerome le 07 septembre 2006 - 23 h 38. |
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 08 septembre 2006 - 11 h 57 m 34 s |
|
|
hello
ouais t'as tres bien repondu, mais arretes avec le maitre venere sinon je vais prendre la grosse tete et me remettre a insulter tout le monde !!!
alors reprenons deja la structure de tes tables :
le debut est bien, sauf qu'en mettant directement une ligne par annee, tu te bloques tout seul. en effet, l'annee suivante, il va falloir reprendre ta table et y ajouter 2 champs donc : un mja et un pl correspondant a la nouvelle annee a traiter. ensuite, au dela de cet aspect "conceptuel", tu devras aussi modifier ton code pour afficher la nouvelle annee
on va eviter ca en creant plusieurs tables et des relations entre elles. je rappelle pour les autres lecteurs que le gros avantage des bases de donnees contemporaines est qu'elles sont relationnelles, voyons ici comment on peut s'en sortir
deja, on va creer une table "ROUTES" avec les champs suivants :
- id (int) -> notre cle primaire unique
- designation (char) -> le nom de la route, char et pas texte car char permet de borner la longueur du champs, a la diff de text qui prendra plus de place au niveau de la base
- type_cat (int) -> identifiant numerique de la categorie
- num (int) -> le numero de la route
et c'est tout !
ensuite, on va creer une autre table appelee CAT_ROUTES :
- id_cat (int) -> idem qu'au dessus, identifiant unique du type de route, c'est ce chiffre qui sera insere dans la 1ere table pour faire le lien  c'est aussi ta cle primaire
- lib_cat (char) -> le libelle de la categorie (nationale / departementale...)
puis enfin une derniere table contenant les donnees effectives des routes, on l'appelle DATA_ROUTES :
- id (int) -> identifiant unique (et cle primaire)
- id_route (int) -> l'identifiant unique d'une route
- annee (int) -> l'annee a traiter
- mja (int) -> ta moyenne journaliere
- pl (dec) -> decimal pour les virgules, c'est ton pourcentage.
voila donc reprenons un peu maintenant la structure et expliquons le pourquoi du comment :
* La table ROUTES ne va contenir que les donnees de base de la route, si tu veux ajouter une nouvelle route, il suffira d'inserer une ligne dans cette table.
* La table CAT_ROUTES ne va contenir que les types de routes. comme dit plus haut, ca evite de surcharger la 1ere table en inserant plusieurs fois "departementale" ou "nationale". si un nouveau type de route devait s'incruster, il suffirait d'ajouter une ligne a cette table
* La table DATA_ROUTES contient les donnees de toutes les routes (identifiees par leur identifiant) pour une annee precise. pour ajouter une annee, il suffira d'ajouter une ligne la dedans.
bon j'espere que tu comprends mieux maintenant.
exemple de table ROUTES :
id / designation / type_cat / num
1 / rn6 / 1 / 6
2 / d78 / 2 / 78
etc...
a noter que l'on pourrait virer le second champs etant donne que c'est une concatenation du libelle route + le numero. comme tu peux le voir, je n'ai mis que la description abregee dans le champs de cette table afin justement d'eviter le doublon
exemple de table CAT_ROUTES :
id_cat / lib_cat
1 / nationale
2 / departementale
etc...
exemple de table DATA_ROUTES :
id / id_route / annee / mja / pl
1 / 1 / 2000 / 150 / 15
2 / 1 / 2001 / 180 / 12
3 / 1 / 2002 / 130 / 8
...
18 / 2 / 2002 / 458 / 36
etc...
voila voila
attends je poste paske je vois rien dans la petite fenetre de reponse rapide...
|
|
| |
Message édité 1 fois, la dernière par grabber le 08 septembre 2006 - 12 h 03. |
| |
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 08 septembre 2006 - 12 h 06 m 51 s |
|
|
bon on continuera apres dejeuner, je file c'est l'heure, vive les fonctionnaires
jettes deja un oeil a ca. si tu veux commencer a aller plus loin, voila ce qu'on va faire :
on va balayer toutes les routes de la 1ere table. pour chaque route, on va aller chercher les donnees de chaque annee dans la 3eme table. ensuite, on va concatener l'ensemble des donnees de toutes les annees pour une meme route dans une chaine $machin. une fois que ce sera fait, on balancera dans le contenu de ta bulle la variable cree
voila ce sera tout, tu vois rien de bien complique, faut juste bien preparer les donnees en amont et le tour est joue.
allez je file, a toute
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 08 septembre 2006 - 12 h 35 m 50 s |
|
|
heureusement que la chaise est sous mes fesses !!!
je suis sur le c _ l
Bon, va falloir prendre le temps de tout lire correctement en intégrant toutes ces informations nouvelles pour moi. Il y a du boulot, les nuits vont être courtes.
|
|
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 08 septembre 2006 - 12 h 53 m 43 s |
|
|
bah lis bien et n'hesites pas a poser des questions, c'est vrai qu'au depart ca peut paraitre barbare voire plus complique que ta version initiale, mais tu verras qu'en utilisant des concepts comme ceux la, tu gagneras toujours sur l'efficacite de tes applis d'une part, mais egalement sur la vitesse, et dernierement sur la "re-usabilite" et les mises a jour
bon, lis bien, moi je mange et on voit la suite cet aprem
++
oliv
|
|
| |
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 08 septembre 2006 - 12 h 54 m 51 s |
|
|
euh cela dit j'ai pas la science infuse, si quelqu'un a une soluce encore plus travaillee, ca ne me derange pas, bien au contraire  c'est toujours interessant de croiser les experiences.
|
|
| |
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 08 septembre 2006 - 15 h 41 m 59 s |
|
|
bon allez on reprend, j'ai 5 minutes
alors imaginons donc que nos tables sont remplies suivant le modele ci-dessus. en relisant d'ailleurs, je pense qu'on pourrait encore simplifier la derniere table, je m'explique....
dans la table DATA_ROUTES, la 1ère colonne, l'id, ne sert a rien, car il correspond a une cle double formee par l'id_route et l'annee. donc on vire la colonne id, je reprend ce qui etait ecrit au dessus pour que ce soit clair...
exemple de table DATA_ROUTES :
id_route / annee / mja / pl
1 / 2000 / 150 / 15
1 / 2001 / 180 / 12
1 / 2002 / 130 / 8
...
2 / 2002 / 458 / 36
etc...
la cle etant formee, je le repete, par le couple id_route / annee, qui par definition ne peut avoir qu'un seul mja et un seul pl
bon alors maintenant, dans notre 1ere table, ROUTES, on a le champs "designation", on va se servir de ce champs comme identifiant de la variable contenant la chaine a afficher (les differentes lignes du tableau).
1er exemple, la designation c'est "rn6", on va donc creer une variable "$rn6", ca tombe bein c pratique !
ensuite, pour cette varaible, on en a l'identifiant, donc on va aller faire une requete qui va aller chercher toutes les lignes dans DATA_ROUTES dont l'id_route correspond à l'id de notre ligne, pis dans la foulee, on va classer ca par annee.
suite a cela, juste un peu de presentation html et on aura reussi a preparer le flux html a injecter dans l'infobulle.
ensuite, touche finale, faudra pour chaque zone de l'image que l'on relie sur une des variables pre-crees
on essaye ?
1.
2. // on va deja boucler sur la 1ere table pour prendre toutes les lignes une par une
3.
4. $req01="SELECT id, designation, type_cat, num FROM ROUTES";
5. $rep01=mysql_query($req01);
6. while ($row01=mysql_fetch_array($rep01)) {
7.
8. // maintenant, on va aller chercher les donnees de la route
9. $req02="SELECT annee, mja, pl FROM DATA_ROUTES WHERE id_route=".$row01['id']." ORDER BY annee DESC";
10. $rep02=mysql_query($req02);
11.
12. while ($row02=mysql_fetch_array($rep02)) {
13. $indice_route=$row01['id'];
14. $route[$indice_route].="année ".$row02['annee']." : MJA=".$row02['mja']." / PL=".$row02['pl']."<br />";
15. }
16.
17. }
18.
voila, avec ca normalement, tu te retrouves avec un tableau de valeurs appele $route[x] ou x correspond a l'identifiant de la route dans la 1ere table
a chaque variable generee correspondant à une seule route, tu as une liste de lignes, 1 ligne par annee, avec les données.
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 12 septembre 2006 - 10 h 34 m 41 s |
|
|
Voilà ou j'en suis :
Pour la CAT_ROUTES :
DROP TABLE CAT_ROUTES;
CREATE TABLE `CAT_ROUTES` (
`id_cat` int(11) NOT NULL,
`lib_cat` char(10) collate latin1_general_ci NOT NULL,
PRIMARY KEY (`id_cat`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
insert into CAT_ROUTES VALUES ("1","Autoroute");
insert into CAT_ROUTES VALUES ("2","VRU");
insert into CAT_ROUTES VALUES ("3","Nationale");
insert into CAT_ROUTES VALUES ("4","Départementale");
Pour la ROUTES :
insert into ROUTES VALUES ("1","GRENAY","4","1006");
insert into ROUTES VALUES ("2","GUINGUETTES","4","1006");
insert into ROUTES VALUES ("3","ST_ANDRE_LE_GA","4","1006");
insert into ROUTES VALUES ("4","AUBERIVES","4","1007");
insert into ROUTES VALUES ("5","ROUSSILLON","4","1007");
un exemple de la table routes.
j'ai préféré mettre le nom de la station dans désignation pour plus de facilité d'utilisation
en ce qui concerne la table DATA_ROUTES, je sèche quand aux valeurs à mettre dans les différents champs. A quoi correspond l'id_route ? à une station en particulier de la table ROUTES. Si c'est le cas, mon id_route n°1 correspond à GRENAY pour lequel je dois rentrer chaque valeur en MJA et PL pour chaque année ?
vite la pharmacie
|
|
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 12 septembre 2006 - 11 h 46 m 19 s |
|
|
oui, l'id route correspond a l'id que tu trouves dans la table "ROUTES" et qui correspond donc a ce que tu appelles le nom de la station 
pour la suite, c'est effectivement cela
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 12 septembre 2006 - 12 h 53 m 41 s |
|
|
|
|
|
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 12 septembre 2006 - 14 h 21 m 31 s |
|
|
mets une dizaine de lignes, fais tourner ton truc et quand ca marche, tu importes un fichier csv que tu fais avec excel direct dans phpmyadmin
|
|
| |
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 12 septembre 2006 - 14 h 21 m 59 s |
|
|
ou balances direct le csv c'est encore plus simple !!!
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 13 septembre 2006 - 08 h 16 m 25 s |
|
|
un problème rencontré : les virgules !!!
quand j'importe les valeurs dans DATA_ROUTES, le chiffre après la virgule n'apparaît pas.
Pourtant je suis en décimal (11,0)
|
|
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 13 septembre 2006 - 08 h 47 m 45 s |
|
|
ah... n'aurais tu pas pris la virgule comme separateur ?
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 13 septembre 2006 - 12 h 17 m 57 s |
|
|
Le 13 septembre 2006 - 08 h 47, grabber a écrit :
ah... n'aurais tu pas pris la virgule comme separateur ?
|
en effet, le problème vient de là.
que puis je prendre d'autre afin d'éviter ce genre de conflit (c'est là que je me rends compte de ma méconnaissance de mysql et des bases de données en général).
|
|
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 13 septembre 2006 - 16 h 35 m 34 s |
|
|
alors quand tu veux enregistrer ton fichier en csv, il y a des options qui te permettent de choisir le separateur, regardes dans tes donnees si tu as des points virgules par exemple. si tu n'en a pas, utilise le point virgule comme separateur et ca roule
sinon le pipe ou autre caractere...
|
|
| |
|
neigerome
Le savoir est la seule matière qui s'accroît quand on la partage.
Messages : 4 318 Inscrit le 07/11/01
Ville : Grenoble
Non connecté
|
|
Posté le 31 octobre 2006 - 08 h 11 m 47 s |
|
|
Pour ce qui est des virgules (% poids lourds) je m'en occuperais ultérieurement en me penchant plus sur ce problème.
Les données ont été intégrées dans la base.
Voilà à quoi ressemble la carto :
http://neigerome.free.fr/comptages_routiers/comptages/nord_isere.html
Comment faire désormais pour relier carthographie et plus particulièrement ses infos-bulles à la base de donnée ?
|
|
| |
Message édité 1 fois, la dernière par neigerome le 31 octobre 2006 - 08 h 20. |
| |
Le monde ne sera pas détruit par ceux qui font le mal , mais par ceux qui les regardent agir et qui refusent d’intervenir. A Einstein
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 31 octobre 2006 - 13 h 04 m 07 s |
|
|
oula, me rappel plus ou on en est.... 
par contre tu vois ca marche pas mal comme ca deja 
je regarde ca cet aprem au boulot 
t'inquietes la t'y est presque...
|
|
| |
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 31 octobre 2006 - 13 h 07 m 06 s |
|
|
juste en passant, colles le javascript dans le head
|
|
| |
|
grabber
Coordinateur
MacBook Pro Powered
Messages : 8 658 Inscrit le 06/03/02
Ville : Angers
Non connecté
|
|
Posté le 31 octobre 2006 - 13 h 08 m 22 s |
|
|
et pour relier, va falloir faire une requete pour chaque infobulle, de fait, les donnees seront dynamiquement importees de ta base, puis le serveur va renvoyer la page statique avec tout ce qu'il faut dedans
|
|
| |
|