Seite 1 von 2

functions.con.php/conDeleteart()

Verfasst: Mo 9. Mai 2005, 16:13
von calvini
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:

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);
}
Siehe auch hier, bei den Kategorien ist das selbe passiert.

Verfasst: Mo 9. Mai 2005, 16:17
von emergence
ähm ja code mit code umschließen...

dito:
schau mal da
-> http://www.contenido.org/forum/viewtopi ... tecategory

Verfasst: Mo 9. Mai 2005, 16:21
von calvini
emergence hat geschrieben:ähm ja code mit code umschließen...

Code: Alles auswählen

 ist so schlecht lesbar - kann ich aber gerne machen. Wie wäre es mit einem [php]-Tag (siehe [url=http://www.php.de]hier[/url])?

Verfasst: Mo 9. Mai 2005, 16:27
von emergence
...bei code bleiben zumindestens die einrückungen bestehen...

das geht hier leider nicht
[php]<? echo "hello world"; ?>[/php]
vielleicht kann timo das ja implementieren... ich hab da ja mal was gesehen....

ad. schlecht lesbar... ist vermutlich nur im firefox/mozilla so ...

Verfasst: Mo 9. Mai 2005, 19:22
von calvini
emergence hat geschrieben:ad. schlecht lesbar... ist vermutlich nur im firefox/mozilla so ...
Einen entsprechenden Mod gibt es hier, wobei der Einbau wohl nicht ganz trivial ist. Bei mir siehts auch im IE 6.0 doof aus, besonders weil die Unterlängen abgeschnitten werden.

Verfasst: Mo 9. Mai 2005, 19:27
von HerrB
Reine Neugier: Was sind denn Unterlängen?

Edit:
Un|ter|län|ge, die; -, -n (Schriftw.): Teil eines Buchstabens, der über die untere Grenze bestimmter Kleinbuchstaben hinausragt. ...
Nicht, dass ich es jetzt verstanden hätte...

Gruß
HerrB

Verfasst: Mo 9. Mai 2005, 19:33
von emergence
calvini hat geschrieben:Einen entsprechenden Mod gibt es hier, wobei der Einbau wohl nicht ganz trivial ist.
genau den hab ich gemeint...
calvini hat geschrieben:Bei mir siehts auch im IE 6.0 doof aus, besonders weil die Unterlängen abgeschnitten werden.
hab zwar auch ie6 aber das die unterlängen fehlen wäre mir neu...

Verfasst: Mo 9. Mai 2005, 20:17
von calvini

Code: Alles auswählen

Unterlänge
Wenn ich das bei mir anschaue, fehlt dem G die Unterlänge...
Guckst Du hier (@HerrB: das, was Du nicht siehst, ist die Unterlänge ;)):

Bild

Verfasst: Mo 9. Mai 2005, 20:28
von emergence
also meine unterlängen stimmen :lol:

Verfasst: Mo 9. Mai 2005, 20:41
von calvini
emergence hat geschrieben:also meine unterlängen stimmen :lol:
Tja, winzigweich, Quelle aller Wunder :? ...

Verfasst: Mo 9. Mai 2005, 20:48
von emergence
calvini hat geschrieben:
emergence hat geschrieben:also meine unterlängen stimmen :lol:
Tja, winzigweich, Quelle aller Wunder :? ...
wäre möglich...
heute -> japanischen charset installiert... -> seit ich das installiert hab, funktionieren plötzlich die sonderzeichen in meinem mail programm ????? und 6 monate hab ich gesucht...

Verfasst: Mo 9. Mai 2005, 20:53
von calvini
Das Microsoft-Dilemma:
  • Theoretisch führen alle Wege zum Ziel.
  • Praktisch gilt dies nicht für den gerade beschrittenen Weg.
  • Ausnahme: Der Weg ist so abstrus, dass er nicht nachvollzogen werden kann.
:roll:

Verfasst: Mo 9. Mai 2005, 21:00
von emergence
ähm... ja ich glaub das thema würd' jetzt zu weit führen... (da könnt ich mich stundenlang aufregen...)
ich seh mir jetzt noch die x-files an... somit...
gute nacht...

Verfasst: Mo 9. Mai 2005, 21:24
von calvini
emergence hat geschrieben:schau mal da
-> http://www.contenido.org/forum/viewtopi ... tecategory
Sehe ich das eigentlich richtig, dass die dort angegebenen Funktionen conDeleteart() und strDeleteCategory() nur die Datensätze der aktuellen Sprache löschen :shock:? Und wenn ja, macht das Sinn? Erscheint mir damit sehr aufwändig, einen Artikel oder gar eine Kategorie aus einer mehrsprachigen Umgebung zu löschen. Wenn ich da 5 Sprachen habe, lösche ich mir ja einen Wolf.

Das Löschen sollte meines Erachtens sprachübergreifend erfolgen (wie auch das Anlegen).

Verfasst: Mo 9. Mai 2005, 21:29
von timo
Ähm nein. Das ist bewusst so gemacht, denn was ist, wenn du einen Artikel in Sprache A brauchst, aber in Sprache B nicht? Der Fall kommt bei einem unserer Kunden (mittlerweile an die 35 Sprachen) sehr häufig vor. Und da ein Artikel erstmal nur in der Sprache existiert, in der er angelegt wurde, muß er erst syncronisiert werden.

Vom praktischen Aspekt wird jeweils der Redakteur, der für eine Sprache zuständig ist, entscheiden, ob der Artikel in seiner Sprache sinnvoll ist. Wenn nicht, wird er ihn löschen. Würde sich das auf alle Sprachen auswirken, wäre das fatal.