wissensdojo
Goto Top

Schreiben in Datenbank mit MYSQL und PHP

Hallo liebe Gemeinde,

Quellcode als Beispiel:

$host="localhost";
$user="admin";
$passwort="***";
$DB="Personen";

Connection
$Link = mysql_connect($host,$user,$passwort) or die (mysql.error());
mysql_select_db($DB, $Link);

Vorname, Nachname, Alter in Datenbank
$result = mysql_query("INSERT INTO `benutzerdaten` (`PING`, `Datum`, `Antwort`)
VALUES ('$ping', '$heute', '$antwort')");

Ich habe kein Problem, funktioniert super, sondern nur eine Frage.
Ich habe dafür eine .Bat am laufen, die im 5 Minutentakt die Datenbank.php ausführt und den Ping in eine Datenbank schreibt.
Ich möchte nur, dass 50 Einträge gemacht werden. Dann sollen alte Einträge durch die neuhinzugekommenen Einträge ersetzt werden.
(Ich möchte nicht dauernd neue, weil sonst habe ich an einem Tag schon 288 Einträge. Das darf man garnicht erst auf eine Woche rechnen).

Ich hoffe jemand kann mir dabei helfen. Vielen Dank im Vorraus.

Content-ID: 158113

Url: https://administrator.de/contentid/158113

Ausgedruckt am: 22.11.2024 um 10:11 Uhr

ITLocke
ITLocke 06.01.2011 um 14:13:18 Uhr
Goto Top
Hallo Wissensdojo

auf die Schnelle würde ich dem Datensatz einen Zeitstempel hinzufügen und eine zweite Query die alle Datensätze älter als 'aktuelle Zeit' - 50 x 5min löscht.

Gruß
WissensDojo
WissensDojo 06.01.2011 um 14:54:47 Uhr
Goto Top
Danke für die schnelle Überlegung. Werde es heute Abend mal ausprobieren.
Über weitere Ideen wäre ich sehr dankba
WissensDojo
WissensDojo 06.01.2011 um 16:02:19 Uhr
Goto Top
habe es jetzt so gemacht :

$loschen = mysql_query("DELETE FROM `marco` WHERE `Uhrzeit`<=CURRENT_TIMESTAMP-3");

aber brauche nicht 3 minuten sondern 2 wochen
WissensDojo
WissensDojo 06.01.2011 um 16:41:50 Uhr
Goto Top
Habe es nun selber raus gefunden, aber dank der Info mit den TIMESTAMP habe ich das Problem gelöst. Also vielen Dank dafür.

Ich poste schnell die Lösung. --> Datensätze löschen, die älter als 2 Wochen sind:
Variable 2 Wochen
$zweiwochen = date('Y-m-d', strtotime('-2 week'));
echo $zweiwochen;

Löschung der alten Datensätze
$loschen = mysql_query("DELETE FROM `marco` WHERE `Datum`<= '$zweiwochen'");
if(!$loschen){
echo "OOOOMMMG";
}
else{
echo "Löschung erfolgte<br><br><br>";
}
maretz
maretz 06.01.2011 um 16:43:59 Uhr
Goto Top
Moin,

gut das du kein Arzt geworden bist - bei Kopfschmerzen gibts dann auch gleich mal kurz die Holzhammer-Narkose, ja? ;)

http://dev.mysql.com/doc/refman/5.1/de/date-and-time-functions.html -> guck dir mal "interval" und "weeks" an... -> da machst das gleich im sql-Statement ;)
dog
dog 06.01.2011 um 17:47:40 Uhr
Goto Top
(Ich möchte nicht dauernd neue, weil sonst habe ich an einem Tag schon 288 Einträge. Das darf man garnicht erst auf eine Woche rechnen).

Völlig uninteressant. In einer MySQL-Datenbank sollten - wenn man sie denn richtig konzipiert - auch 5 Millionen Werte stehen können, ohne dass es sie beeinträchtigt.

Zudem ist eine relationale Datenbank das falsche Werkzeug, für das was du machen willst.
Dafür benutzt man Round-Robin-Datenbanken, wie z.B. RRDTool
Aber bei Google findet man auch genug für MySQL...