Your-pMF
     registrieren     benutzer     suche     team     kalender     hilfe     index    
Chat     downloads     link us     gästebuch     supportforum    
 

Datum mit pmf-Zeit vergleichen

original Thema anzeigen

30.11.09, 23:14:08

siebi

Hallo Habe (mal wieder) eine Frage :D Wie stelle ich es am besten an, wenn ich ein pmf-Cronscript schreiben möchte, das ein Datum im Format JJJJ-MM-TT mit dem Datum des pmf´s vergleicht und, falls dieses Datum älter ist als das aktuelle Datum, die Spalte löscht? Habe mir zwar schon das activity-Check-Script angeschaut, aber blicke da nicht so ganz durch. Da gibt es ja einige Tabellen, die untereinander verglichen werden. Habe ja nur eine, wo das Datum verglichen werden muss ;) Ich hoffe diesesmal kommt richtig rüber, was ich möchte ;) :D
01.12.09, 00:49:01

pip

daten vergleichen tust du am besten im unix timestamp. php bietet funktionen (zb. mktime) um daten vom "normalen" format (zb 01.12.2009) in den unix timestamp umzuwandeln, in der db wird meist der unix timestamp direkt gespeichert...
01.12.09, 10:39:00

siebi

Hi pip Danke dir schonmal für den Tipp :) Nun speichere ich das datum im unix timestamp. Habe mir, wie gesagt mal dein activity-script angeschaut und versucht anzupassen. Klappt aber leider nicht. Vielleicht kannst du da ja mal drüberschauen?! [PHP]query('SELECT * FROM `'.$_cfg['DB_PREFIX'].'hack_absence` WHERE `absence_to` <= '.PMF_TIME.''); while($Daten = $_db->fetch_array($result)) { $_db->query('DELETE FROM `'.$_cfg['DB_PREFIX'].'hack_absence` WHERE `user_id` = '.$Daten['user_id'].''); } ?>[/PHP]
01.12.09, 11:19:29

pip

geändert von: pip - 01.12.09, 11:20:13

dein konstrukt ist recht umständlich, eigentlich reicht da ein einfaches db-query aus :D [php]# # ### wenn eingetragenes datum < pmf-time, eintrag löschen $_db->query('DELETE FROM `'.$_cfg['DB_PREFIX'].'hack_absence` WHERE `absence_to` <= '.PMF_TIME.'');[/php] ich würde an deiner stelle zum testen erstmal den delete befehl durch ein select ersetzen und dann alles ausgeben. so siehst du genau was passieren würde. [php]# # ### wenn eingetragenes datum < pmf-time, eintrag löschen echo 'pmf_time: '.PMF_TIME.'
'; $result = $_db->query('SELECT * FROM `'.$_cfg['DB_PREFIX'].'hack_absence` WHERE `absence_to` <= '.PMF_TIME.''); while($Daten = $_db->fetch_array($result)) { print_r($Daten); echo '
'; }[/php] bin mir nicht ganz sicher was bei der PMF_TIME konstanten hinterlegt ist und kanns grad net nachgucken da ich bei der arbeit bin. wie gesagt zum vergleichen der daten brauchste bei beiden daten das gleiche format...
01.12.09, 11:34:35

siebi

geändert von: siebi - 01.12.09, 11:39:04

Hmmm, kann das stimmen? pmf_time: 1259663604 datum von heute: 1266855121 Das Datum hab ich so gespeichert: [PHP]$date_to = mktime($_POST['year_to']$_POST['month_to'],$_POST['day_to'],);[/PHP]
01.12.09, 14:16:16

pip

geändert von: pip - 01.12.09, 14:19:19

ne stimmt nicht ganz. PMF_TIME gibt wie ich erhofft / erwartet habe die aktuelle zeit als unix timestamp zurück deine eigene umwandlung ist nicht richtig, die parameter sind in der falschen reihenfolge / position. die mktime() fkt sieht so aus: [php]int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )[/php] [URL="http://www.gaijin.at/olsutc.php"]hier[/URL]kannste deine umwanlung kontrollieren. /edit wenn du die uhrzeit nicht brauchst bzw nicht eingeben lassen willst beleg sie einfach mit konstanten, zb: [php]mktime(0, 0, 0, $_POST['month_to'], $_POST['day_to'], $_POST['year_to'])[/php]
06.12.09, 11:23:34

siebi

Hier übrigens der fertige Hack, wofür ich das brauchte: [URL="http://www.your-pmf.de/file_archive.php?id=194&"]Abwesenheits-System[/URL] :D
 
Powered by: phpMyForum 4.2.1 © Christoph Roeder
SQL Error