Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Zeitlöschung von Datensätzen

Empfohlene Antworten

Veröffentlicht

Hallihallo,

wie kann ich einen SQL Datensatz in einer MySQL Datenbank zu einem bestimmten Zeitpunkt automatisiert löschen? Schreib ich da besser ein Shellskript oder geht das auch mit php? Hab sowas noch nicht gemacht... Der Benutzer soll ein Löschdatum angeben.

Gruß

debitux

hallo,

eigentlich ist es nur mit Cronjobs möglich

Einmal am Tag aber kannst Du bei scriptwecker einen kostenlosen Cronjob bekommen.

http://www.scriptwecker.de/

eine andere Variante wäre , die DS dann zu löschen, wenn das Script auf der Seite angefordert wird (vom User)

du lässt deinen cronjob(dein Script) einfach von den surfern auf der seite ausführen - einfach in einem 1x1px mini iframe.

da wird der seitenaufbau net beeinträchtigt .

oder einfach beim anstoßen des scriptes zuerst in die tabelle schauen und alles rausputzen und dann erst dein script weiter laufen lassen

Hmmm ich glaub ein Cronjob wäre nicht schlecht. Aber wie kann ich per Shellskript auf eine MySQL Datenbank zugreifen? Hab das noch nie gemacht... Naja da muss ich mal wieder basteln ;-)...

Gruß

debitux

Hallo!

Ungetestet würde ich folgende Syntax für sinnvoll halten:

mysql database < sqlscript.sql

Optional können noch Werte wie -uUsername und -p[password] hinzukommen. In dem SQL-Script schreibst du dann die Anweisung(en), die ausgeführt werden sollen.

Gruß,

Florian

Ich bin gerade ein PHP Shellskript am schreiben.

Das Skript soll jede 24h, einen Tag vom Löschdatum eines Datensatzes abziehen. Wenn das Löschdatum 0 ist, soll der Datensatz gelöscht werden (kling komisch, ist aber so.)

Wie kann ich das am besten regeln? Ich muss das Skript bis am Montag fertig haben :)....

Gruß

debitux

Windows- oder Linux-Server?

Öhm.... Warum verteilst du deine Frage auf sämtliche Foren?

Den aus dem Webdesign hab ich mal mit dem zusammengebaut (gibt dann auch wenigstens nen ausagekräftigen Threadtitel ;) ) ...

Jojo danke wolle :-).

Ich hab das jetzt erstmal so mit dem php skript gemacht.


<?php

$daba = "neuedb";


$host = "localhost";

$user = "root";

$pass = "";


$sqls1 = "SELECT * FROM $daba";


$link=mysql_connect($host, $user, $pass) or die("Fehler, keine Verbindung");

mysql_select_db($daba);


for($j=0;$j<2;$j++)

{	

	if($j==1)

	{

		$tbl = "tbl_suche";

	}

	else

	{

		$tbl = "tbl_biete";

	}

	$result = mysql_query("SELECT * FROM $tbl ORDER BY id DESC");


	for($i=0;$i<mysql_num_rows($result);$i++)

	{

		$ergebnis[$i]=mysql_fetch_array($result);

	}


	$gesamt = count($ergebnis);


	for($i=0;$i<$gesamt;$i++)

	{

	echo "Name:\t\t".$ergebnis[$i][name]."\n";

	echo "Vorname:\t".$ergebnis[$i][vname]."\n";

	echo "Delday:\t".$ergebnis[$i][delday]."\n";

	echo "Datum:\t".$ergebnis[$i][datum]."\n";

	echo "\n\n";

	}


}

?>

Jetzt ergänze ich nur noch sowas in der Art...

        for($i=0;$i<$gesamt;$i++)

        {

        echo "Name:\t\t".$ergebnis[$i][name]."\n";

        echo "Vorname:\t".$ergebnis[$i][vname]."\n";

        echo "Delday:\t".$ergebnis[$i][delday]."\n";

        echo "Datum:\t".$ergebnis[$i][datum]."\n";

        echo "\n\n";

        if($ergebnis[$i][delday]>=1)

        {

                echo "Noch gueltig...";

######SQL INSERT/REPLACE...

        }

        else

        {

                echo "Ungueltig...";

######SQL DELETE

        }

Dann müsste es doch klappen...

So feddisch...

Jetzt geh ich heim :-)

Skript funzt....


<?php


# Author: Martin Fandel

#

# Dieses Skript soll später als Cronjob jede

# 24 h den delday einen runtersetzen. Wenn der delday

# 0 ist, wird der datensatz gelöscht...


$daba = "neuedb";


$host = "localhost";

$user = "root";

$pass = "";


$sqls1 = "SELECT * FROM $daba";


$link=mysql_connect($host, $user, $pass) or die("Fehler, keine Verbindung");

mysql_select_db($daba);


for($j=0;$j<2;$j++)

{	

	if($j==1)

	{

		$tbl = "tbl_suche";

	}

	else

	{

		$tbl = "tbl_biete";

	}

	$result = mysql_query("SELECT * FROM $tbl ORDER BY id DESC");


	for($i=0;$i<mysql_num_rows($result);$i++)

	{

		$ergebnis[$i]=mysql_fetch_array($result);

	}


	$gesamt = count($ergebnis);


	for($i=0;$i<$gesamt;$i++)

	{

	echo "ID:\t\t".$ergebnis[$i][id]."\n";

	echo "Name:\t\t".$ergebnis[$i][name]."\n";

	echo "Vorname:\t".$ergebnis[$i][vname]."\n";

	echo "Delday:\t".$ergebnis[$i][delday]."\n";

	echo "Datum:\t".$ergebnis[$i][datum]."\n";

        $id = $ergebnis[$i][id];

	if($ergebnis[$i][delday]>=1)

	{

		echo "# # #Noch gueltig...# # #\n\n";

		$newdelday = $ergebnis[$i][delday]--;

		$newdelday = $newdelday-1;

		mysql_query("UPDATE $tbl SET delday = $newdelday WHERE id = $id;");

		echo mysql_error();

	}

	else 

	{

		echo "# # #Ungueltig...# # #\n\n";

		mysql_query("DELETE FROM $tbl WHERE id = $id;"); 

		echo mysql_error();

	}


	}


}

?>

lalala

Schönes Wochenende an alle!!!

Ciaoi

Warum so kompliziert?

Hast du meinen Beitrag im Datenbankthread nicht gelesen?

Datei skript.sql

-----------

UPDATE tbl_suche SET delday = (delday-1);

UPDATE tbl_biete SET delday = (delday-1);

DELETE FROM tbl_suche WHERE delday<1;

DELETE FROM tbl_biete WHERE delday<1;

-----------

Mit folgenden Befehl laden:

mysql --user=user_name --password=your_password database < skript.sql

Gruß Jaraz

PS:

Wobei diese und deine Lösung sehr fehleranfällig ist, da wenn ein cronjob nicht ausgeführt wird, oder einer doppelt ausgeführt wird, deine Rechnung nicht mehr stimmt.

Ich würde eher mit einem Datumswert arbeiten.

  • 2 Wochen später...

Upps hatte deinen Beitrag übersehen... Hast recht das ist einfacher ;-)...

Hätte ich das früher gelesen....

Naja :-) Meine Schuld...

Gruß

debitux

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.