Avatar billede Springform Nybegynder
03. juli 2010 - 11:21 Der er 9 kommentarer og
1 løsning

indsæt xml i mysql

Mit problem er at jeg aldrig har leget med xml, så derfor søger jeg alt den hjælp jeg kan få om det er en kodestump, et link, en guide, eller fortæl mig det ikke kan lade sig gøre.

Det jeg drømmer om at få lavet er at man først vælger hvilken leverandør det er, og så uploader man sin xml fil og så bliver det sat ind i databasen.

Grunden til at jeg vil vælge leverandør er at xml filerne er bygget forskelligt op men har samme indhold, så de skal læses forskelligt og vil gerne have det ind i samme tabel i databasen.

Alt det med upload osv. kan jeg godt, det er mere det med at læse og indsætte dataen alt efter leverandør.

Håber det kan løses med php/javascript.
Avatar billede arne_v Ekspert
03. juli 2010 - 17:20 #1
MySQL har ikke en speciel XML data type, så du skal bare erklære den som VARCHAR eller TEXT og så indsætte helt normalt.
Avatar billede Springform Nybegynder
03. juli 2010 - 18:43 #2
Det var min fejl, man skal ikke uploade, man skal bare give et link til xml-filen, og så skal de forskellige data fra xml-filen ind under de respektive rækker i database tabellerne,fx. pris under pris, størrelse under størrelse osv.
Avatar billede arne_v Ekspert
03. juli 2010 - 18:59 #3
Så skal din PHP kode hente XML, parse den og indsætte i der rigtige tabeller/felter.
Avatar billede Springform Nybegynder
06. juli 2010 - 12:13 #4
Jeg er helt grøn når det kommer til håndtering af xml. Lad os tage et eksempel på det jeg gerne vil

xml filen:
<notes>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>

<note>
  <to>preben</to>
  <from>erik</from>
  <heading>Kagedag</heading>
  <body>Bag en kage hvor der står hej på toppen</body>
</note>
</notes>

Så vil jeg gerne have fyldt dem ind i hver sin række i min tabel,

CREATE TABLE notes(
id INT AUTO_INCREMENT PRIMARY KEY,
til VARCHAR(20),
fra VARCHAR(20),
overskrift VARCHAR(50),
indhold TEXT
)

XML filen skal hentes via en URL, der vil så løbende komme xml-filer fra forskellige leverandøre, med forskellige alias for dataen, men skal ind i samme tabel, så det skal være lige til at redigere.

Håber der er en der kan hjælpe mig.
Avatar billede arne_v Ekspert
06. juli 2010 - 15:34 #5
enten laver de en file upload eller du henter en URL
saa har du en XML fil
den parser du
for hver note element udfoerer du en insert i databasen

http://www.eksperten.dk/guide/1263

gennemgaar forskellige maader at parse en XML fil paa - proev og laes den og spoerg saa hvis det stadig er uklart.
Avatar billede Springform Nybegynder
06. juli 2010 - 16:27 #6
utroligt det ikke var svære, så forhindringer i stedet for muligheder. Men rigtig god og let forståelig artikel.

Jeg har bare lige et spørgsmål og det er om man ville kunne lave det med procedural programmering i stedet for objekt orienteret?

Hvis du sender et svar afsted kvittere jeg med en bunke point og en stor tak :)
Avatar billede arne_v Ekspert
06. juli 2010 - 16:35 #7
Alle de XML API'er er primaert objekt orienterede. Jeg kan ikke lige umiddelbart komme i tanke om en god procedural tilgang.

Men er det et problem?

Brugen af disse objektorienterede API'er er ikke saa svaert.
Avatar billede arne_v Ekspert
06. juli 2010 - 16:35 #8
og et svar
Avatar billede Springform Nybegynder
06. juli 2010 - 16:44 #9
det er SimpleXML løsningen jeg vil høre om kunne laves som procedural
Avatar billede Springform Nybegynder
06. juli 2010 - 16:45 #10
så ikke lige du havde svaret.

Nej det er ikke et problem så længe man kan blande oop og pp, har jeg ikke prøvet før så blev i tvivl om man kunne det, men ser ud til at fungere fint!

Endnu engang tak for hjælpen og her er dine velfortjente point
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester