---
title: "Radera äldre poster i tabell"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/97513-radera-äldre-poster-i-tabell"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "klockren"
published: "2004-02-16T20:43:33.000Z"
updated: "2004-02-19T07:52:10.000Z"
replies: 4
views: 256
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/php/97513-radera-äldre-poster-i-tabell"
---

# Radera äldre poster i tabell

## #1 — klockren, 2004-02-16T20:43Z

Hej!
Har inte lyckats klura ut hur jag ska lösa detta;

jag har ett litet community. Har precis gjort så att användarna kan se de 10 senaste besökarna på sitt Krypin, se kod.

```
<p><br><h2>DITT KRYPINS<br>10 SENASTE BESÖK</h2>

<?
$result = mysql_query("SELECT * FROM visits WHERE owner = '$ego_username' ORDER BY datum DESC LIMIT 10");
$antal = mysql_num_rows($result);

if($antal < 1)
	print("<p><b>Du har inte haft några besök!</b><br>\n");
else
{
	print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\">");
	print("<tr bgcolor=\"#8FA3B5\"><td><b>NAMN</b></td>\n<td><b>BESÖKSDATUM</b></td>\n</tr>\n");
	while($visitor = mysql_fetch_array($result))
	{
		$vname = $visitor["name"];
		$vuser = $visitor["visitor"];
		$vdatum = $visitor["datum"];
		$vdatum = date("Y-m-d H:i", $vdatum);
		print("<tr>\n<td><a href=\"?visainfo&person=$vuser\">$vname</a></td>\n<td>$vdatum</td>\n</tr>\n");
	}
	print("</table>");
}
?>
```

När någon besöker ditt Krypin lagras det i tabellen visits. Viktiga fälten i den är owner (Krypinets ägare), visitor (den som är inne och kollar) samt datum (tidpunkt för besöket). Alla olika besök mellan användarna lagras alltså i denna tabell. 

Problemet är att nu lagras samtliga besök som gjorts i användarnas Krypin. Jag vill att bara de 10 senaste (för varje krypin) ska finnas, resten ska raderas. (eftersom det ändå bara är de 10 senaste som visas). Annars kommer tabellen att växa till oändligt stor!

Förutom detta fungerar koden klockrent.

Någon som vet hur jag ska gå tillväga?

MVH
.::j::.

Permalänk: https://www.webforum.nu/p/97513

## #2 — lunne82, 2004-02-16T22:49Z

Börja med att göra om din while-loop såhär:

```php
while($visitor = mysql_fetch_array($result))
{
		$vname = $visitor["name"];
		$vuser = $visitor["visitor"];
		$vdatum = $visitor["datum"];
		$f_vdatum = date("Y-m-d H:i", $vdatum);
		$str = "<tr>\n".
		"<td><a href=\"?visainfo&person=$vuser\">$vname</a></td>\n".
		"<td>$f_vdatum</td>\n".
		"</tr>\n";
		print($str);
}
```

Sen lägger du in detta efter print("\</table\>");

```php
if ($antal > 10) {
		// Körs bara om det behövs
		mysql_query("DELETE FROM visits WHERE owner='$ego_username' AND datum<'$vdatum'");
}
```

Efter din loop kommer $vdatum innehålla det äldsta besöket av de 10 som ska visas, alltså kan du ta bort de som är äldre och som har samma ägare.

Permalänk: https://www.webforum.nu/p/1278853

## #3 — klockren, 2004-02-17T20:43Z

Hej!
Jag tror att du missförstod mig lite! men jag löste problemet så här: (tack ändå!)

```php
$result = mysql_query("SELECT * FROM visits WHERE owner = '$ego_username' ORDER BY datum DESC");
$antal = mysql_num_rows($result);

if($antal < 1)
	print("<p><b>Du har inte haft några besök</b><br>\n");
else
{
	print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\">");
	print("<tr bgcolor=\"#8FA3B5\"><td><b>NAMN</b></td>\n<td><b>BESÖKSDATUM</b></td>\n</tr>\n");

	$counter = 0;

	while($visitor = mysql_fetch_array($result))
	{
		$vname = $visitor["name"];
		$vuser = $visitor["visitor"];
		$besokid = $visitor["id"];
		$vdatum = $visitor["datum"];
		$vdatum = date("Y-m-d H:i", $vdatum);
		$counter++;
		if($counter > 10)
			mysql_query("DELETE FROM visits WHERE id = '$besokid'");
		else
			print("<tr>\n<td><a href=\"?visainfo&person=$vuser\">$vname</a></td>\n<td>$vdatum</td>\n</tr>\n");
	}
	print("</table>");
```

.::j::.

Permalänk: https://www.webforum.nu/p/1279275

## #4 — lunne82, 2004-02-17T21:02Z

> Jag tror att du missförstod mig lite!

 
Nej, jag tror inte det eftersom mitt script gör samma sak, men inte riktigt på samma sätt. Visst funkar det bra det du gjorde också, men jag tror det är mer optimerat att göra som jag gjorde. Då kommer du nämligen bort från att köra mysql_query() en gång för varje "besök" som inte ska vara med.

Permalänk: https://www.webforum.nu/p/1279289

## #5 — klockren, 2004-02-19T07:52Z

OK, du får ursäkta mig! Jag tittade inte tillräckligt noga på din kod första gången, utan såg bara att du inte hade med någon räknare som bryter vid 10 inlägg i while-loopen (ska bara skriva ut 10 st!), och antog då att du inte riktigt var med på vart jag ville komma.

$antal kommer ju heller aldrig att överstiga 10 eftersom jag i första inlägget även skrev

```php
$result = mysql_query("SELECT * FROM visits WHERE owner = '$ego_username' ORDER BY datum DESC LIMIT 10");
$antal = mysql_num_rows($result);
```

eller hur?

Därför gjorde jag en "mix" av din optimerade lösning och min nya lösning.

```php
$result = mysql_query("SELECT * FROM visits WHERE owner = '$ego_username' ORDER BY datum DESC");
$antal = mysql_num_rows($result);

if($antal < 1)
    print("<p><b>Du har inte haft några besök</b><br>\n");
else
{
    print("<table border=\"0\" cellspacing=\"0\" cellpadding=\"3\">");
    print("<tr bgcolor=\"#8FA3B5\"><td><b>NAMN</b></td>\n<td><b>BESÖKSDATUM</b></td>\n</tr>\n");

    $counter = 0;

    while(($visitor = mysql_fetch_array($result)) && ($counter < 10))
    {
        $vname = $visitor["name"];
        $vuser = $visitor["visitor"];
        $vdatum = $visitor["datum"];
        $f_vdatum = date("Y-m-d H:i", $vdatum);
        $counter++;
        print("<tr>\n<td><a href=\"?visainfo&person=$vuser\">$vname</a></td>\n<td>$f_vdatum</td>\n</tr>\n");
    }
    print("</table>");

if ($antal > 10)
	mysql_query("DELETE FROM visits WHERE owner = '$ego_username' AND datum < '$vdatum'");
```

Verkar som att detta fungerar bra!

Tack så mycket för hjälpen!

.::J::.

Permalänk: https://www.webforum.nu/p/1279882

---

Tråden på webben: https://www.webforum.nu/amne/php/97513-radera-äldre-poster-i-tabell
