Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
TimeStamp + 86400--> löschen [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
TimeStamp + 86400--> löschen


 
SonicCGN
17-08-2006, 19:57 
 
Hallo !

Ich habe mir eine Ebay Abfrage gebastelt. Diese zeigt mir meine (und andere) angebotenen Artikel an.
Dieses in einem Cron was alle 15 minuten ausgeführt wird.

Zur zeit ist es so das ich erst die gesamte Tabelle lösche um sie dann mittels meines Scriptes wieder zu füllen.
Sieht so aus:
mysql_db_query( "$DBN", "TRUNCATE TABLE `ebaycron`");


Nun wollte ich aber das NUR einträge gelöscht werden wo die Endzeit (unixTimeStamp) größer als AktuelleTimeStamp OR die EbayEndzeit + 1 Tag kleiner als Aktuelle TimeStamp.

mysql_db_query( "$DBN", "DELETE FROM `ebaycron` WHERE `endtime` > date(U) OR `endtime` + 86400 < date(U)");

Also im klartext soll mir noch 24 Stunden angeziehgt werden was eigentlich schon abgelaufen ist.
Kann mir jemand weiterhelfen und meinen PHP-SQL Befehl richtigstellen ?

Cu Sonic

 
TobiaZ
17-08-2006, 20:30 
 
schau dir mal DATESUB() an.
NOW() kennst du sicher schon.

also einfach delete where datum DATESUB(jetzt, interval 1 Tag)

 
garyx7de
17-08-2006, 20:45 
 
$query = "DELETE FROM `ebaycron` WHERE `endtime` > ".time()." OR (`endtime` + 86400) < ".time().";"

 
SonicCGN
17-08-2006, 20:54 
 
Habe es jetzt so:
mysql_db_query( "$DBN", "DELETE FROM `ebaycron` WHERE endtime > NOW() OR `endtime` DATE_SUB( NOW( ) , INTERVAL 1 DAY )");
Klappert aber nicht -> bekomme zwar keinen error angeziegt aber nur wird der alte Kram nicht gelöscht.

Cu sonic

EDIT garyx7de:
Dein Code funzt nicht habe grade mal manuell einen eintrag erstellt wo ENDTIME + 1000 war. Der wurde trotzdem gelöscht :confused:

 
TobiaZ
17-08-2006, 21:04 
 
ouch. mit unix-timestamp geht das natürlich nicht. sorry.
Sind ja zwei verschiedene Formate.

 
garyx7de
17-08-2006, 22:17 
 
Original geschrieben von TobiaZ
ouch. mit unix-timestamp geht das natürlich nicht. sorry.
Sind ja zwei verschiedene Formate.
Welches Format ist dann? *grübel*

 
TobiaZ
17-08-2006, 22:26 
 
was ist das für eine Frage? Mysql macht in dem Fall mit nem Unixstamp halt nicht all zu viel. ;)

eigentlich sieht dein (garys) code gut aus. ich denke mal, dass die vorhandenen daten nicht das sind, was Threadstarter erwartet.

Bitte mal nen datenauszug. (zu löschende Daten bitte kennzeichnen.)

 
jhaase
18-08-2006, 08:43 
 
mir fällt auf, dass du von endzeit und ebayendzeit sprichst, aber nur ein feld `endzeit`hast. Zudem wird `endzeit` > time() alle Auktionen mit einer zukünftigen Endzeit löschen und das kann es nicht sein.

Es braucht nur eine Bedingung: delete ... where `endzeit` < time() - interval 1 day. [syntax edit]

Die genaue syntaxmässige Formulierung der Bedingung hängt von den Datentypen ab, also ob `endzeit`sql-datetime oder php-timestamp oder was sonst darstellte, als es INSERTed wurde. Was war es?

 
SonicCGN
18-08-2006, 16:38 
 
Nun gut... dann Poste ich mal einen Auszug aus der DB:
CREATE TABLE `ebaycron` (
`user` varchar(64) NOT NULL default '',
`title` varchar(64) NOT NULL default '',
`link` text NOT NULL,
`description` text NOT NULL,
`pubdate` varchar(24) NOT NULL default '',
`currentprice` int(10) NOT NULL default '0',
`endtime` int(10) NOT NULL default '',
`bidcount` varchar(5) default '0',
`category` varchar(64) NOT NULL default '',
`auctiontype` varchar(64) NOT NULL default ''
) TYPE=MyISAM;

--
-- Daten für Tabelle `ebaycron`
--
Insert-Statements wegen Mega-Überbreite entfernt.
wahsaga

Das sind die Daten die ich aus dem RSS von EBAY ziehe.

Dort ist auch die EndZeit (endtime) hinterlegt. Diese möchte ich nach Ablauf NICHT sofort löschen sondern erst nach einem Tag !

Cu Sonic

 
wahsaga
18-08-2006, 16:44 
 
Original geschrieben von SonicCGN
`endtime` varchar(10) NOT NULL default '',
Und VARCHAR halten wir für einen geeigneten Spaltentyp, um Datumsberechnungen damit durchzuführen ...?

 
SonicCGN
18-08-2006, 20:21 
 
Stimmt.. Hab es mal in INT geändert.

 
TobiaZ
18-08-2006, 20:24 
 
AUTSCH!

wenn du schon änderungen vornimmst, dann nimm doch einen geeigneten Spaltentyp, um Datumsberechnungen damit durchzuführen

 
SonicCGN
18-08-2006, 20:34 
 
Was ist da Treffender als INT ??? -> bigINT ???

 
TobiaZ
18-08-2006, 20:36 
 
Date oder DateTime. u.U. auch Timestamp

 
jhaase
18-08-2006, 21:28 
 
Original geschrieben von SonicCGN

Das sind die Daten die ich aus dem RSS von EBAY ziehe.
Von dort kommt auch die EndZeit (endtime) .
Was für ein Datumformat ist die Endzeit auf Ebay?

 
SonicCGN
18-08-2006, 21:31 
 
Original geschrieben von jhaase
Was für ein Datumformat ist die Endzeit auf Ebay?

Wurde oben schon öfters festgestellt :rolleyes:

Hat sich aber soeben erledigt das ich es mir bei phpMyAdmin abgeschaut habe;
mysql_db_query( "$DBN", "DELETE FROM `ebaycron` WHERE `endtime` > UNIX_TIMESTAMP() OR (`endtime` + 86400) < UNIX_TIMESTAMP()");

So klappt es wunnaba. Hoffe ich..

Dennoch .. thänxx an alle.

Cu Sonic

 
jhaase
18-08-2006, 21:39 
 
Mir gefällt die Bedingung

WHERE `endtime` > UNIX_TIMESTAMP()

immer noch ausserordentlich.

 
TobiaZ
18-08-2006, 21:49 
 
Naja, vielleicht optimiert er das ganze noch durch ein AND 1 oder so. ;)

 
SonicCGN
18-08-2006, 22:55 
 
Jaja... macht euch nur lustig :huep:

Funzt aber...

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:15 Uhr.