Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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

Geschrieben

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 .

Geschrieben

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

Geschrieben

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

Geschrieben

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

Geschrieben

Ö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 ;) ) ...

Geschrieben

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...

Geschrieben

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

Geschrieben

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...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...