PHP/Mysql: ID som håller nummer korrekt.

Permalänk
Medlem

PHP/Mysql: ID som håller nummer korrekt.

Jag självlär mig mysql/php och det går hyffsat bra, men jag stöter på lite problem.

Varje tabell jag gör i phpmyadmin så väljer jag med ID som Primary AUTO_INCREMENT

Då ser det ut som

1.
2.
3.

Men när jag tar bort 2 och lägger till en via en php-kod

mysql_query("INSERT INTO links (id, namn, link) VALUES ('','$namn','$namn')");

1.
3.
4.

Vad ska jag göra så att ID 3 blir 2 när ID 2 försvinner?

Tacksam för svar.

Visa signatur

Samsung 34'' ultrawide curved
Logitech MX master & Logitech g910
Creative SoundBlaster Katana

Permalänk
Skrivet av downup:

Jag självlär mig mysql/php och det går hyffsat bra, men jag stöter på lite problem.

Varje tabell jag gör i phpmyadmin så väljer jag med ID som Primary AUTO_INCREMENT

Då ser det ut som

1.
2.
3.

Men när jag tar bort 2 och lägger till en via en php-kod

mysql_query("INSERT INTO links (id, namn, link) VALUES ('','$namn','$namn')");

1.
3.
4.

Vad ska jag göra så att ID 3 blir 2 när ID 2 försvinner?

Tacksam för svar.

Det är det som är grejjen med det. AI fungerar så.

Visa signatur
Permalänk
Medlem

AUTO_INCREMENT är precis som det låter en automatisk uppräkning.
Varje gång du lägger till en ny rad i tabellen så räknar en räknare
upp. Så varje ny rad kommer få ett nummer högre än föregående.

AUTO_INCREMENT + Primary är ett enkelt sätt att ge varje rad en unik
identifierare.

I de flesta fall (för att inte säga alla) så vill man inte justera
identifieraren vid borttag av en rad. Att byta identifierare innebär
tex att länken www.minsida.se/link.php?id=123 inte längre skulle gå
till samma sida.

Jag antar att det du vill göra är att lista alla länkar med en numrering.
tex.

1. Google www.google.se
2. Sweclockers www.sweclockers.com
3. PHP www.php.net

Du kan göra det utan att spara rad-siffran i databasen. Hämta innehållet med
sortering på id fältet (ORDER BY id eller ORDER BY id DESC).
När du skriver ut raderna använder du något i stil med:

$nr = 1; foreach($rows as $row) { echo "$nr. {$row['namn']} {$row['link']} <br />"; $nr++; }

Till sist för att svara på din fråga "Vad ska jag göra så att ID 3 blir 2 när ID 2 försvinner?".

1. Ta bort AUTO_INCREMENT eftersom det inte är den funktionen du vill ha.
2. Bestäm id själv när du lägger till en rad.

$result = mysql_fetch_assoc(mysql_query("SELECT MAX(id)+1 AS id FROM links")); mysql_query("INSERT INTO links (id, namn, link) VALUES ({$result['id']},'$namn','$namn')");

3. När du tar bort en rad måste du själv justera alla rader.

mysql_query("DELETE FROM links WHERE id = $id"); mysql_query("UPDATE links SET id = id-1 WHERE id > $id");