Avatar billede limes_planum Praktikant
29. marts 2005 - 00:43 Der er 7 kommentarer og
1 løsning

Problem ved sletning af post i phpmyadmin/mysql

Når jeg sletter en post i phpmyadmin/mysql, opstår der det problem at min indekskolonne i tabellen "går i stykker" - jeg har brug for at den bagefter har den samme kronologiske rækkefølge som før.

Den har f.eks. rækkefølgen 1,2,3,4,5,6,7,8,9,10 til at starte med, og bagefter rækkefølgen 1,3,5,7,9,10 - hvor jeg så har slettet posterne med med indeks 2,4,6,8.

Mit mål er at få tabellens indekskolonne til at se således ud efter sletning:
1,2,3,4,5,6.

Hvordan kan jeg gøre det med PHP?? - jeg har vel brug for en slags gennemløbning af tabellen, og det ville være rarest om den funktion kunne sidde i mit slettedokument!
Avatar billede jara06 Nybegynder
29. marts 2005 - 00:46 #1
forstår ikke helt ... indekskolonne = et felt ? eller index som i sql index ?

hvis det er førstnævnte, skal du have det hele ud og ind igen vil jeg tro ..
Avatar billede coderdk Praktikant
29. marts 2005 - 00:49 #2
Det lyder for mig som et designproblem. Du bør kunne opnå det samme uden at være afhængig af din indekskolonne...
Mht. at "reindeksere" er det jo blot at selecte alle rækker ud, og update dem der hvor det er nødvendigt. Pseudokode:

$qh = mysql_query( "SELECT * FROM tabel" );
$realnum = 0;
while ( $row = mysql_fetch_assoc( $qh ) )
{
  $realnum++;
  if ( $row['indekskolonne'] != $realnum )
  {
    // Update databasen her
  }
}
Avatar billede limes_planum Praktikant
29. marts 2005 - 02:33 #3
Tak for hjælpen coder.. :-) Hvordan er det nu med point?? Det er en 3-4 mdr. siden jeg gav sidst.

Til jara for en god ordens skyld - så er mysql og sql i familie...  - men d kan jo være du ik fik læst det hele i den sene nattetime.... hehe :o)
Avatar billede coderdk Praktikant
29. marts 2005 - 02:47 #4
hehe ok du kan ikke give mig points før jeg svarer, så her er et svar :)
Avatar billede barklund Nybegynder
29. marts 2005 - 10:48 #5
Men tro mig - du ønsker ikke at reindeksere hver gang der bliver slettet. Og din auto-nummerering kan ikke bruges, for den fortsætter fra hvad der før var den højeste - selvom du renummererer.

Det er som coderdk siger et designproblem og du bør ontænke dit databasedesign kraftigt :)

--
Morten Barklund
Avatar billede limes_planum Praktikant
29. marts 2005 - 11:12 #6
Og hvis jeg renummererer umiddelbart efter indskrivning af post, Barklund?? - vil ihvertfald lige prøve nogle alternativer....
Avatar billede barklund Nybegynder
29. marts 2005 - 11:21 #7
Det vil kunne lade sig gøre, men det vil være ret dumt - vil jeg mene. Så skal man i stedet hver gang hive samtlige rækker ud, truncate tabellen (og dermed nulstille auto-increment) og indsætte alle rækkerne igen - nu fortløbende nummereret via auto-id'et.

Men det er noget bøvl og det skal slet ikke laves sådan. Det bør derimod styres af den omliggende PHP kode i stedet for.

--
Morten Barklund
Avatar billede limes_planum Praktikant
29. marts 2005 - 15:04 #8
Nå men nu har jeg ændret i tabel-designet og det funker omsider - så tak for advarslen Barklund... Jeg re-nummerer nu i en ekstra pseudo-indeks-kolonne som PHP'en istedet læser, så nu er jeg fri for al den "auto-increment/antal-skjulte-skrevne-rækker"-problematik... :)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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