fehler terminmodul: entfernen von anmeldemöglichkeit

Hast du einen Fehler in der aktuellen Version gefunden ? Diesen kannst du uns hier mitteilen und uns bei der Fehlersuche helfen.
Antworten
marpre
Beiträge: 29
Registriert: 21. Jan 2012, 11:00

fehler terminmodul: entfernen von anmeldemöglichkeit

Beitrag von marpre »

hallo,
es kommt zu einem sql-fehler, wenn man bei einem termin die anmelde/zusageoption löscht und schon teilnehmer zugesagt hatten. laut hilfe (blaues fragezeichen) heisst es:
Hier kann ausgewählt werden, ob eine Anmeldung zu dem angegebenen Termin möglich sein soll oder nicht.
Falls die Anmeldung nachträglich gelöscht wird, werden auch alle bisherigen Teilnehmer vom Termin entfernt.


die fehlermeldung kommt sowohl bei mir (version 2.3.2) als auch bei der aktuellen demo!!!

S Q L - E R R O R

CODE: 1451

Cannot delete or update a parent row: a foreign key constraint fails ("msabsvl_sdb"."adm_dates", CONSTRAINT "adm_FK_DAT_ROL" FOREIGN KEY ("dat_rol_id") REFERENCES "adm_roles" ("rol_id"))

B A C K T R A C E


FILE: adm_program/system/db/db_mysql.php
LINE: 62
CALL: DBCommon->db_error()

FILE: adm_program/system/db/db_mysql.php
LINE: 167
CALL: DBMySQL->db_error()

FILE: adm_program/system/classes/table_access.php
LINE: 120
CALL: DBMySQL->query()

FILE: adm_program/system/classes/table_roles.php
LINE: 87
CALL: TableAccess->delete()

FILE: adm_program/modules/dates/dates_function.php
LINE: 365 (in der demo 366)
CALL: TableRoles->delete()


gruss marpre
Benutzeravatar
fasse
Administrator
Beiträge: 6193
Registriert: 12. Nov 2005, 16:06

Re: fehler terminmodul: entfernen von anmeldemöglichkeit

Beitrag von fasse »

Hallo mapre,

vielen Dank für den Hinweis. Hier wird in der falschen Reihenfolge gelöscht.

In der Datei adm_program/modules/dates/dates_function.php muss der Block ab Zeile 364:

Code: Alles auswählen

        // die Anmeldungsmoeglichkeit wurde wieder abgewaehlt -> Rolle loeschen
        $role = new TableRoles($gDb, $date->getValue('dat_rol_id'));
        $role->delete();
        
        $date->setValue('dat_rol_id', '');
        $date->save();
besser so aussehen:

Code: Alles auswählen

        // die Anmeldungsmoeglichkeit wurde wieder abgewaehlt -> Rolle loeschen
        $role = new TableRoles($gDb, $date->getValue('dat_rol_id'));
        
        $date->setValue('dat_rol_id', '');
        $date->save();
        $role->delete();
Dann funktionert das Löschen.

Gruß
Fasse
Antworten