Avatar billede kris919g Nybegynder
08. maj 2015 - 16:00 Der er 9 kommentarer

Hvordan kan jeg JSON Data ind i en database?

Hvordan kan jeg JSON Data ind i en database? sidder nemlig med et script som laver JSON data (kan ses her) https://gist.github.com/kris914g/d41d321ee55f8e6e7118
Dataerne som scriptet henter vil jeg gerne have indsat i en database, men hvilken måde er den bedste måde? har læst på nettet at man skal bruge en "JSON_decode" methode, som jeg ikke forstår, har også læst at man kan lave data'en om til en .cvr fil som man skulle kunne indsætte i databasen (tror ikke det er en god løsning) men hvad mener i ville være den bedste løsning? ops i can se Json output her: http://csgo.nssgaming.com/api.php
Avatar billede Slater Ekspert
08. maj 2015 - 16:11 #1
Den bedste måde ville være at bruge en dokument-baseret database, som f.eks. MongoDB, der kan tage JSON-data direkte og optimere det bedre end f.eks. MySQL.

Har du ikke den mulighed, og vil du ikke lave det om til relative tabeller, så kan du sådan set kun indsætte det som en streng i et TEXT felt. Hvis du har din JSON-data som tekst, så skal du ikke gøre noget ved det først, du skal bare indsætte det. Du skal endelig ikke bruge json_decode(), da det laver det om til en PHP array.

Men husk også, at du ikke må søge på indholdet i det felt. Eller... vi kan ikke forbyde dig det, naturligvis, men det ødelægger totalt formålet med en database, og er meget langsomt. Så ingen WHERE json LIKE '%bla bla%'.
Avatar billede kris919g Nybegynder
08. maj 2015 - 17:28 #2
tak for det Hurtige svar, altså søger bare den bedste løsning og hvis det er MongoDB men vil gerne gemme disse dataere, så de kan indsættes på en php side med fedt layout osv, vil dette så stadig være muligt?
Avatar billede Slater Ekspert
08. maj 2015 - 17:44 #3
Helt muligt. MongoDB er en database ligesom MySQL, du tilgår den bare helt anderledes. I stedet for rækker og kolonner, som du nok er vant til, består hvert entry i en MongoDB tabel af et dokument, som sådan set bare er et JSON-objekt - og hvert dokument kan være helt anderledes end de andre, modsat MySQL, hvor hver række skal følge samme skema.

Hvis du vælger det, skal du bare huske:

- Det tager noget tid at installere og sætte sig ind i, da det er helt anderledes at bruge end hvad du er vant til. MongoDB er en såkaldt "noSQL" database, hvilket vil sige den intet SQL-sprog har. Der er ikke noget der hedder SELECT * FROM tabel WHERE... osv.

- Det formindsker portabiliteten af din side meget. De fleste webhoteller med PHP kommer også med en MySQL-database. De færreste har Mongo installeret, og mange giver dig heller ikke muligheden for det. Derfor kan det være meget sværere at få siden hostet og flytte den mellem løsninger.
Avatar billede kris919g Nybegynder
08. maj 2015 - 18:40 #4
Okay tak for svaret! tror jeg vil holde mig til mysql hvis det er mulig, men tænkte på om hvis du kikker på koden jeg link'et til kan det så lade sig gøre hvis man lader vær med at JSON_encode og kan bruge noget andet i stedet, som kan få det ind i en database? som du kan se her indeholder JSON stringet en liste over matches http://csgo.nssgaming.com/index.php og jeg vil gerne have disse matches ind i en database så jeg kan gemme dem. så jeg måske kunne lave en costume side for hver match osv.
Avatar billede Slater Ekspert
10. maj 2015 - 11:03 #5
Ja, du kan sagtens sætte dem ind i et almindeligt tekstfelt i en MySQL, som sagt. Du kan bare ikke indeksere dataene.

Du kan f.eks. bare lave en TEXT kolonne i din database, og sætte JSON'en direkte derind. Hvis det skal struktureres anderledes, må du lige hjælpe med at sige hvordan.
Avatar billede kris919g Nybegynder
10. maj 2015 - 18:05 #6
Det er fordi at denne json strings updateres dagligt fra en list fra hjemmesiden http://csgolounge.com/ som viser hvornår der kommer professionelle Counter strike kampe. og jeg vil gerne gemme disse datere, så jeg kan fremvise dem på en anden hjemmeside. så vil gerne gemme disse datere som fx procenter, hold navne, event, osv. i et table som dette https://docs.google.com/drawings/d/17I7vVRPr9H1EAKJD132meVqXMj1_8tD62LlOlx7NzFg/edit så jeg kan lave en anden liste med noget fedt layout
Avatar billede Slater Ekspert
10. maj 2015 - 20:46 #7
Ah, okay. Jamen ja, så skal du slet ikke gemme det som JSON, men hente dataene ud fra JSON-objektet og gemme dem i en dertilindrettet tabel.

Og ja, så skal du bruge json_decode().

Først og fremmest skal du finde ud af, hvilke af de data du vil beholde, og så designe din tabel derefter.
Hvor meget kender du til SQL databaser? Kan du overhovedet sætte en op, skrive og hente data til/fra den i PHP, osv? Hvis ikke, er det desværre et meget stort spørgsmål at stille her.
Avatar billede kris919g Nybegynder
10. maj 2015 - 21:34 #8
Altså kan godt opsætte en database, har også designet den databasen jeg linkede. og kan også finde ud af at hente data til/fra men har bare aldrig prøvet det med Json, og syntes ikke jeg har kunne finde noget på nettet, som passer til mit tilfælde ;(

men har lavet lidt ændringer i databasen som kan ses her:
https://gist.github.com/kris914g/61dfaf16e2b19463b3de

men ved ikke hvordan jeg skal gribe det an med at få daterende ind fra Json objected ind i databasen.
Avatar billede kris919g Nybegynder
13. maj 2015 - 15:20 #9
har du nogen ide?
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

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