Hi!
Sobald ein Feld eines Profils geändert wird, möchte ich die Speicherung in meiner Tabelle 'history' loggen.
Den Aufbau der Tabelle findet ihr in meiner Topic zum Thema neue Tabelle anlegen.
Könnt ihr mir sagen, wo ich den Code einfügen muss, wenn für jedes Feld gecheckt werden soll, ob es sich verändert hat, um dann USER;TIMESTAMP;VORHERWERT;NACHHERWERT in die Tabelle zu speichern?
Vielen Dank!
Zusätzliche Funktion beim Speichern von Profilfeldern
-
- Beiträge: 42
- Registriert: 6. Aug 2009, 16:28
-
- Beiträge: 42
- Registriert: 6. Aug 2009, 16:28
Ich habe das jetzt in der user.php (Zeile 475) wie folgt gelöst. Für Anmerkungen bin ich sehr dankbar 

Code: Alles auswählen
// nur Updaten, wenn sich auch der Wert geaendert hat
if($update_field == true
&& $field_value != $this->userFieldData[$field_name]->getValue('usd_value'))
{
//Eintrag in Historie schreiben (ohne Geburtsdatum wegen Formatanpassung)
if($field_name != 'BIRTHDAY')
{
$his_message = $g_l10n->get('PRO_FIELD_EDITED', $field_name, $this->userFieldData[$field_name]->getValue('usd_value'), $field_value);
$history = new TableAccess($g_db, TBL_HISTORY, 'his');
$history->setValue('his_text', $his_message);
$history->save();
}
//Durchfuehren
$return_code = $this->userFieldData[$field_name]->setValue('usd_value', $field_value);
}
-
- Beiträge: 42
- Registriert: 6. Aug 2009, 16:28
-
- Beiträge: 42
- Registriert: 6. Aug 2009, 16:28
Das habe ich mir auch gedacht. Die Tabelle ist zwar eingetragen, aber vllt noch nicht angelegt.
Leider fehlt mir etwas du Übersicht und gestern auch ein wenig die Zeit um sie zu bekommen
So viel weiss ich:
Der Fehler entsteht, so weit ich mich erinnere in der table_access.php bei Zeile 85. $this->db schien nicht mit einem Objekt belegt zu sein.
Mein Workaround bisher (nicht besonders schön, aber tut...):
Leider fehlt mir etwas du Übersicht und gestern auch ein wenig die Zeit um sie zu bekommen

So viel weiss ich:
Der Fehler entsteht, so weit ich mich erinnere in der table_access.php bei Zeile 85. $this->db schien nicht mit einem Objekt belegt zu sein.
Mein Workaround bisher (nicht besonders schön, aber tut...):
Code: Alles auswählen
// nur Updaten, wenn sich auch der Wert geaendert hat
if($update_field == true
&& $field_value != $this->userFieldData[$field_name]->getValue('usd_value'))
{
//Eintrag in Historie schreiben (ohne Geburtsdatum wegen Formatanpassung und mit Pruefung von $g_db, wegen Fehler bei Installation)
//plus Feld darf nicht vorher leer gewesen sein, sonst sehr viele fehlerhafte Eintraege beim Fuellen der Pflichtfelder
if($field_name != 'BIRTHDAY' && !empty($g_db) && $this->userFieldData[$field_name]->getValue('usd_value') != '')
{
$his_message = $g_l10n->get('PRO_FIELD_EDITED', $field_name, $this->userFieldData[$field_name]->getValue('usd_value'), $field_value);
$history = new TableAccess($g_db, TBL_HISTORY, 'his');
$history->setValue('his_text', $his_message);
$history->setValue('his_profile_id', $this->userFieldData[$field_name]->getValue('usd_usr_id'));
$history->save();
}
//Durchfuehren
$return_code = $this->userFieldData[$field_name]->setValue('usd_value', $field_value);
}
-
- Beiträge: 42
- Registriert: 6. Aug 2009, 16:28