# atom. Löschen von MySQL-Zeile nach bestimmter Zeit



## z0oL (18. Juni 2002)

Hallo,
ich bin auf der Suche nach nem Script, dass automatisch alle Einträge einer MySQL-DB nach 15 minütigem Bestehen löscht.
Macht man das auch mit dem explode() Befehl ?


----------



## Flex (18. Juni 2002)

Um ein Script alle 15 Minuten anlaufen zu lassen, bräuchtest du Cron Jobs, die aber kaum einer hat...
Du musst leider warten, bis der nächste User auf deine HP geht..

Speicher einfach in deiner DB ein Extrafeld...
uhrzeit oder sonst einen namen, in dem du time() speicherst...

Und dann einfach:


```
<?

$zeit = time();

$del = $zeit - 900; // 900 = 15 Minuten in Sekunden

mysql_query("DELETE * FROM table WHERE uhrzeit < $zeit");

?>
```

Have Fun


----------



## dave_ (18. Juni 2002)

und was soll dir explode bringen ?
such mal nach cronjob.

Aber bevor du zu suchen anfängst, würde ich mir einfach ein anderes datenbank/script design überlegen, dass du da irgendwie drum rum kommst. ansonsten wie gesagt -> cronjobs

//edit; fudammt zu lahm


----------



## brÅinstorm (18. Juni 2002)

> Macht man das auch mit dem explode() Befehl ?



nein. die zellen kann man nicht explodieren lassen. =) hrhr...


btt:
ich hab das schonmal irgendwo hier gepostet.
du schreibst nen timestamp mit in die db, dann kannst du per sql alle einträge löschen:

```
DELETE * FROM blablubb WHERE timestamp < $timestamp+60*15
```

/grml.. auch zu langsam.. icq lenkt ab.. =)


----------



## z0oL (19. Juni 2002)

Die Lösung von Flexmex scheint mir nicht allzuschwer zu sein. Es würde mir auch reichen, wenn die DB auch nur bei jedem Visit geupdated wird.
Aber ist der Code hier denn richtig?


```
<?

$zeit = time();

$del = $zeit - 900; // 900 = 15 Minuten in Sekunden

mysql_query("DELETE * FROM table WHERE uhrzeit < $zeit");

?>
```

Muss der Befehl hier 

```
mysql_query("DELETE * FROM table WHERE uhrzeit < $zeit");
```

nich so lauten:


```
mysql_query("DELETE * FROM table WHERE uhrzeit < $del");
```

?? 

Sonst würde das ganze meiner Meinung nach nicht viel bringen. Berichtigt mich wenn ich mich täusche, danke.


----------



## Bl!zZzArD (19. Juni 2002)

```
mysql_query("DELETE * FROM table WHERE uhrzeit < $zeit");
```

doch der muss so heissen sonst macht es kein sinn =)


----------



## Sir Robin (19. Juni 2002)

Falsch Blizzard...denn $time enthält die Zeit des Besuchs..also die aktuelle Zeit, das heißt so ziemlich alle DB-Einträge würden gelöscht...

$del muss da hin ,wie zool schon bemerkte...sicherlich nur ein Flüchtigkeitsfehler von flexmex...


----------



## Flex (19. Juni 2002)

Hm, ups 

Es tut mir leid 

Ich schäme mich auch... %)


----------



## z0oL (19. Juni 2002)

Schon gut, bin dir trotzdem dankbar.

Noch ne Frage am Schluss:

Das füg ich doch einfach auf der Page ein, oder? Wohl am besten auf die Hauptseite, welche ja die meisten Hits hat, wa ?


----------



## Valentin- (19. Juni 2002)

jo du musst das am besten in ne datei packen die dummer immer
aufrufst noch nen tipp $del muss, wenn es in die
query rein soll so aussehn: '$del' sonst fehler..


----------



## z0oL (20. Juni 2002)

Also mach ich ne Datei, die z.B. delete.php heisst, und inlucde die auf der Mainpage. Das sollte dann doch klappen, oder net ?

Ich versuchs jetzt mal, und meld mich dann nochmal


----------



## Valentin- (20. Juni 2002)

jo so sollte es gehen!


----------



## z0oL (20. Juni 2002)

Funzt leider net. Ich versuchs local, aber müsste ja trotzdem gehen. mhhhh.... son mist


----------



## Valentin- (20. Juni 2002)

zeich mal den quellcode den du jetzt nutzt..


----------



## gecko (20. Juni 2002)

aehm, es heisst 

```
$sql = "DELETE FROM table ...";
```
und nicht

```
$sql = "DELETE * FROM table ...";
```


----------



## z0oL (20. Juni 2002)

?


----------



## brÅinstorm (20. Juni 2002)

es kommt auf das sternchen * hinter SELECT an!


----------



## z0oL (20. Juni 2002)

Mein Quellcode sieht immo so aus


```
<?
$id = time();
$del = $zeit - 10; // zum testen
mysql_query("DELETE * FROM fm_cs WHERE id < '$del'");
?>
```

Hab das ganze in die delete.php geschrieben, die ich auf der Seite include.
Trotzdem scheints net zu funzen


----------



## gecko (20. Juni 2002)

aaaaahhh 
schau dir nochmal meinen post an und sag mir dann was an deinem script falsch ist! ********


----------



## z0oL (20. Juni 2002)

ups... sry, hab das falsch gelesen 
Funzt jetzt einwandfrei.

Danke euch allen, auch wenns was länger gedauert hat 

Hier der Code, für die dies interessiert:


```
<?PHP
$id = time();
$del = $id - 10;
mysql_select_db("$db");
$sql = "DELETE FROM table WHERE id < '$del'";
mysql_query($sql) or die("Error" . mysql_error();
?>
```


----------



## fMr (21. Juni 2002)

> _Original geschrieben von z0oL _
> 
> 
> ```
> ...



Nee!

so:


```
<?php
$id = time();
$del = $id - 10;
mysql_select_db("$db");
$sql = "DELETE FROM table WHERE id < '$del'";
mysql_query($sql) or die("Error" . mysql_error());
?>
```


----------



## Valentin- (21. Juni 2002)

hach ja immer die kleinen Feinheiten


----------

