Seite 3 von 4

Verfasst: Mi 6. Jul 2005, 08:46
von AnPa
Hallo.
Habe mal ein Dump erstellt,
kannst du dir hier Runterladen
http://www.anpa-networks.de/contenido_dump.sql

Habe nämlich das selbe Problem :)
Im Dump befindet sich con und con1... Haben beide den selben Fehler!
Habe schon auf 64 MB hochgesetzt, also am speicher liegts nicht :)

Ps: lade in ca. 5 min hoch!

Verfasst: Mi 6. Jul 2005, 09:08
von emergence
erstmal danke für den dump
fehler ist damit reproduzierbar...
zum testen verwende ich momentan ne 4.4.5

Verfasst: Mi 6. Jul 2005, 09:16
von AnPa
Ich benutze auch 4.4.5.
Habe anfangs das System mit den Beispielen installiert, sobald ich eine eigene Kategorie anlegen wollte, waren plötzlich alle weg und ich konnte auch keine eigene mehr anlegen.

Habe mich dann entschlossen, alles runterzuwerfen und nur mit modulen zu installieren, was dann den jetzigen fehler ausmachte :)

PS: Hatte ne zeit lang ein Mysql Problem mit lock tables, da das nicht freigegeben war! Habe das nun manuel freigegeben in mysql. aber daran lags wohl auch nicht??

Verfasst: Mi 6. Jul 2005, 09:22
von emergence
ist ja intressant

in der con_cat gibts folgenden eintrag
idcat, idclient, parentid, preid, postid, status, author, created, lastmodified
0,1,0,0,0,0,,01.01.0001,01.01.0001

zusätzlich in der con_cat_lang
idcatlang, idcat, idlang, idtplcfg, name, visible, public, status, author, created, lastmodified
0,0,1,0,Hauptmenü,0,1,0,,01.01.0001,01.01.0001

hab mal das getestet -> http://contenido.org/forum/viewtopic.php?p=39083#39083

endlosschleife tritt damit nicht mehr auf...
jedoch eine verdoppelung der neu angelegten kategorie
ein weiteres anlegen weiterer unterkategorien ist dann ebenso nicht mehr möglich...

lösche ich beide zeilen in den beiden tabellen
funktioniert alles wie es soll...

Verfasst: Mi 6. Jul 2005, 09:23
von AnPa
Also sollte ich die mal löschen? :) Mach ich jetzt mal einfach...

Verfasst: Mi 6. Jul 2005, 09:25
von AnPa
Geht immer noch nicht.. Sobald ich auf "Neuen Baum Anlegen" klicke, kommt Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 15603 bytes) in /srv/www/htdocs/web1/html/contenido/contenido/includes/functions.str.php on line 207

EDIT

Habe den falschen gelöscht.. hab schon so viele drinne :)
Aber habe jetzt den Richtigen gelöscht, und sobald ich einen Namen eingebe zum anlegen kommt danach wieder fatal error, siehe oben.
und der Eintrag in der DB ist wieder der selbe !

Verfasst: Mi 6. Jul 2005, 09:35
von emergence
hmm... zum testen (mach vorher noch ein backup)

leere beide tabellen mal komplett (con_cat & con_cat_lang)#
abmelden, anmelden -> nochmals versuchen eine kategorie anzulegen...

check noch ob du das recht lock table auf wirklich bei der db hast...

Verfasst: Mi 6. Jul 2005, 09:40
von AnPa
Kann das sein das es echt an den lock table lag?
Habe mir jetzt einen eigenen mysql user angelegt, der alles darf...
Weil confixx die rechte überschrieben hat, glaub ich. nun scheint es zugehen ?

Verfasst: Mi 6. Jul 2005, 09:48
von emergence
ich tippe einfach mal darauf das bei einem fehlenden lock table recht diese beiden fehlerhaften einträge erzeugt werden...

zusätzlich kommt das mit dem an und abmelden dazu...
der angezeigte baum wird in der session gespeichert...

ich muss da noch ein wenig überlegen...

tendiere aber dazu das beim neu auslesen der einzelnen kategorien
zuerst alle einträge mit idcat 0 gelöscht werden
zusätzlich zu berücksichtigen das idcat 0 werte nicht mit selektiert werden...

ich hab jetzt mal den zweiten schritt eingebaut und getestet zu einer verdoppelung kommt es dann nicht mehr...
beim erstmaligen anlegen einer neuen kategorie wird dennoch der erste fehlerhafte eintrag mit idcat 0 angezeigt...

Verfasst: Mi 6. Jul 2005, 09:57
von emergence
also mein fix würde so aussehen:

functions.str.php

die beiden funktionen strOrderedPostTreeList, strRemakeTreeTable werden durch folgendes ersetzt...

Code: Alles auswählen

function strOrderedPostTreeList ($idcat, $poststring) {
        global $db;
        global $client;
        global $lang;
        global $cfg;

        $sql = "SELECT idcat FROM ".$cfg["tab"]["cat"]." WHERE parentid=0 AND preid='$idcat' AND idcat!=0";

        $db->query($sql);
        if ( $db->next_record() ) {
                $tmp_idcat = $db->f("idcat");
                $poststring = $poststring.",".$tmp_idcat;
                $poststring = strOrderedPostTreeList($tmp_idcat, $poststring);
        }

        return $poststring;

}

function strRemakeTreeTable() {
        global $db;
        global $client;
        global $lang;
        global $cfg;
		// Flag to rebuild the category table
		global $remakeCatTable;
		global $remakeStrTable;
		$remakeCatTable = true;
		$remakeStrTable = true;

        $poststring = "";

        $sql = "DELETE FROM ".$cfg["tab"]["cat_tree"];                    // empty 'cat_tree'-table
        $db->query($sql);

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

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

        $sql = "SELECT idcat FROM ".$cfg["tab"]["cat"]." WHERE parentid='0' AND preid='0' AND idcat!='0'";

        $db->query($sql);
        while($db->next_record())
        {
                $idcats[] = $db->f("idcat");
        }

        if (is_array($idcats)) {
                foreach ($idcats as $value) {
                        $poststring = $poststring.$value.strOrderedPostTreeList ($value, "").",";
                }
        }
        $poststring=ereg_replace(",$","", $poststring);
        $a_maincats = explode(",", $poststring);
        if (is_array($a_maincats)){
                foreach ($a_maincats as $tmp_idcat) {
                        strRemakeTreeTableFindNext($tmp_idcat,0);
                }
        }
}
hab das jetzt nochmals mit deinem orginal dump getestet
die beiden fehlerhaften einträge werden gelöscht
und die neue kategorie wird korrekt ohne verdoppelung angelegt...

Verfasst: Mi 6. Jul 2005, 10:07
von emergence
@timo

die andere sache in der selben datei
-> warum es zu den fehlerhaften einträgen kommt

strNewTree und strNewCategory

die neue id wird mittels

Code: Alles auswählen

$tmp_newid = $db->nextid($cfg["tab"]["cat"]);
angefordert...

sollte nun das recht lock table nicht vergeben sein wird der wert auf 0 gesetzt...

tja und somit kommt zu den fehlerhaften einträgen...

anders könnte ich es mir nicht erklären...

Verfasst: Mi 6. Jul 2005, 10:25
von AnPa
Also mir ist schon sehr geholfen :) Vielen Dank sag ich da mal ...
Bei mir scheint jetzt alles zu gehen! Dann kann ich wohl den Wert von 64 MB Speicher wieder runterdrehen :)

Wünsche noch einen Schönen Tag!

PS: Gibt es irgendwo ein "lern how to" wie man mit Contenido umgeht? Also designs erstellen, template usw.???

Verfasst: Mi 6. Jul 2005, 10:26
von emergence
hmm hab jetzt noch ein wenig überlegt

die beiden funktionen führen ja keinerlei tätigkeit aus wenn kein kategoriename angegeben wurde...

ich hab mir jetzt einfach gedacht ich verknüpf das mit der überprüfung ob die neu angeforderte idcat nicht auch 0 ist

Code: Alles auswählen

        $tmp_newid = $db->nextid($cfg["tab"]["cat"]);
setzt man dann einfach vor

Code: Alles auswählen

        if ($catname == "")
        {
            return;
        }
das durch folgendes ersetzt wird

Code: Alles auswählen

        if ($catname == "" || $tmp_newid == 0)
        {
            return;
        }

Verfasst: Mi 6. Jul 2005, 11:02
von emergence
nur zur info

-> http://www.contenido.org/forum/viewtopi ... 1062#51062
ist der temporäre fix den man nur anwenden sollte wenn man eine endlos schleife erhält...
man sollte anschließend bei einer 4.4.5 dafür sorgen dass das recht lock table vergeben wird.
an sich halte ich es sonst für nicht notwendig diesen teil in den cvs_head zu übernehmen...

der eigentliche fix
-> http://www.contenido.org/forum/viewtopi ... 1068#51068
damit es nicht zu den fehlerhaften einträgen kommen kann, sollte auf jeden fall in den cvs head... (sollte genügen)

Verfasst: Do 11. Aug 2005, 19:35
von sengercarhifi.de
hi, ihr seit echt genial. ich hatte dieses verdammte problem auch und wollte die ganze software in meinen papierkorb treten.

Ich frage mich nur, warum die von Contenido das Problem nicht auch haben und selbst eine Lösung veröffentlichen. naja hauptsache es gibt wenigstens ein paar geniale leute auf der welt.


man sieht sich und weiter so

gruß Jens
(am Montag den 15. Aug. 2005 startet hoffentlich jetzt endlich meine homepage mit onlineshop [genug eigenwerbung])