webForumDet fria alternativet

Bilduppladdning, sedan koppling till DB

PHP

7 svar · 442 visningar · startad av nummersju

Medlem sedan aug. 2005198 inlägg
Frågan#1

Hej hej igen :P
Jag har läst lite om att ladda upp bilder med php och mysql. Överallt läser jag om att det är dåligt att spara bildern i en databas och att man istället ska ladda upp det till server.
Nu är det så att jag vill kunna ladda upp en bild tillsammans med text, typ namn och ålder. Då kan man ju lätt skicka upp bilden via ett uppladdningscript och samtidigt skicka namn och ålder till en databas.
Men hur gör jag för att kunna koppla bilden som jag just skickade upp till databasen? Så att jag med bara ett id kan hämta bild, namn och ålder...

Hoppas någon kan hjälpa mig att koppla bilden... har försökt lite själv, men jag fixar det inte.

Tack tack

Medlem sedan jan. 20023 327 inlägg
#2

Jag hade gjort på följande vis...

Table images
- id
- name
- age
- url

Där url är sökvägen till din bild. Inte så utförligt förklarat men jag hoppas att du förstår vad jag menar? Sedan skulle du enkelt kunna hämta en bild med hjälp av ett id. Pseudo: SELECT name, age, url FROM images WHERE id = 7

Medlem sedan aug. 2005198 inlägg
#3

Jo men hur får jag iväg url (sökvägen) till bilden in i tabellen images när jag skickar upp bilden på servern? Det är där problemet ligger...

/r Tack för ett gött försök!

Medlem sedan maj 2005562 inlägg
#4

antar att du har sökvägen till bilden via uploadskriptet ?
när du laddar upp bilden sparar du den väl nånstans ?

Medlem sedan jan. 20023 327 inlägg
#5

Nu vet jag inte hur ditt script ser ut och hur det exakt fungerar men det ska inte vara allt för svårt att få fram namnet på filen och sökvägen till mappen där den laddas upp. Jag antar att du har ett förbestämt ställe dit filen laddas upp? Där har du sökvägen. Namnet på bilden borde du kunna få tag på med hjälp av uppladdningsformuläret, dvs när det har skickats.
Sökvägen = sökvägen som finns i uploadscriptet + namnet på bilden

Att sedan få in detta i tabellen borde inte heller vara ett problem. Du får helt enkelt göra en insert direkt efter att filen har laddats upp.

Tillägg: Sökvägen måste vara unik, vilket kan vara ett problem om du laddar upp en bild med ett filnamn som redan är använt. Jag skulle nog försöka komma runt detta med att antingen med hjälp av php byta namn på filen automatisk genom att exempelvis namnge filen med sitt id eller namn-på-filen + id, dvs minbild1 osv.

Om du har alla bilder på samma ställe så kan det vara onödig att spara hela sökvägen till varje bild, det blir väldigt rendundant om du har många filer. En annan lösning kan vara att föredra, exempelivs spara du endast namnet på bilden i databasen och så här du sökvägen till detta bildgalleri (eller vad det nu är) i en config-fil.

Ett annat alternativ är att ändra dina tabeller lite...

Table images
- id
- name
- age
- image_name //min_sem01.jpg
- ic_id // foreign key, exempelvis 1

Table image_categories
- id // exempelvis 1
- name  // exempelvis semesterbilder
- url // exempelvis [url]http://www.minserver.com/images/sembilder/[/url]

Med denna lösning räcker det att spara namnet på bilden i tabellen images och ha en foreign key till tabellen image categories, där du kan få fram sökvägen till mappen som bilden ligger i.

Medlem sedan maj 2005562 inlägg
#6

Om du inte planerar att modifiera/ändra/hantera bilderna manuellt .. så kan du skapa nya namn på bilderna med ex uniqid() . Då får varje bild ett unikt namn och du behöver inte fundera på om bilden redan finns eller ej.
Du sparar alla bilderna i en mapp och i databasen sparar du sedan enbart filnamnet..

Medlem sedan aug. 2005198 inlägg
#7

Hej hej!
Jo direkt efter jag laddat upp bilden får jag sökvägen;
Destination: https://www.nummersju.net/klantest/members/bilder/bildnamn.jpg
men hur får jag denna sökväg att komma med in i databasen? Eftersom sökvägen inte skapas förrän jag har skickat upp bilden och det är ju då jag skickar till databasen... Alltså kommer sökvägen inte med ;((

Medlem sedan juni 20006 031 inlägg
#8

Det är ju bara att du lägger in i databasen efter att du har laddat upp bilden.

Kör move_uploaded_file sen din Insert till databasen med värdena.

268 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
132 ms — ändringar (db)