Création liste déroulante html avec PHP + XML - PHP - Programmation
Marsh Posté le 10-02-2009 à 14:05:45
Hello,
Question: pourquoi utiliser un fichier xml ? Est-ce une contrainte qui t'es imposée ?
Si tu peux faire autrement, pourquoi ne pas passer par une BDD qui te simplifierait le requetage, et qui reste tres simple a mettre a jour...
Marsh Posté le 10-02-2009 à 14:16:50
Je me suis dit que mettre ces infos dans une base de données surchagerait ma base (26 régions, 95 département, 36000 villes, approximativement) et c'est donc dans un soucis de légèreté que j'ai choisi cela.
Vu que aussi, au niveau mise à jour, les régions et département ne sont pas en passe de changer je trouvais cette solution plus intéressante mais après il est vrai que toutes ces données vont surcharger mon serveur!
Maintenant que cela est dit, que penses-tu être la solution le plus adapté et la moins lourde en terme de traitement et de poids ?
Merci
Marsh Posté le 10-02-2009 à 14:30:07
D'accord avec toi que ces données ne vont pas bcp changer.
Mais le surcout de lire le fichier a chaque fois pour aller denicher les infos dont tu as besoin est a mon sens pas utile.
Une BDD correctement constituée t'eviteras la lecture et le parcours du fichier a chaque fois que l'utilisateur fera une recherche.
table regions : id, region_nom
table departements : id, region_id, departement_nom
table villes : id, ville_nom
Tu peux facilement en tirer ce qu'il te faut pour populer tes listes dynamiques
Marsh Posté le 10-02-2009 à 14:32:39
Donc pour toi, c'est plus optimisé d'utiliser une base de données ?
Si tel est le cas, je m'y mets !
Je te remercie pour ton aide et ta proposition.
Marsh Posté le 10-02-2009 à 15:45:04
si tu utilises SAX pas trop de soucis de performance (SAX est séquentiel), mais franchement la syntaxe est pas terrible...
Marsh Posté le 10-02-2009 à 16:07:47
axelandre a écrit : Je me suis dit que mettre ces infos dans une base de données surchagerait ma base (26 régions, 95 département, 36000 villes, approximativement) et c'est donc dans un soucis de légèreté que j'ai choisi cela. |
S'il suffit de 36000 enregistrements pour surcharger ta base alors t'as un gros problème de serveur. Même access est capable de s'en sortir sans lenteur avec cette quantité de donnée.
Si on prend l'exemple de mysql, on peut aller sans crainte jusqu'au milliard de lignes, à condition d'avoir assez de place sur le disque , et d'autres logiciels sont meilleurs que mysql sur ce genre de volumes.
axelandre a écrit : Vu que aussi, au niveau mise à jour, les régions et département ne sont pas en passe de changer je trouvais cette solution plus intéressante |
Ca par contre c'est une raison valable.
A noter que pour les données qui ne changent jamais, mysql propose les tables de type "archive" ("update" impossible donc table optimisé pour la lecture)
axelandre a écrit : mais après il est vrai que toutes ces données vont surcharger mon serveur! |
tu veux dire en les mettant dans des fichiers je supposes.
axelandre a écrit : Maintenant que cela est dit, que penses-tu être la solution le plus adapté et la moins lourde en terme de traitement et de poids ? |
Sans hésiter, je dirais que oui mais pas forcément pour des questions de vitesse.
Pour la base de donnée côté vitesse :
Contre la base de donnée côté vitesse :
Au final, il est difficile de dire que telle ou telle solution sera meilleure côté vitesse dans tous les cas. Par contre la facilité de traitement des données qui sont mises dans la base contre balance généralement les risques de lenteur (et c'est surement pas un select sur la table des villes qui mettra le serveur à genoux).
Par exemple si on pense en terme d'intégrité des données. Si t'as la liste des villes dans ta base, tu peux dire que telle personne habite dans la ville d'id 32. Ensuite quand une ville change de code postal ou de nom, il te suffit de modifier l'enregistrement de la ville et tout ceux qui y habitent profitent automatiquement du changement.
Si tu as les villes dans un fichier, alors tu seras obligé soit de dupliquer les données dans la base au fur et à mesure des besoins ce qui ferait double emploi, soit de mettre le nom de la ville et le code postal dans la base pour chaque personne/adresse. Dans ce dernier cas, si une ville change de nom, alors tu es obligé de modifier manuellement tous les enregistrements en espérant ne pas en oublier.
C'est pour ça que c'est sans hésitation que je te conseille de stocker ces données dans la base.
Marsh Posté le 10-02-2009 à 20:51:00
ReplyMarsh Posté le 11-02-2009 à 14:54:02
Je ne comprends pas le stockage de donnée par xml
Parser un XML revient à faire un full scan sur une table en DB, soit la pire chose qui puisse arriver.
Les seules raisons d'utiliser de l'XML sont pour moi :
-la communication entre 2 systèmes hétérogènes
-l'edition de fichiers de config par des non-dev (et encore, un .ini c'est ptet mieux si de toute façon c'est ouvert par un éditeur qui ne valide pas l'xml)
Pour le reste -> db
Marsh Posté le 10-02-2009 à 14:03:01
Bonjour à tous,
je suis actuellement en train de créer plusieurs listes dynamiques entre elles.
Il y aune liste pour les régions, une liste pour les départements et enfin une liste pour les villes.
J'ai utilisé le XML pour alimenter les futures listes HTML.
J'ai déjà créé deux fichiers XML pour la liste des régions et celle des départements.
Maintenant je voudrai afficher les données du fichier XML des régions dans une liste déroulante HTML.
J'ai trouvé un code sur le net que j'ai retravaillé pour arriver à afficher le contenu du fichier XML.
Mais le souci c'est que le code m'affiche bien les régions mais en revanche je n'arrive pas
à faire en sorte qu'il les affichents sous forme d'une liste déroulante.
Si quelqu'un a une solution je suis preneur !
Voici la forme de mon fichier XML :
Ensuite voici le code php qui permet de récupérer les données du fichier XML :
J'espère que j'ai été suffisament clair et je vous remercie d'avance pour votre aide.