Avatar billede wickedd Juniormester
31. august 2005 - 21:23 Der er 9 kommentarer og
2 løsninger

Opdatere sin database så id passer sammen

Jeg har en database med 1 tabel, der indeholder lidt over 1200 forskellige ting.

Problemet er at der er blevet slettet lidt hist og her i løbet af årene, og derfor passer rækkefølgen ikke helt, og det skaber nu problemer.

F.eks. rækken id indeholder 1,2,3,6,9,10 osv.
Hvordan kan jeg få det opstillet således: 1,2,3,4,5,6,7,8,9,10 via phpmyadmin?

Tak på forhånd, og måske er det ikke den rigtige kategori, men jeg tager chancen :)
Avatar billede arne_v Ekspert
31. august 2005 - 21:27 #1
rigtig kategori

men men men

jeg synes at du skal opgive den ide

ved fornuftg anvendelse af id burde det ikke være noget problem med huller

opdatering kan være et problem hvis id bruges som foreign key i andre tabeller

der kommer sikkert snart uorden i systemet igen alligevel
Avatar billede wickedd Juniormester
31. august 2005 - 21:36 #2
Hmm.. Troede ellers det var muligt at fjerne hullerne pr. automatik af en art, det er det måske ikke alligevel? Evt. med hjælp fra noget PHP halløj?
Avatar billede erikjacobsen Ekspert
31. august 2005 - 21:59 #3
Hvorfor skal de stå i rækkefølge uden huller?
Avatar billede wickedd Juniormester
01. september 2005 - 16:30 #4
$next = ($row[id] + 1);
$prev = ($row[id] - 1);

Derfor
Avatar billede erikjacobsen Ekspert
01. september 2005 - 17:36 #5
Ja, men du kan også finde next med en SELECT sætning. Aktuelt ID er i $id

  "SELECT * FROM tabel WHERE id>$id LIMIT 0,1"

Hvis der er en næste, får du præcis een række retur. Hvis du står med den sidste, får fu 0 rækker retur. Du kan selv lave prev.
Avatar billede erikjacobsen Ekspert
01. september 2005 - 17:37 #6
"SELECT * FROM tabel WHERE id>$id ORDER BY id ASC LIMIT 0,1 "

hvis vi skal være helt præcise ... ;)
Avatar billede wickedd Juniormester
22. september 2005 - 13:03 #7
Hov, jeg havde helt glemt det her spørgsmål - Havde åbenbart fortrængt det... :)
Nu kan jeg egentlig godt se hvad jeg har lavet galt, og den metode du har skrevet burde jo virke perfekt med et par løkker osv.

Jeg siger mange tak for hjælpen, og så kan du jo også lige smide et svar :)
Avatar billede erikjacobsen Ekspert
22. september 2005 - 13:04 #8
Jeg samler slet ikke på point, tak.
Avatar billede wickedd Juniormester
22. september 2005 - 13:09 #9
Ok, så må jeg hellere lukke inden jeg glemmer det. Takker.
Avatar billede wickedd Juniormester
22. september 2005 - 13:51 #10
Det var dælme rart, virker perfekt :)

Måske ikke den mest optimale kode, men nu smider jeg den her bare så andre også kan se det:
$next = mysql_query("SELECT * FROM signatures WHERE id>$id ORDER BY id ASC LIMIT 0,1");
$prev = mysql_query("SELECT * FROM signatures WHERE id<$id ORDER BY id DESC LIMIT 0,1");
while ($page2 = mysql_fetch_array($prev)) {
echo "<a href=\"view.php?id=$page2[id]\">&lt; Prev</a> ";
}
while ($page = mysql_fetch_array($next)) {
echo "<a href=\"view.php?id=$page[id]\">Next &gt;</a>";
}
Avatar billede erikjacobsen Ekspert
22. september 2005 - 20:02 #11
Når du ved der kun er 0 eller 1, kan du nøjes med en 'if' i stedet for en 'while'.
Og husk at lukke med
  mysql_free_result($next);
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester