functions.con.php/conDeleteart()
Verfasst: Mo 9. Mai 2005, 16:13
Die Funktion löscht zuerst den Eintrag der aktuellen Sprache in art_lang, um dann den gelöschten Eintrag zu suchen und dessen idtplcfg zum Löschen der Einträge in template_conf und container_conf zu verwenden. Dies führt logischerweise dazu, dass die Einträge in template_conf und container_conf nicht gelöscht werden. Zudem wird nur die aktuelle Sprache behandelt.
Macht man das Ganze in korrekter Reihenfolge und für alle Sprachen, klappt es auch. Mein Vorschlag wäre deshalb folgender Code:Siehe auch hier, bei den Kategorien ist das selbe passiert.
Macht man das Ganze in korrekter Reihenfolge und für alle Sprachen, klappt es auch. Mein Vorschlag wäre deshalb folgender Code:
Code: Alles auswählen
function conDeleteart($idart)
{
global $db, $cfg, $lang;
$sql = "SELECT * FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".$idart."'";
$db->query($sql);
while ( $db->next_record() ) {
$idcatart[] = $db->f("idcatart");
}
##################################################
# set keywords
$keycode[1][1]="";
SaveKeywordsforart($keycode,$idart,"auto",$lang);
SaveKeywordsforart($keycode,$idart,"self",$lang);
if ( is_array($idcatart) ) {
foreach ($idcatart AS $value) {
//********* delete from code table **********
$sql = "DELETE FROM ".$cfg["tab"]["code"]." WHERE idcatart = '".$value."'";
$db->query($sql);
//****** delete from 'stat'-table ************
$sql = "DELETE FROM ".$cfg["tab"]["stat"]." WHERE idcatart = '".$value."'";
$db->query($sql);
}
}
$sql = "SELECT * FROM ".$cfg["tab"]["art_lang"]." WHERE idart = '".$idart."'";
$db->query($sql);
while ( $db->next_record() ) {
$idartlang[] = $db->f("idartlang");
}
if ( is_array($idartlang) ) {
foreach ($idartlang AS $value) {
//********* delete from content table **********
$sql = "DELETE FROM ".$cfg["tab"]["content"]." WHERE idartlang = '".$value."'";
$db->query($sql);
}
}
$sql = "DELETE FROM ".$cfg["tab"]["cat_art"]." WHERE idart = '".$idart."'";
$db->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["art"]." WHERE idart = '".$idart."'";
$db->query($sql);
# Collect the idtplcfg's for article:
$sql = "SELECT idtplcfg FROM ".$cfg["tab"]["art_lang"]." WHERE idart='$idart'";
$db->query($sql);
while ($db->next_record()) $tmp_idtplcfg[] = $db->f("idtplcfg");
# Delete all corresponding entries in tpl_conf and container_conf:
foreach ($tmp_idtplcfg as $tmp_idtplcfg) {
$sql = "DELETE FROM ".$cfg["tab"]["tpl_conf"]." WHERE idtplcfg='$tmp_idtplcfg'";
$db->query($sql);
$sql = "DELETE FROM ".$cfg["tab"]["container_conf"]." WHERE idtplcfg = '$tmp_idtplcfg'";
$db->query($sql);
}
$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);
$sql = "DELETE FROM ".$cfg["tab"]["container_conf"]." WHERE idtplcfg = '".$tmp_idtplcfg."'";
$db->query($sql);
}