liebe leute,
da mir momentan leider nix einfällt, möchte ich euch mal um ideen zu folgendem problem bitten:
ich habe in einer eigenen extension eine tabelle, die das feld 'datum' (in unix date format) immer bis zum 'heutigen Tag, 0:00:00' enthalten soll.
ich aktualisiere datensätze in meinem sysfolder entweder im backend oder über frontend editing mit einträgen,
die zu jedem tag eine reihe von ereignissen registrieren.
die aktualisierung kann (aber muss natürlich nicht) täglich passieren.
es soll allerdings auf jeden fall für jeden tag ein datum existieren und diese daten sollen auch immer auf 0:00 Uhr markiert sein.
das sieht dann in meiner db so aus:
uid pid tstamp crdate datum wochentag
146 321 1231542000 1231542000 1231542000 Samstag. Januar 10. 2009
145 321 1231455600 1231455600 1231455600 Freitag. Januar 09. 2009
144 321 1231369200 1231369200 1231369200 Donnerstag. Januar 08. 2009
143 321 1231282800 1231282800 1231282800 Mittwoch. Januar 07. 2009
dh. meine tstamp einträge sollen immer ausgehend vom ersten eintrag in abständen von 86400 (=24x3600) erfolgen.
momentan ist folgendes:
wenn ich einen neuen datensatz im sysfolder, oder im frontend über 'neuer datensatz nach' erstelle,
bekomme ich den datensatz automatisch mit aktuellem tstamp = datum geliefert.
gewünscht ist:
auf 'datensätze aktualisieren' soll jeweils ein neuer datumssatz ab dem letzten erfassten tag im abstand 86400 bis heute eingetragen werden.
die übrigen felder bekommen einen default wert, den ich dann anschließend je nach verfügbarkeit von ereignissen editieren kann.
wie mach ich das am günstigsten über welche t3lib oder ähnliche methoden?
(über cron job möchte ich das möglichst nicht machen!)
danke schon mal vielmals für eure anregungen - koi
na gut -
hat wohl nicht so an die sportsgeister appelliert - es geht halt auch konventionell mit
function update_Table($table, $conf){
$today = time();
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$select='*',
$table=$table,
$where = $where,
$groupBy='',
$orderBy='',
$limit=''
);
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)){
$uid = $row['uid'];
}
// Bereits bestehende Einträge ermitteln
$where = 'uid='.$uid;
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery(
$select='datum',
$table=$table,
$where = $where,
$groupBy='',
$orderBy='',
$limit=''
);
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
$lastable_date = $row['datum'];
}
// es fehlen folgende datensätze:
$insert_rows = (int)(($today - $lastable_date)/86400);
if (!$insert_rows) return FALSE;
$a = array_keys($GLOBALS['TYPO3_DB']->admin_get_fields($table));
$fields = $k = $v = array();
// fehlende datensätze aktualisieren
for ($i=1;$i<=$insert_rows;$i++) {
$uid++;
$lastable_date += 86400;
$wochentag_date = strftime("%A. %B %d. %Y", $lastable_date);
while($fv = current($a) ) {
$k[] = $fv;
if ($fv=='uid') $v[] = $uid;
else if ($fv=='datum') $v[] = $lastable_date;
else if ($fv=='tstamp') $v[] = $lastable_date;
else if ($fv=='crdate') $v[] = $lastable_date;
else if ($fv=='cruser_id') $v[] = 3;
else if ($fv=='pid') $v[] = $conf['pidList'];
else if ($fv=='wochentag') $v[] = $wochentag_date;
else $v[] = '0';
next($a);
}
reset($a);
$fields = array_combine($k, $v);
$res = $GLOBALS['TYPO3_DB']->exec_INSERTquery($table, $fields);
}
return $insert_rows;
}
hat allerdings nachteile...
- es sollten dann keine neuen einträge über be/fe - editing erstellt werden
- der beitrag gehört dann auch nicht mehr unter diese überschrift
- das ganze ist auch 'nicht so elegant' wie ichs mir vorstellte
... damit kann ich notfalls leben ... wie siehts mit euch aus ?
gruss - koi