Avatar billede sux Nybegynder
22. februar 2002 - 12:39 Der er 11 kommentarer og
1 løsning

Hvordan sletter man rækker > 50 fra en tabel?

Hvordan sletter man rækker > 50 fra en tabel?

Med denne funktion tømmer jeg hele indholdet og ikke kun de rækker som er > 50:

$result = mysql_query("SELECT id FROM artikler2 ORDER BY id DESC");
$number = mysql_num_rows($result);
if ($number > 50) {
  while($row = mysql_fetch_array($result)) {
    $sletid = $row[id];
  }
  mysql_query("DELETE FROM artikler2 WHERE id = '$sletid'");
}
Avatar billede puddelundercover Nybegynder
22. februar 2002 - 12:43 #1
virker "delete from artikler2 where id='$sletid' limit 50,100000" ??
Avatar billede hathor Nybegynder
22. februar 2002 - 12:43 #2
$result = mysql_query("SELECT id FROM artikler2 ORDER BY id DESC LIMIT 50,x");

Hvor x er hvor mange over 50 du vil ha fat i.
Avatar billede sux Nybegynder
22. februar 2002 - 12:52 #3
>> hathor
dit virker perfekt
Avatar billede tipsen Nybegynder
22. februar 2002 - 12:54 #4
Er artiklerne sorteret efter id således at du vil beholde de 50 artikler med lavest id?

Vil artiklerne altid have id-numre 1,2,3,4,5,.... eller kan de laveste være 1,4,9,13,19,... ?
Avatar billede sux Nybegynder
22. februar 2002 - 13:03 #5
Ja tipsen, de er sorteret efter id og jeg ønsker at have dem med højeste id.

Noget helt andet og alligevel ikke:

http://www.eksperten.dk/spm/176166

Jeg vil samtidig med at jeg sletter artiklen være sikker på at billederne bliver slettet via unlink...
Kan i knække den nød?
Avatar billede tipsen Nybegynder
22. februar 2002 - 13:24 #6
Hvis du vil beholde de 50 poster med højest id, burde følgende kunne gøre det:

$keep = 50;
$result = mysql_query("SELECT id FROM artikler2 ORDER BY id DESC, LIMIT $keep");
$tmpid = mysql_result($result, $keep-1, 0);
$result2 = mysql_query("DELETE FROM artikler2 WHERE id < $tmpid");
echo mysql_affected_rows($result2) . " poster blev slettet fra artikeldatabasen!";

--tipsen--

PS: Hvis der er mindre end 50 poster i databasen vil dette fejle!
Avatar billede sux Nybegynder
22. februar 2002 - 13:33 #7
Jeg har fået svar fra hathor...
Avatar billede tipsen Nybegynder
22. februar 2002 - 13:42 #8
Denne udgave fungerer med vilkårligt antal poster i databasen - mht. unlink aner jeg ikke hvad det er... - det må nogle andre vide...

$keep = 50;
$result = mysql_query("SELECT id FROM artikler2 ORDER BY id DESC, LIMIT $keep");
if (mysql_num_rows($result) == $keep) {
  $tmpid = mysql_result($result, $keep-1, 0);
  $result2 = mysql_query("DELETE FROM artikler2 WHERE id < $tmpid");
  echo mysql_affected_rows($result2) . " poster blev slettet fra artikeldatabasen!";
} else {
  echo "Ingen poster slettet";
}
Avatar billede sux Nybegynder
22. februar 2002 - 14:10 #9
Unlink sletter filer - ganske enkelt.
Avatar billede tipsen Nybegynder
22. februar 2002 - 15:13 #10
sux: jeg synes du skal overveje det løsningsforslag jeg har lavet - det er væsentligt hurtigere end den udgave der står øverst på siden... - jeg er ligeglad med pointene, men kan godt lide elegante og effektive løsninger!
Avatar billede hathor Nybegynder
22. februar 2002 - 15:18 #11
du har ret tipsen :-)

Nu hvor jeg lige kiggede ordentlig på den kan se jeg godt se at den øverste er noget rod.
Avatar billede sux Nybegynder
22. februar 2002 - 16:07 #12
Takker Tipsen.

Hvad siger du til den her:

http://www.eksperten.dk/spm/176251
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