Tävla om valfri Komplett-PC!
Permalänk
Medlem

Taggingsystem i PHP

Jag har ett gäng rader i en databas nu och tänkte utveckla en taggingfunktion så att folk kan kategorisera dessa artiklar. Syftet med detta inlägg är att få lite feedback på vad som kan behövas och vad som kan ändras för att få det så effektivt och funktionsrikt som möjligt redan från början, så att man slipper skriva om det vid ett senare skede.

Min första tanke var att spara taggarna tillsammans med artikeln. Det skulle göra laddningen av sidan snabb, men samtidigt blir det svårt att hantera. T.ex. kan flera människor inte tagga sidan när tag-kolumen/erna är fulla.

Så min nya tanke är nu att varje tag sparas i en tabell där namnet, id samt användarens id sparas. Det gör det enkelt att hämta, lägga till och söka igenom taggarna för en specifik sida.

Att betona de mest populära raderna vore hyfsat enkelt med hjälp av GROUP BY SQL. Det enda jag tvekade kring gällande denna lösningen var hur väl det skalar.

Är det någon som har något bättre förslag? Input någon?

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem

Varför vill du spara användar-ID? Ska användarna kunna ta bort sina taggar i efterhand? Annars är en tabell med artikel-ID, tag och räknare kanske en bättre lösning.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607

Permalänk
Medlem

Phod har en bra tanke, förutsatt att du inte sparar användarID för att försäkra dig om att ingen taggar flera gånger.

Däremot undrar jag... Varför skulle någon volja tagga dina artiklar? Jag skulle aldrig räkna med att någon skulle vilja tagga de som jag skriver iaf. Vad skulle någon få ut av detta?

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Phod
Varför vill du spara användar-ID? Ska användarna kunna ta bort sina taggar i efterhand? Annars är en tabell med artikel-ID, tag och räknare kanske en bättre lösning.

Det är sant, det är en effektivare metod. Men det blir lite svårt att skydda sig från att någon missbrukar systemet. Någon bra ide?

Citat:

Ursprungligen inskrivet av totoo
Phod har en bra tanke, förutsatt att du inte sparar användarID för att försäkra dig om att ingen taggar flera gånger.

Däremot undrar jag... Varför skulle någon volja tagga dina artiklar? Jag skulle aldrig räkna med att någon skulle vilja tagga de som jag skriver iaf. Vad skulle någon få ut av detta?

Artiklar i det här sammanhanget var ett försök i att översätta items, det är inte skrivna artiklar alltså utan "items"

Visa signatur

Let me tell you something. You don't have to say anything, you know why? Cause you can pick up all your stuff, because you're mother-fucking fired! | Lemeno.se - En blogg om att Tjäna Pengar På Internet | Min blogg om styrketräning och kost

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Xenarion
Det är sant, det är en effektivare metod. Men det blir lite svårt att skydda sig från att någon missbrukar systemet. Någon bra ide?

Det beror litet på hur din site fungerar. Om du har en stor site som är öppen för många användare så kanske spam är ditt största problem, men om du har en liten site med en tight användarbas så kanske du vill ha stor kontroll över hur användarna taggar.

En annan lösning kan vara att ha två tabeller:

usertags användar-ID, artikel-ID, tag tagsummary artikel-ID, tag och räknare

När en användare lägger till/tar bort en tag modifierar du båda tabellerna och när en artikel visas läser du endast den andra tabellen. Ett sånt här system med förberäknad data (tabellen med summerade värden) är bra om du har fler sidvisningar än taggningar.

Som sagt, den bästa lösningen beror mycket på hur din site kommer att användas.

Visa signatur

Bra, snabbt, billigt; välj två.

Ljud
PC → ODAC/O2 → Sennheiser HD650/Ultrasone PRO 900/...
PC → S.M.S.L SA300 → Bowers & Wilkins 607