begin process at 2012 05 30 12:32:32
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Base de données

 > 

MySQL

 > 

Création bdd à partir d'un fichier XML


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Création bdd à partir d'un fichier XML

mardi 8 décembre 2009 à 22:23:24 | Création bdd à partir d'un fichier XML

kaya57200

Bonjour,

Je souhaite créer ma base de donnée ( création des tables + remplissage des champs ) à partir d'un fichier XML qui pourra être modifié.

C'est le seul point noir de mon projet de commerce électronique.

Merci d'avance pour vos idées.
mardi 8 décembre 2009 à 22:49:12 | Re : Création bdd à partir d'un fichier XML

neigedhiver

Salut,

Que souhaites-tu faire précisément ? Pourquoi le fichier xml doit-il pouvoir être modifié ? Pour recréer la base, la modifier... ?
Sinon, qu'est-ce qui te bloque exactement ? C'est en fait une manière de demander ce que tu demandes :) Parce que là, en l'état, je ne vois pas bien quel genre de réponse tu attends, comment on peut t'aider...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mardi 8 décembre 2009 à 23:31:21 | Re : Création bdd à partir d'un fichier XML

kaya57200

En fait je veux créer un site internet de commerce élécronique où les données sont complètement séparées du code php.

L'idée c'est donc de décrire les produits avec leur appartenance à des rubriques dans un fichier XML

Un produit peur avoir différents attributs par exemple libelle, descriptif, prix, unité de vente etc... C'est différents attributs ne sont pas forcement toujours les mêmes.

La lecture de ce fichier doit donc me permettre de créer les tables MySQL produits, rubriques, etc... et de les remplir.

En fait je veux pouvoir tester mon site internet avec n'importe quel genre d'objet qui sera vendu sur mon site.

Le seul problème c'est que je ne vois pas comment me servir du XML en utilisant PHP5.

J'espère que j'ai réussi a mieux définir le problème...

mercredi 9 décembre 2009 à 00:09:58 | Re : Création bdd à partir d'un fichier XML

neigedhiver

Euh non, pas vraiment... :/
Je ne vois pas en quoi le fait que les attributs (caractéristiques ?) puissent varier d'un produit à l'autre t'oblige à créer de nouvelles tables en fonction des produits. Si la base est correctement conçue, il doit être possible de gérer des produits avec des caractéristiques très variées, même si elles ne sont pas les mêmes pour tous les produits, et ce sans créer de nouvelle table.
Les tables d'une base de données ne doivent JAMAIS (c'est un principe fondamental de l'administration de base de données, de conception et d'analyse dans un projet) être créées ou modifiées par le programme. JAMAIS. C'est mal. Si tel devait être le cas, alors l'application serait mal conçue.
Création/modification/suppression de tables dans une base sont des opérations d'administration. Une table peut être modifiée si besoin est pour suivre l'évolution du programme, certes, mais pas pour gérer un nouveau produit.
Bon j'arrête là mon speech.

Peux-tu être plus précis quant aux attributs des produits en question ? Peux-tu donner des exemples ? A partir de là, on verra comment il est possible de faire une base qui n'a pas à être modifiée pour accueillir de nouveaux produits (parce que c'est forcément faisable, mais il me faut plus d'informations).

Quand tu dis :

je veux pouvoir tester mon site internet avec n'importe quel genre d'objet qui sera vendu sur mon site.


Est-ce que tu veux dire que tu ne sais pas encore quel genre de produit tu vas vendre ? Même ça ce n'est pas un obstacle : une application eCommerce permet de gérer quasiment n'importe quel produit, il suffit de voir que des solutions comme OSCommerce, Plici, Prestashop ou autre ne demandent pas de recréer la base de données pour permettre de vendre à peu près tout et n'importe quoi.

Je te garantis qu'il existe des solutions pour ne pas avoir à s'emmerder à créer de nouvelles tables pour gérer tel nouveau produit qui a des caractéristiques qui lui sont propres : j'ai bien une idée en tête, mais j'aimerais avoir plus de détails pour être sûr que je suis dans le bon.

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 9 décembre 2009 à 00:24:39 | Re : Création bdd à partir d'un fichier XML

kaya57200

En fait, j'ai déjà ma table produit avec des champs fixes

-id_produit
-libelle
-descriptif
-prix
-unite de vente

Ces attributs du produit seront obligatoires dans mon fichier XML, cependant il pourra y avoir des champs optionnels supplémentaires comme :
- image
- année
- marque

Mon prof de Web va donc entrer son fichier XML pour tester si mon site est suffisament générique. Ici ca ne correspond biensur pas à la réalité car si j'avais un vrai site à faire je saurais pour quel produits je le fais ^^

Les produits peuvent a partir a plusieurs rubriques : p.e une fourchette peut faire parti de la rubrique cuisine comme déco ( c'est un exemple )

Via l'interface admin de mon site je dois donc pouvoir créer les tables produits, rubriques et rubriques_produit dynamiquement en fonction des informations présentes dans le fichier XML.

Mon problème est donc: comment lire le fichier XML pour créer les tables avec les bons champs et ensuite remplir ces tables. Je n'ai que le droit d'utiliser AJAX, Javascript, PHP et MySQL

J'espère avoir été un peu plus clair
mercredi 9 décembre 2009 à 00:52:07 | Re : Création bdd à partir d'un fichier XML

neigedhiver

Ca confirme ce que je pensais. Il ne faut pas faire comme ça, ce serait une erreur d'analyse.
Quand je parle d'admin, je ne parle pas d'administration du site, mais de la base de données. Ce sont deux choses différentes : l'admin du site correspond au fonctionnement normal de l'application, à l'intérieur duquel la base ne DOIT PAS être modifiée (sous aucun prétexte), alors que l'administration de la base de données correspond à une phase de développement ou de maintenance de l'application (mais pas du site), dans laquelle la modification de la base de données est possible, puisque s'intégrant dans un processus d'amélioration de l'application.

Ce que tu dois faire, c'est considérer les attributs de tes produits comme des données que tu associes à chaque produit. C'est la relation attribut-produit qui détermine si le produit possède tel ou tel attribut.

Définissons une table produits basique comme celle que tu as décrite :
PRODUITS
- produit_id
- produit_libelle
- produit_descriptif
- produit_prix
- produit_unite

Définissons maintenant ce qu'est un attribut :
ATTRIBUTS
- attribut_id
- attribut_nom

C'est à peu près tout. Un attribut, en lui-même, n'est pas besucoup plus que ça.

Si tu vends des claviers d'ordinateur, tu as besoin d'indiquer des caractéristiques qui ne sont pas communes à tous les produits, comme par exemple :
- marque
- connectique
- multimédia

Tu vas insérer de nouveaux enregistrements dans la table attributs. Bien. Maintenant, pour savoir quel produit possède quel attribut, il faut faire une relation entre les deux. Cette relation permet donc de définir quel attribut possède un produit : elle doit nécessairement indiquer la valeur de l'attribut. En analyse, on appelle ça une propriété portée, et la relation attribut-produit est une relation n,n : un même produit peut avoir plusieurs attributs, un même attribut peut être associé à plusieurs produits. Concrètement, dans un MLD (Modèle logique de Données dans la méthode Merise), la relation attribut-produit est représentée comme ceci :
ATTRIBUT-PRODUIT
- attribut_id
- produit_id
- attr_valeur
La clé primaire étant la concaténation des deux ID attribut_id et produit_id

Reprenons l'exemple des claviers. Dans la table produits, on aurait quelque chose comme ça :
produit_id produit_libelle produit_descriptif produit_prix produit_unite
1 Clavier 105T Logitech Blabla du clavier génial 30 -
2 Clavier Sans Fil Blabla multimédia tout ça 60 -
3 Clavier lumineux Luminosité réglable blabla 80 -

Dans la tabe attributs, on aurait :
attribut_id attribut_nom
1 marque
2 connectique
3 multimedia

Enfin, la table matérialisant la relation attribut-produit comporterait :
attribut_id produit_id attr_valeur
1 1 Logitech
2 1 USB
3 1 Non
1 2 Microsoft
2 2 Sans fil
3 2 Oui
1 3 Logitech
2 3 USB
3 3 Oui

Lorsque tu récupères les informations sur un produit, une jointure sur la table de relation et la table attributs te permet de récupérer par la même occasion les différents attributs spécifiques à ce produit ainsi que sa valeur (marque Logitech, connectique USB, etc).

Cela rend ta base de données suffisament générique pour pouvoir gérer n'importe quel type de produit. Si la relation entre un produit et un attribut n'existe pas, alors c'est que ce produit n'a tout simplement pas cet attribut. Sinon, la valeur est définie dans la propriété portée attr_valeur.

Ton prof n'a pas à "injecter" un fichier XML pour vérifier que ta base est suffisament générique : la simple utilisation de l'interface d'admin permet de le vérifier, de même que la consultation du MCD, du MLD et du MPD.

Est-ce que mon explication à moi est plus claire comme ça ?

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 9 décembre 2009 à 00:52:49 | Re : Création bdd à partir d'un fichier XML

neigedhiver

Arf, crotte, les espaces ont été virés dans mes exemples de données... :/

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 9 décembre 2009 à 00:55:56 | Re : Création bdd à partir d'un fichier XML

neigedhiver

Je reposte les exemples de données avec des espaces correctes :

Code :
produit_id  produit_libelle         produit_descriptif           produit_prix   produit_unite
1           Clavier 105T Logitech   Blabla du clavier génial     30             -
2           Clavier Sans Fil        Blabla multimédia tout ça    60             -
3           Clavier lumineux        Luminosité réglable blabla   80             -


Code :
attribut_id   attribut_nom
1             marque
2             connectique
3             multimedia


Code :
attribut_id   produit_id   attr_valeur
1             1            Logitech
2             1            USB
3             1            Non
1             2            Microsoft
2             2            Sans fil
3             2            Oui
1             3            Logitech
2             3            USB
3             3            Oui 


Ouais, c'est mieux là... ^^

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)
mercredi 9 décembre 2009 à 01:00:18 | Re : Création bdd à partir d'un fichier XML

kaya57200

Oui je comprend très bien ce que tu ma expliqué et je vais dailleurs créer les tables que tu ma conseillé.

Cependant mon prof va vraiment tester mon site en utilisant son fichier XML, je dois donc vraiment mettre une fonctionnalité dans mon site qui permettrai de le rempli. Si je ne le fais pas c'est 0 ^^

Maintenant je ne vois toujours pas comment utiliser un fichier XML en php, j'ai lu quelque truc dans la doc mais j'ai pas compris grand chose.
mercredi 9 décembre 2009 à 01:04:03 | Re : Création bdd à partir d'un fichier XML

neigedhiver

Faudrait savoir à quoi ressemble son fichier XML, alors...
La moulinette qui va le digérer pour le recracher dans ta base de données se contentera d'insérer des données, mais il faut savoir ce que contient son fichier. As-tu un exemple ?

Pour l'heure, dodo...

--
Neige

Souvent la réponse à votre question se trouve dans la doc. Commencez par là ;)

1 2 3 4

Cette discussion est classée dans : fichier, partir, bdd, création, xml


Répondre à ce message

Sujets en rapport avec ce message

comment creer un fichier xml dynamiquement [ par redemption ] salut a tous. je vous fait deja part de mes trouvailles sur le net un ami me file ce lien et m'explique de recuperer uniquement ce qui m'interesse. je Comment récupérer une bdd dans un fichier xml ? [ par satellite34 ] Bonjour,je me lance dans le développement d'une application ( c++ (ne fuyez pas!!!!!) ), lié a un site;je m'explique :ce serait une apli de gestion de Mettre àjour ma BDD à partir d'un fichier csv [ par ldevun ] Bonjour,Je suis chez online.net et je souhaite mettre à jour ma BDD à partir d'un fichier csv. Comment puis-je faire?Merci de vos réponses. générer un fichier XML à partir de mySQL [ par Migs ] Bonjour, je voudrais savoir s'il est possible de créer un fichier XML directement à partir de mySQL par le biais de procédures stockées. Je ne souhait création de miniatures à partir d'une bdd [ par fornatus ] Bonjour j'aimerais connaitre le code permettant de créer une galerie de miniatures d'images (256*192 px, 5images par lignes) à partir d'images dont le Parser XML à partir d'un DTD externe [ par sokyra ] Bonjour, Je dois vérifier la cohérence d'un fichier XML par rapport à un fichier DTD. Or ce fichier XML ne contient pas de balise <!DOCTYPE . Dan Gènèration d'un fichier XML a partir d'une formulaire PHP [ par sonia5 ] Bonjour tout le monde,est-ce que quelqu'un aurait une idée de comment, à partir d'un formulaire, je pourrais générer un fichier XML où je dois stocker Générer un fichier XML, à partir d'un ficheir XSD [ par j3r3m067 ] Slt à tou(te)s Je cherche un moyen de créer sous PHP4 et PHP5 un fichier XML à partir d'un fichier XSD. je suis ouvert à toute proposition (à ce sujet création de fichier ou BDD ou autre ? [ par anthony428 ] Bonjour à tous, je viens vers vous pour avoir un conseil afin de choisir la meilleure solution possible. J'ai une BDD dans laquelle je stock toutes l Zipper un fichier a sa création [ par TheGoat ] Bonjour, Comme l'indique le titre de l'article, je veu que lors de la création de mon fichier (fichier csv), ce dernier soit automatiquement zipper à


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,154 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales