Avatar billede fommy Nybegynder
29. august 2004 - 17:59 Der er 15 kommentarer og
2 løsninger

Slet poster over 100

Hvordan skal jeg lave en funktion der sletter alle poster over 100 før den nyeste ?
Altså hvis den der skriver nu, har id 280, så sletter php alle poster der har id lavere en 180.
Avatar billede dennismp Nybegynder
29. august 2004 - 18:01 #1
find $max fra tabellen med: "SELECT max(id) FROM tabel;"

og så; "DELETE FROM tabel DELETE id < ($max-100)"
Avatar billede detox Nybegynder
29. august 2004 - 18:09 #2
Hvis der så er huller i kolonnen med id'er holder det ikke helt.
Skal vel osse være:

"DELETE FROM tabel WHERE id < ($max-100)"
Avatar billede fommy Nybegynder
29. august 2004 - 18:10 #3
Skal det sættes ind i loopet hvor den skriver posterne ud ?
Avatar billede detox Nybegynder
29. august 2004 - 18:13 #4
Jeg tror jeg vil prøve sådan:

$id = mysql_result(mysql_query("SELECT id FROM tabel ORDER BY id DESC LIMIT 100,1"),0);
mysql_query("DELETE FROM tabel WHERE id<$id");
Avatar billede dennismp Nybegynder
29. august 2004 - 18:15 #5
detox:
heh, jow, ved ikke lige hvor den ekstra delete kom fra :)


fommy;

Du har en insert et sted.. efter denne skriver du:

$maxid = mysql_insert_id();
mysql_query("DELETE FROM tabel WHERE id < ($maxid-100)") or die(mysql_error());
Avatar billede fommy Nybegynder
29. august 2004 - 18:19 #6
Fantastisk =)
Jeg brugte den linie du skrev Detox, men hvis I begge lige smider et svar, så ryger der lige en kiks retur :P
Avatar billede dennismp Nybegynder
29. august 2004 - 18:19 #7
I princippet burde du, efter første omgang du laver delete'n, ændre den, så du præcis sletter een række af gangen.

Indsæt id=200
slet 99

indsæt id=201
slet 100

Med mindre du indsætter et andet sted, uden at rydde op (slette rækker med mindre end id-100)
Avatar billede dennismp Nybegynder
29. august 2004 - 18:24 #8
jeg forstår ikke at detox's forslag virker...

Jeg indsætter id-101 (lad os sige der ikke er huller).

først sql vil selecte 101..
delete vil slette 1-100 ..

det var vel ikke meningen?

-----

Du skrev at du vil have slettet alle id'er der var 100 mindre end det seneste. Detox har lavet en sql der sletter de 100 første (eller så mange af dem der er mindre end id).. Er du opmærksom på forskellen?
Avatar billede fommy Nybegynder
29. august 2004 - 18:26 #9
Jeg har lige prøvet det af ved at ændre tallet til 5 i stedet, og den slettede dem også i den rigtige rækkefølge.
Avatar billede dennismp Nybegynder
29. august 2004 - 18:29 #10
Øh 5 ? :)

Anyway, hvis det virker, er det jo fint nok. Så skal du ikke give mig points, hvis detox' svar var det rigtige..
Avatar billede fommy Nybegynder
29. august 2004 - 18:34 #11
Ja ja, så sletter den alt under de seneste 5. I stedet for 100.
Begge løsninger har hjulpet mig, så I får point begge to, hvis Detox melder sig :)
Avatar billede detox Nybegynder
29. august 2004 - 18:37 #12
dennismp -> Jeg brugte jo: LIMIT 100,1. Den vælger jo række nr. 100 ;O)

Og velbekommen.
Avatar billede fommy Nybegynder
29. august 2004 - 18:39 #13
Tak for hjælpen drengene. Det spiller bare :)
Avatar billede dennismp Nybegynder
29. august 2004 - 18:51 #14
detox; jeg forstår det altså stadig ikke :) Jeg kan kun få den til at slette for meget..

Lad mig prøve igen.. bare med en lille skala. Lad os sige at han vil slette id'er der er 5 mindre end det sidste.

vi har id'erne; 1,2,3,4,5

Så det burde være id=1 vi sletter, hvis vi indæstter id=6.

1) Indsæt ny række. nu har vi id'erne: 1,2,3,4,5,6
2) din sql; vil så være: SELECT id FROM tabel ORDER BY id DESC LIMIT 5,1.
resultat id=6
3) din anden sql: mysql_query("DELETE FROM tabel WHERE id<$id"), så sletter vi: 1,2,3, 4 og 5

Nu har vi kun id=6 tilbage.. Hvad er det jeg misser ?
Avatar billede detox Nybegynder
29. august 2004 - 18:55 #15
SELECT id FROM tabel ORDER BY id DESC LIMIT 5,1

vil jo vælge nr. 2, da jeg bruger ORDER BY id DESC og så sletter den alt mindre end 2 (altså 1).
Avatar billede dennismp Nybegynder
29. august 2004 - 20:48 #16
Got it :)
Avatar billede dennismp Nybegynder
29. august 2004 - 20:49 #17
Jeg har vist mental blokeret for SQL forståelsen idag :)
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