Importation depuis XML

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Importation depuis XML

Re: Importation depuis XML

par Ryle » 26 janv. 2021, 12:31

Salutations !

Il y a plusieurs façon de faire cela et tout dépend du volume de données que tu as en base et à traiter. Si tu traites peu de données à chaque fois, tu peux faire un SELECT COUNT(*) en base pour vérifier si l'enregistrement existe déjà ou non. Si la requête retourne 0, c'est qu'il n'existe pas et tu peux donc réaliser l'insertion, et si elle retourne 1 (ou plus mais il ne devrait à priori pas :)), c'est qu'il existe déjà et dans ce cas, c'est une mise à jour qu'il faut effectuer. Ce select et un simple if/elfe devrait donc te permettre de faire ce que tu souhaites ;)

Idéalement tu préparerais deux requêtes (un insert et un update) et dans le if, tu exécutes celle dont tu as besoin en lui passant les paramètre de l'enregistrement à créer ou à mettre à jour.

L'inconvénient de vérifier l'existence en base à chaque enregistrement, c'est que tu vas faire un select pour chaque enregistrement de ton flux XML. S'il y en a peu à la fois, ça va, si tu en traites par milliers, ça peut faire beaucoup de requêtes envoyées à la base et c'est pas forcément terrible en terme de performance... à voir donc s'il ne faut pas optimiser ce contrôle d'existence en fonction de ton contexte :)

Importation depuis XML

par Droopy_be » 25 janv. 2021, 05:36

Bonjour,

J'ai une routine qui me retourne dans une variable ($tmp) des données au format XML (voir exemples ci-dessous). Fonction que l'article est décliné en différentes tailles (BURP_B2.XML) ou que l'article n'a qu'une seule taille (SXU.XML), la structure des données retournées n'est pas tout à fait identique mais, dans tous les cas, les données que je dois enregistrer sont toujours identiques:
- GTIN (code unique, clef principale)
- French
- SalesPrice

Je suis débutant en PHP et je ne sais pas comment faire cela. Quelqu'un aurait-il la gentillesse de m'aider?

Bien entendu, il ne suffit pas d'ajouter bêtement des enregistrements à la Table, il vaut vérifier si le GTIN existe, si oui, modifier les autres champs et s'il n'existe pas, il faudra le créer.

https://drive.google.com/file/d/1LdYLOE ... sp=sharing
https://drive.google.com/file/d/1Mzkp5p ... sp=sharing

Merci d'avance pour vos réponses,

Stephan