Seite 1 von 2
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 10:44
von jeep42
Hallo
Ich habe Tabelle die heisst "Mitglieder" in der Tabelle sind unter anderem 2 Spalten "Anmeldedatum" und "Lastlogin"
Jetzt möchte ich eine SQL Delete Anweisung schreiben so das in der Tabelle Mitglieder alle Mitglieder gelöscht werden die 4 Tage dem Anmeldedatum immer noch kein Login hatten
Beisspiel Anmeldedatum 26.05.2005 - Lastlogin - 00.00.0000 also wenn der Wert 00.00.0000 nach 4 Tagen vom Anmeldedatum immer noch in der Spalte Lastlogin 00.00.0000 ist soll gelöscht werden
Wie schreibe ich die Delete Anweisung...
$query="DELETE FROM Mitglieder.....................................................";
mysql_db_query($dbname,$query,$conn) or die (mysql_error());
Verfasst:
von
SEO Consulting bei
ABAKUS Internet Marketing Erfahrung seit 2002
- persönliche Betreuung
- individuelle Beratung
- kompetente Umsetzung
Jetzt anfragen:
0511 / 300325-0.
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 11:38
von Ice Man
Welches Forum ?
für phpbb gibts da ein Klasse Mod.
Da kannste inaktive und andere User super Löschen.
Mit einem Befehl dürfte das nicht gehen.
Am einfachsten so:
Abfrage sortieren nach Anmeldedatum.
Im Ergebnis (am Besten ne Tabelle zum Anschauen) dann Login Date - Last Login.
Dann eine IF abfrage, wenn $ergebniss > 4 Tage dann delete, sonnst nix
So würde es gehen.
Aber sag mal lieber Typ des Forums.
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 12:30
von Airport1
mysql bietet fuer sowas zum einen den Typ
timestamp
(aufpassen, wenn der 1. nicht mit sich selber upgedated wird, wird er immer auf NOW() upgedated) an und zum anderen eine wunderschoene INTERVAL Funktion. Mehr auf mysql.com in der Doku.
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:31
von jeep42
hmmm also hilft mir nicht wirklich weiter....
Ich brauche schon eine richtige SQL Anweisung ...
Die Tabelle lautet Mitglieder die Spalten sind:
1. User
2. Anmeldedatum
3. Lastlogin
4. Timestamp
Dabei ist zuberücksichtigen das im Lastlogin der Wert 00.00.000 festgehalten ist wenn der User sich noch nie eingeloggt hat..
Jetzt könnte man quasi entweder den Wert aus der Spalte Anmeldedatum oder den Wert aus der Spalte Timestamp nehmen und vergleichen mit der akuellen Zeit ..
Dann die Bedingung wenn die aktuelle Zeit 4 Tage nach dem Anmeldedatum oder den Timestamp liegt und der Wert in der Lastlogin Spalte 00.00.000 ist dann soll der User gelöscht werden ....
Kann mir da jemande bitte eine eine richtige SQL Führung schreiben?
$query="DELETE FROM Mitglieder ????????????????????????????? ";
mysql_db_query($dbname,$query,$conn) or die (mysql_error());
Re: SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:33
von jeep42
Ice Man hat geschrieben:Welches Forum ?
für phpbb gibts da ein Klasse Mod.
Da kannste inaktive und andere User super Löschen.
Mit einem Befehl dürfte das nicht gehen.
Am einfachsten so:
Abfrage sortieren nach Anmeldedatum.
Im Ergebnis (am Besten ne Tabelle zum Anschauen) dann Login Date - Last Login.
Dann eine IF abfrage, wenn $ergebniss > 4 Tage dann delete, sonnst nix
So würde es gehen.
Aber sag mal lieber Typ des Forums.
Es ist eine indivuelle Programmierung kein Forumtyp
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:36
von auftragslinker
mach vorher mit
$datum= date("Y-m-d",time());
$datumvorviertagen = date("Y-m-d",mktime(0,0,0,substr($datum,5,7),substr($datum,8,10)-4,substr($datum,0,4));
$query="DELETE FROM Mitglieder WHERE Anmeldedatum < '".$datumvorviertagen."' AND lastlogin = '0000-00-00'";
Re: SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:43
von jeep42
auftragslinker hat geschrieben:mach vorher mit
$datum= date("Y-m-d",time());
$datumvorviertagen = date("Y-m-d",mktime(0,0,0,substr($datum,5,7),substr($datum,8,10)-4,substr($datum,0,4));
$query="DELETE FROM Mitglieder WHERE Anmeldedatum < '".$datumvorviertagen."' AND lastlogin = '0000-00-00'";
Wow sieht super aus verstehe ich auch alles bloss die Datum Variebeln verstehe ich nicht ganz ...
warum? 5,7, 8,10 -4 ????
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:45
von auftragslinker
erste zeile wird das heutige datum als string produziert. in der zweiten zeile teilt er
den string nach monat, tag und jahr auf, sagt gleichzeitig tag-4 und baut daraus wieder ein datumsformat....
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:52
von jeep42
axo habe aber noch einen Fehler gefunden die Tabelle heisst Mitglieder und es sollen die User aus der Spalte User gelöscht werden wenn die von Dir geschriebene Bedingung eintrifft
Ist es kein Fehler reicht es aus so wie Du es geschrieben hast das die User gelöscht werden?
Oder muss noch die Anweisung mit rein das der User gelöscht wird?
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 13:58
von auftragslinker
mit der anweisung wird die komplette zeile aus der tabelle mitglieder gelöscht. die spalte user inklusive. denke, dass es nicht sinnvoll ist, nur die spalte user zu leeren
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 14:00
von jeep42
aha das heisst ein komplettes Mitglied wird komplett mit sämtlichen Daten gelöscht?
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 14:03
von auftragslinker
die komplette zeile(n), die diese anforderung erfüllt, wird gelöscht. mit allen spalten, die drinstehen.
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 14:10
von jeep42
ja so wollte ich es haben
Ich mache just mal ein Backup dann werde die Anweisung ausführen und hier posten ob alles oki war ca. 15 Minuten

SQL Ausführung mit Datum
Verfasst: 29.05.2005, 15:18
von jeep42
hmmm funzt leider nicht ...
Kann aber auch an mir liegen ...
Sagen wir mal Du würdest nur für diese Ausführung ein Script schreiben komplett mit allen drum und dran
$datum= date("Y-m-d",time());
$datumvorviertagen = date("Y-m-d",mktime(0,0,0,substr($datum,5,7),substr($datum,8,10)-4,substr($datum,0,4));
="DELETE FROM Mitglieder WHERE Anmeldedatum < '".$datumvorviertagen."' AND lastlogin = '0000-00-00'";
DBUser
DBPass
DB
Datenverbindung öffen
Ausführung
Datenverbindung schliesen
Wie würde das aussehen?
SQL Ausführung mit Datum
Verfasst: 29.05.2005, 15:52
von Airport1
Leute, was macht ihr es so kompliziert, komplizierter gehts ja gar nicht !!
Wie schon geschrieben mal bei mysql.com die Doku lesen und dort nach den datetime Funktionen (bzw. INTERVAL) schauen (ja, da gibt es eine Suchfunktion), statt hier unwartbaren unuebersichtlichen Frickel-Code zu produzieren
Ein bisschen selber erarbeiten sollte man sich aber seine Loesung schon.
Wer mir sowas wie oben mit "kunstvollem Umherrechnen" als Loesung abliefern wuerde, den wuerde ich gleich feuern
