Permalänk
Medlem

Ladda upp bilder php/mysql

Tja!

Jag har skapat en sida där man kan ladda upp bilder till en server. Samtidigt som bilden laddas upp hämtas bildens adress (tex sida.se/uploads/bild1.jpg) som sparas i en mysql-databas. Allting fungerar precis som det ska, men nu till min fråga:

Jag har en tabell med tre kolumner som heter bild1, bild2 & bild3 där respektive bild adress sparas. Men hur går jag tillväga om jag låt säga vill låta någon ladda upp 20 bilder till ett å samma ID? Är det enda rätta att skapa en tabell med 20 kolumner? Eller kan man på något sätt spara flera adresser i samma kolumn?

/Andreas

Visa signatur

Phenom II X6 1055t @ 3,5GHz
Sleeva.se »

Permalänk
Medlem

Du skall inte lita på mitt svar allt för mycket, men det jag har lärt mig i mina databaserkurser är att man bör använda sig av primära och främmande nycklar. Det du gör är att du skapar en tabell med ID:n, och en tabell med bilder. I tabellen med ID:n så sparar du helt enkelt ID:n för uppladdningen, och i tabellen med bilder behöver du åtminstone två kolumner, bildens adress och ID. Som ID lägger du den uppladdning bilden hör till från tabellen ID:n. Då kan du koppla ett oändligt antal bilder till samma ID.

EDIT: Gjorde en liten illustration

Permalänk
Inaktiv

Oändligt och oändligt, men 2147483647 alt. 4294967295 st

Skämt o sido, Tazavoo har helt rätt, för att använda främmande nycklar (Foreign Keys) måste du dock använda dig av InnoDB som lagringsmotor när du skapar tabellerna.

Permalänk
Medlem

Tackar så mycket för en bra förklaring!

Kan passa på att ställa ytterligare en fråga;
Jag har en tabell som via mysql_fetch_array hämtar all data från en tabell för att sedan skriva ut den rakt upp å ner på en sida. Brevid varje rad har jag en DELETE länk med följande kod

echo "<a href = \"$self?id=$id\"><img class='up' src='images/delete.png' alt=''/>Delete</a>";

följt av ett statement

if (isset ($_GET['id'])) { $id = $_GET['id']; $query= mysql_query("delete FROM produkter where id =$id")or die(mysql_error()); }

Det fungerar precis som jag vill MEN när man trycker på delete syns inte att raden försvunnit förrens man uppdaterar/refreshar sidan. Finns det någon kodsnutt som direkt efter queryn gör en refresh på sidan?

Visa signatur

Phenom II X6 1055t @ 3,5GHz
Sleeva.se »

Permalänk
Medlem

om jag förstår ditt upplägg, så borde det fungera om du lägger koden för att ta bort raden överst på din sida. detta gör ju att raden är borta när du sedan hämtar informationen för att visa den.

alternativt kan du använda exempelvis jQuery och göra en ajax-request som kör .remove() när/om operationen lyckades.

Skrivet av Soulnut:

Tackar så mycket för en bra förklaring!

Kan passa på att ställa ytterligare en fråga;
Jag har en tabell som via mysql_fetch_array hämtar all data från en tabell för att sedan skriva ut den rakt upp å ner på en sida. Brevid varje rad har jag en DELETE länk med följande kod

echo "<a href = \"$self?id=$id\"><img class='up' src='images/delete.png' alt=''/>Delete</a>";

följt av ett statement

if (isset ($_GET['id'])) { $id = $_GET['id']; $query= mysql_query("delete FROM produkter where id =$id")or die(mysql_error()); }

Det fungerar precis som jag vill MEN när man trycker på delete syns inte att raden försvunnit förrens man uppdaterar/refreshar sidan. Finns det någon kodsnutt som direkt efter queryn gör en refresh på sidan?

Visa signatur

as far as we can tell, the massacre went well...