artikel löschen - bug ???

Gesperrt
pinhead84
Beiträge: 14
Registriert: Fr 14. Jan 2005, 06:15
Wohnort: Berlin
Kontaktdaten:

artikel löschen - bug ???

Beitrag von pinhead84 »

hallo...
bei der betrachtung des quelltextes von version 4.4.4 ist mir beim löschen eines artikels folgendes kuriosum aufgefallen:

Code: Alles auswählen

    $sql = "DELETE FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."'";
    $db->query($sql);

    $sql = "SELECT idtplcfg FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."' AND idlang = '".$lang."'";
    $db->query($sql);
    $db->next_record();
    $tmp_idtplcfg = $db->f('idtplcfg');

    $sql = "DELETE FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg = '".$tmp_idtplcfg."'";
    $db->query($sql);
um den artikel-eintrag in der tabelle tpl_conf zu löschen wird in der art_lang tabelle der entsprechende fk-selektiert. jedoch findet dies statt nachdem ein delete auf art_lang schon ausgeführt wurde. d.h. das select sollte meiner meinung nach nichts gültiges liefern.

desweiteren ist mir aufgefallen, das beim löschen eines artikels - konkret nach dem löschen der tabelle tpl_conf die relation zur tabelle container_conf nicht berücksichtigt wird. ich weiß nicht ob da eine absicht hinteresteckt, deswegen frage ich mal nach - ich weiß z.B. nicht ob es dann im Zusammenhang mit Mehrsprachigkeit zu Konflikten kommen könnte - deshalb frag ich mal nach ;)

meine anpassung in der functions.con.php sieht dann folgendermaßen aus (function conDeleteart)

Code: Alles auswählen

    $sql = "SELECT idtplcfg FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."' AND idlang = '".$lang."'";
    $db->query($sql);
    $db->next_record();
    $tmp_idtplcfg = $db->f('idtplcfg');

    $sql = "DELETE FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."'";
    $db->query($sql);

    $sql = "DELETE FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg = '".$tmp_idtplcfg."'";
    $db->query($sql);
    
    // Löschen aus container_conf
    $sql = "DELETE FROM ".$cfg["tab"]["container_conf"]." WHERE idtplcfg = '".$tmp_idtplcfg."'";
    $db->query($sql);
danke schonmal im vorraus

grüße

andy
emergence
Beiträge: 10652
Registriert: Mo 28. Jul 2003, 12:49
Wohnort: Austria
Kontaktdaten:

Beitrag von emergence »

*** make your own tools (wishlist :: thx)
pinhead84
Beiträge: 14
Registriert: Fr 14. Jan 2005, 06:15
Wohnort: Berlin
Kontaktdaten:

Beitrag von pinhead84 »

danke für den link - hab nach der problematik zwar schon gesucht bin aber nich wirklich fündig geworden...

greetz
andy
Gesperrt