Just nu i M3-nätverket
Jump to content

MySQL: uppdatera en kolumn


roineroine

Recommended Posts

Jag har en tabell med dessa kolumner:

|id|fornamn|efternamn|email|username|password|

 

I denna tabell lagrar jag användaruppgifter till min hemsida. När jag lägger in en ny användare, så vill jag att id skall ökas med 1. (Om id för användaren i posten innan var 7, så skall den nya användaren få id 8) Detta har jag löst med att bara skriva ++, typ såhär:

 

INSERT INTO register (id,fornamn,efternamn,email,username,password)VALUE (++,'$fornamn','$efternamn','$email','$username','$password').

 

Mitt problem är nu att jag inte vet hur jag skall göra när jag tar bort en användare. Säg t.ex att jag tar bort en användare med id=4. Då vill jag att användare med id=5 skall få id=4 istället, och användaren med id=6, skall få id=5 osv. Jag vill alltså att att listan fortfarande skall ha en kolumn med id, där id-nummren börjar på 1 och går uppåt utan att någon siffra mitt i försvinner bara för att jag tar bort en användare. Om id-kolumnen ser ut såhär: 1 2 3 4 5 6, och jag tar bort användare med id4, så vill jag att id-kolumnen skall se ut såhär: 1 2 3 4 5 och inte såhär 1 2 3 5 6. Någon som vet hur jag skall göra?

Link to comment
Share on other sites

Vad ska du ha den kolumnen till? Jag blir bara lite nyfiken eftersom det inte är så man använder id. Id används för att tala om vilka saker i olika tabeller som hör ihop. Säg t.ex. att du vill att användarna på din hemsida ska kunna skicka små meddelanden till varandra på sidan. Då gör du ju lämpligtvis en ny tabell som lagrar meddelanden och så använder du id:t från användartabellen för att tala om till vem meddelandet är. Om du då skulle hålla på och ändra id-numren i användartabellen så får du ju problem, eftersom du då också måste ändra id-numren i meddelandetabellen (samt alla andra tabeller du kanske skapar för ytterligare funktioner). Så därför ändrar man aldrig på värdet i en id-kolumn.

 

Vad är det du vill uppnå med att ändra id-numren? Förmodligen är det något som man löser på ett annat sätt, men för att kunna hjälpa dig måste jag då få veta vad det är du egentligen vill ha det till, om du hänger med på vad jag menar :-)

 

 

Link to comment
Share on other sites

Jag förstår vad du menar, men det är ju ändå så att varje användare har ett id. Det blir ju ändå samma problem när jag tar bort en användare. Jag har nämligen en admin-sida på min hemsida, där jag får upp hela tabellen. Sedan har jag ett fält där jag skriver i användar-id för den personen som jag vill ta bort. och sedan klickar jag på en knapp "ta bort användare". Jag har valt id eftersom det är lättare att fylla i ett nummer än ett användarnamn. Men det kanske är smidigast att skippa id-kolumnen och bara köra med username istället. Kan man ta bort en hel kolumn i sin tabell i efterhand eller måste man skapa en ny?

 

Link to comment
Share on other sites

Du kan ta bort och lägga till kolumner i efterhand med hjälp av kommandot ALTER TABLE.

 

ALTER TABLE DROP kolumnens_namn;

 

Men jag tycker du ska ha kvar id-kolumnen. Det är vettigt att ha så som du säger, att du kan ta bort användare beroende på id-nummer, och det är också lämpligt av andra skäl. Jag förstår dock inte varför det skulle bli några problem om alla användare behåller sitt id? Vad spelar det för roll vad användarna har för id-nummer? Det är ju enklast om de får behålla sitt nummer så länge de är användare. Om det är någon slags ordningsnummer du vill ha, eller veta hur många användare du har, så går ju det att fixa på andra sätt.

 

Ett annat alternativ på din adminsida (som jag brukar föredra) kan vara att du gör varje användarnamn till en länk på sidan, så du bara klickar på användaren för att ta bort honom/henne.

 

 

Link to comment
Share on other sites

Ja du har nog rätt! Tack för tippsen! Jag är ganska nybörjare på databaser, så jag är tacksam för all hjälp. Men som sagt tack så mycket för hjälpen:-)

 

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...