Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Zeitfehler

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
jeep42
PostRank 1
PostRank 1
Beiträge: 15
Registriert: 21.05.2005, 19:40

Beitrag von jeep42 » 04.06.2005, 11:43

Hallo,

die folgende SQL Ausführung hat einen Fehler denn Sie löscht alle Mitglieder die sich noch nie eingeloggt haben 0000.00.00 bis 5 Tage :lol:

Mitglieder die aber über 5 Tage noch nie eingeloggt waren löscht die SQL Ausführung nicht 8)

Dabei sollte die SQL Ausführung genau das Gegenteil machen Sie soll alle Mitglieder löschen die sich noch nie 5 Tage nach dem Anmeldedatum eingeloggt haben.

Was muss ich ändern das es richtig funzt?

$query = "Delete FROM Userdaten WHERE `lastlogin` = '0000-00-00'
AND TO_DAYS(anmeldedatum) + 5>= TO_DAYS(NOW())";
mysql_db_query($dbname,$query,$conn) or die (mysql_error());


Von der Logik her einfach das > auf < ändern wenn man das im Bezug die ausgeführte SQL Ausführung definiert...

Aber das wieder spricht sich vollkommen entgegen der mathematischen Logik entsprechen .... ich denke zu 100 % der Fehler liegt woanders aber wo?

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 04.06.2005, 13:00

Hallo,

um Dir helfen zu können, sollten wir noch wissen in welchen Format das Feld TO_DAYS hat.

mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

jeep42
PostRank 1
PostRank 1
Beiträge: 15
Registriert: 21.05.2005, 19:40

Beitrag von jeep42 » 04.06.2005, 13:07

Outman hat geschrieben:Hallo,

um Dir helfen zu können, sollten wir noch wissen in welchen Format das Feld TO_DAYS hat.

mfg. Nico

TO_DAYS ist weder eine tabelle noch einen Spalte bzw ein Feld sondern als Befehl in der obigen SQL Ausführung

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 04.06.2005, 13:55

jeep42 hat geschrieben:
Outman hat geschrieben:Hallo,

um Dir helfen zu können, sollten wir noch wissen in welchen Format das Feld TO_DAYS hat.

mfg. Nico

TO_DAYS ist weder eine tabelle noch einen Spalte bzw ein Feld sondern als Befehl in der obigen SQL Ausführung
Hallo,

habe mir leider nicht genau den Sql angesehen. :)

So müste es gehen:

$query = "Delete FROM Userdaten WHERE `lastlogin` = '0000-00-00'
AND (TO_DAYS(NOW()) - 5) >= TO_DAYS(anmeldedatum)";
mysql_db_query($dbname,$query,$conn) or die (mysql_error());

mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

jeep42
PostRank 1
PostRank 1
Beiträge: 15
Registriert: 21.05.2005, 19:40

Beitrag von jeep42 » 04.06.2005, 15:10

Hallo Nico,

Super funktioniert vom feinsten habe die Datei manuel ausführen binnen Sekunden war alles fertig :D

Werde dann einen Cronjob einrichten alles weitere geht dann automatich :D :D

Habe aber noch ein kleines mathematisches Timeproblem ...

Also eine Tabelle mit den Namen Posteingang hat unter anderem die Spalten User, Nachrichten und Timestamp.

Damit sich die SQL nicht aufbläht wie Luftballon will ich alle Nachrichten löschen lassen die älter als 31 Tage im Timestamp festgehalten sind ...

Kurze Erklärung der Spalten...

1.) User -> Hier ist die ID des Mitglieds in der Spalte festgehalten

2.) Nachrichten -> Hier sind die Nachrichte des jeweiligen Mitglied festgehalten

3.) Hier ist der Timpstamp der jeweiligen Nachricht festgehalten, der Timestamp ist wie folgend in der Spalte festgehalten: zb 12.02.2005

Im Prinzip müsste das so gehen löschen der Nachricht wenn diese grösser als 31 tage im Bezug dauf dem Timestamp ist :D

Bloss wie codet man das dass ist eben mein Problem ..

Die SQl Ausführung müsste so beginnen:

$query = "Delete FROM Posteingang WHERE ???????????????";
mysql_db_query($dbname,$query,$conn) or die (mysql_error());

Würde mich riesig freuen wenn Du mir weiter helfen könntest komme einfach mit den Time Problem nicht klar.

Besten Dank schon mal im vorraus

Outman
PostRank 6
PostRank 6
Beiträge: 394
Registriert: 03.12.2004, 22:55
Wohnort: Orlamünde

Beitrag von Outman » 04.06.2005, 15:40

Hallo,

z.b. bei einen richtigen Timestamp der mit time(); erzeugt wird:

$sql="DELETE FROM Posteingang WHERE UNIX_TIMESTAMP(NOW()) - UNIX_TIMESTAMP(Timestamp) > 2678400";
mysql_query($sql,$db) or die(mysql_error() . '<BR><i>' . $sql . '</i>');

z.b. bei einen Timestamp im Format 12.02.2005 erzeugt wird:

$sql="DELETE FROM Posteingang WHERE TO_DAYS(NOW()) - 31) >= TO_DAYS(Timestamp)";
mysql_query($sql,$db) or die(mysql_error() . '<BR><i>' . $sql . '</i>');

mfg. Nico
Webhosting Partnerprogramm mit 2 Refebenen, PHP Webspace mit .de Domain ab 2 Euro, Zusätzlich suche ich Linkpartner zum Thema "Webmaster". Suchst du einem PHP Programmierer?

Antworten