Opret indlæg, gem tags og kategorier

Tags:    php

<< < 12 > >>
Jeg tænkte om ikke I kunne belyse mit spørgsmål omkring at indsætte data i 3 forskellige tabeller

På min side har man mulighed for at oprette et indlæg og derefter vælge op til flere kategorier

Derefter kan man skrive nogle tags der relatere til sit indlæg, hvor 10 f.eks. er maximum.

Her er mit spørgsmål

Når jeg så opretter et indlæg og indsætter først indlæg i "Posts" tabel derefter indsætter den 10 nye rows i "PostsTags" og efterfølgende "PostsCategories"

Er det en dårlig måde at gøre det? En forspørgelse kan jo komme til at køre et indsæt script der indsætter 15 gange på samme tid?

Jeg vil nemlig gerne undgå at kun at gøre brug af Posts og derefter have en row der hedder tags og kategori og derefter separere dem ved at bruge et komma. Ved at have 3 forskellige kan jeg også søge efter tags eller kategori

Håber I forstår, ellers vil jeg gerne forsøge at uddybe mig anderledes :-)

Hav en dejlig Fredag.



13 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Det er kun kompliceret indtil du forstår logikken. :)

Nu har jeg bare brugt den navne standard jeg normal benytter, så du må lige tilpasse.
Fold kodeboks ind/udSQL kode 






Indlæg senest redigeret d. 09.03.2016 00:02 af Bruger #10216
Hvis du har en category, skal du kun ændre et sted. Har du 100 ens category, skal du ændre 100 steder, når du vil lave en tilretning.

Jo mere ens data du har, jo mere data skal du tilrette for at alle steder er ens. Samme gælder for din kode. Jo flere steder du gentager den samme funktion, jo flere skal du tilrette for at den funktion fungere ens hver gang.

Meget enkelt.



Ingen der har stået i denne situation før?



Det er den rigtige måde. En tabel for hver entity type.

Du kan dog sagtens lave flere data inserts i et SQL kald.

Fold kodeboks ind/udSQL kode 




Også selvom jeg indsætter 30 gange, hvis der nu er 20 tags og 10 kategorier?



Jeps. også selv om du gør det.

Men det gør du heller ikke. Teori er en ting, praksis er noget andet. :)

I bund og grund handler det om at du normaliserer din database mest muligt.
Genbrug af data på tværs af alle entiteter.

( Hvor det giver mening )




Indlæg senest redigeret d. 07.03.2016 19:36 af Bruger #10216
OKay, det giver mening, men jeg skal lige hurtig opsummere.

Jeg har tabellerne, hvor jeg indsætter x antal nye rows, hver gang jeg opretter et indlæg

Posts = 1 nyt row
PostsTags = 10 nye rows
PostsCategories = 4 nye rows

( Rows kan være forskelligt afhængig af hvad brugeren vælger i indlægget )

Hvis jeg gør som du siger, vil det være den korrekte måde og ikke være med til at gøre systemet langsomt osv?

På forhånd, tak fordi du har taget tid til at besvare mine spørgsmål :-)



Det er næsten rigtigt.

Du skal have tre primære tabeller og 2 sammenkoblinger.

- Post
- Tag
- Category

Dertil har du koblingstabellerne ( kan ikke huske fagudtryk. )

- PostTag
- PostCategory


Når du så gemmer har du følgende SQL kald.

- 1 til Post
- n til Tag ( hvis ikke allerede eksisterer, men du ved allerede hvilke nye Tag du skal oprette. )
- n til Category ( hvis ikke allerede eksisterer, men du ved allerede hvilke nye Category du skal oprette. )

og

- n til PostTag
- n til PostCategory


Og du gør det fordi flere Post kan dele samme Tag og Flere Tag kan dele samme Post
Samme gælder for Category.



Indlæg senest redigeret d. 08.03.2016 10:58 af Bruger #10216
Uha, nu blev det lidt mere kompliceret

Det jeg havde forestillet mig var at..

Jeg har tabellen post som har et id

Derefter har jeg PostTags og PostsCategorie som hver har en postid

Når jeg indsætter 10 tags vil de have postid = post for at finde ud af hvilke tags der er gjort brug af.

Det samme med kategorie

- Ærlig talt er jeg lidt i tvivl lige nu.. Har du mulighed for at vise det ved hjælp af noget kode?

På forhånd tak! :-)



Okay, jeg kan godt se logikken nu..

Men

Hvorfor har du en tabel der hedder Tag og Category?

Jeg tænkte det her ville være bedre:

EDIT:

Glemte lige at skrive en forklaring - Så spare jeg nemlig at skulle indsætte noget i Tag og Category, fordi jeg skal jo alligevel indsætte 10 nye rows i PostsTags lige meget hvad.. ?

Fold kodeboks ind/udSQL kode 


Jeg har måske dummet mig lidt, ved ikke at fortælle, at det er et bruger system, så der er mange andre brugere der vil være på sitet og bruge de forskellige tags. Der tilføjer jeg jo bare "userid" for at sikre mig at brugeren kun ser sine egne post, men det burde ikke have betydning for den logik du har tilsendt, burde det?

Det jeg tænker er lidt ala et sytem, som Wordpress har, da man kan tilføje tags og kategorier til sit indlæg :-)

Og mange tak fordi du bruger din tid på at hjælpe! :-)




Indlæg senest redigeret d. 09.03.2016 13:35 af Bruger #17509
<< < 12 > >>
t