Jeg har en billedside. Mit spørgsmål er hvordan jeg skal gemme keywords i databasen. Skal jeg gøre det på følgende måde: Gemme dem i et indlæg og adskille ordene ved hjælp af komma således: keywords: summer,hot,weather,heat,ice cream. Eller hvordan plejer man at gøre?
Hej Jens og Jakob. Jeg tror ikke helt jeg er med på jeres forklaring? Men det ser rigtigt ud. Kan i prøve at forklare lidt nærmere? PÅ forhånd mange tak
Sådan ser min indsæt ud normalt når alle keywords kommer i et felt adskilt af komma:
mysql_query("INSERT INTO images (date, keywords, ) VALUES (NOW(), '$keywords', )") OR DIE(mysql_error());
Hvordan skal den se ud nu? JEg har oprettet en tabel ved navn keywords.. Det må være noget med at den skal lave en entry i keywords tabellen. Men hvordan finder jeg id på det nye entry og inkludere det i image-tabellens keyword felt?
Puha det lyder svært, men jeg håber jeg kan få det til at virke. Kan du komme med et kodeeksempel eller er det for meget at forlange? Jeg smider gerne flere points ind..
Hov - der var jeg ikke lige til stede. Jakob rammer vist ret præcist hvad jeg ville have svaret. Nogle gange kan det hjælpe at få samme ting forklaret på to måder, så jeg forsøger mig også:
Idéen er, at du har en tabel - lad os kalde den images - som indeholder én record pr. billede. Hvert billede identificeres unikt. For nemheds skyld antager jeg, at der er et id-felt:
images: id, file, desc
Hver record indeholder dog ikke data om keywords. De gemmes i en separat tabel - lad os kalde den (surprise) keywords:
keywords: id, keyword
Humlen er så, at en relationstabel knytter images-record med keywords-records via de to id'er:
Nu er jeg ikke sikker på, at nedenstående er korrekt, men håber, at det måske kan kaste lidt lys over, hvordan jeg tænker, at keywords kan udtrækkes for et billede. (Jeg føles, at jeg _virkelig_ er ved at dumme mig med utestede forespørgsler, men brug det hvis du kan :)
SELECT i.*, k.keyword FROM images AS i LEFT JOIN images_keywords_mm AS mm, keywords AS k ON i.id = mm.i_id AND mm.k_id = k.id WHERE i.id = [billed-ID]
tobias_lou > Ja, jeg er tilbøjelig til at give dig ret, hvis det drejer sig om en lille billedmængde. Der er dog en grund til, at man normaliserer data i DB'er. Det sparer plads og DBMS'er er optimeret til at forespørge på den slags data. Det vil altid kunne gøres til genstand for diskussion.
Joh, men denne henvisning kan du jo lave direkte i tabellen med keywords, så hvorfor ikke bare gøre det? Jeg kan ikke helt forstå, hvorfor man skulle gøre det på den anden måde med en ekstra tabel, der knytter de to sammen.
Nåh, nu forstår jeg... Altså her taler vi om, at vi kun har DE keywords, der er brug for. Altså at summer ikke optræder flere gange. Og så kæder vi dem sammen...
Smart! Det havde jeg sgu ikke tænkt på :P Det er næsten mig, der skylder en omgang points, for her lærte jeg også lige noget :-)
haha, fedt Tobias :-) Så mangler vi kun lige at jeg forstår ;-P
Jens: Jeg kan godt et eller andet tåget sted i min hjerne fornemme at det er rigtigt. Men hvordan gør jeg det rent praktisk i en upload og i en søgning hvor billederne skal findes? Det er et godt spørgsmål ;-)
Hmm, hvad er det helt præcist, du ikke kan finde ud af?
Punkter: 1. Du vil uploade billedet, og så tildele keywords? 2. Du kan ikke strukturere din sql på den måde, der skitseres? 3. Du kan ikke lave et script, der søger på dem?
Strukturen er forståelig. Jeg kan også godt finde ud af at uploade billeder ;-P Men hvis jeg skriver i et tekstfelt: hot,summer,ocean,water. Så skal ordene vel adskilles på en måde indsættes i keywords databasen hvis de ikke allerede er oprettet og så skal billedet og keyword id på en måde tilknyttes...men jeg kan ikke se det for mig rent kodemæsssigt...
( Først lidt sjov at deltage i to samtaler med dig samtidig jf. http://www.eksperten.dk/spm/813002 ) Du vil vist lave et uploadscript til billeder, hva? :P
MEN back to subjekt: Altså når du modtager fra tekstfelt, sendt fra en form, kan du bruge explode til at skille keywordsne ad, fx med $keys_arr = explode(",", $_GET["keys"]) Ekselpel på input: "ice cream,hot,summer"
Tobias: Jeg har lavet et uploadscript men jeg gjorde ikke brug af gd lib, og skulle derfor selv genere thumbnails og det ville derfor være skønt hvis jeg kunne få det til at virke automatisk. Anyways tak for explode-hintet. Jeg må prøve mig frem ;-P
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.