|
|
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 11:44 : SQL Ausführung mit Datum |
|
|
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()); |
|
| Nach oben |
|
 |
Ice Man

: 04.06.2003 : 2343
|
| : 29.05.2005, 12:38 : SQL Ausführung mit Datum |
|
|
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. |
|
| Nach oben |
|
 |
Airport1


: 16.08.2004 : 4491 : Backnang / bei Stuttgart
|
| : 29.05.2005, 13:30 : SQL Ausführung mit Datum |
|
|
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.
Linktauschanfragen zwecklos
http://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
http://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
http://www.ranking-hits.de/ Counter & PR Service |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 14:31 : SQL Ausführung mit Datum |
|
|
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());
Zuletzt bearbeitet von jeep42 am 29.05.2005, 14:37, insgesamt 2-mal bearbeitet |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 14:33 : Re: SQL Ausführung mit Datum |
|
|
| Ice Man hat Folgendes 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 |
|
| Nach oben |
|
 |
auftragslinker

: 21.04.2005 : 526
|
| : 29.05.2005, 14:36 : SQL Ausführung mit Datum |
|
|
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'"; |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 14:43 : Re: SQL Ausführung mit Datum |
|
|
| auftragslinker hat Folgendes 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 ???? |
|
| Nach oben |
|
 |
auftragslinker

: 21.04.2005 : 526
|
| : 29.05.2005, 14:45 : SQL Ausführung mit Datum |
|
|
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.... |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 14:52 : SQL Ausführung mit Datum |
|
|
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? |
|
| Nach oben |
|
 |
auftragslinker

: 21.04.2005 : 526
|
| : 29.05.2005, 14:58 : SQL Ausführung mit Datum |
|
|
| 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 |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 15:00 : SQL Ausführung mit Datum |
|
|
| aha das heisst ein komplettes Mitglied wird komplett mit sämtlichen Daten gelöscht? |
|
| Nach oben |
|
 |
auftragslinker

: 21.04.2005 : 526
|
| : 29.05.2005, 15:03 : SQL Ausführung mit Datum |
|
|
| die komplette zeile(n), die diese anforderung erfüllt, wird gelöscht. mit allen spalten, die drinstehen. |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 15:10 : SQL Ausführung mit Datum |
|
|
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  |
|
| Nach oben |
|
 |
jeep42

: 21.05.2005 : 15
|
| : 29.05.2005, 16:18 : SQL Ausführung mit Datum |
|
|
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? |
|
| Nach oben |
|
 |
Airport1


: 16.08.2004 : 4491 : Backnang / bei Stuttgart
|
| : 29.05.2005, 16:52 : SQL Ausführung mit Datum |
|
|
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 
Linktauschanfragen zwecklos
http://www.bot-trap.de/ Spamschutz fuer Webmaster - zentrale Meldestelle fuer Web Spam
http://www.airport1.de/blog/ Lombagruschd Blog mid Gardadierle
http://www.ranking-hits.de/ Counter & PR Service |
|
| Nach oben |
|
 |