Seite 1 von 1

Rechteverwaltung Benutzer-Bereiche Anzeigefehler

Verfasst: Do 1. Mär 2007, 16:29
von Oldperl
Hallo,

In der Rechteverwaltung eines Benutzers unter Bereiche werde mir die Hauptpunkte (Artikel, Kategorien, etc.) nicht angezeigt. Es fehlt immer die komplette Zeile. Die Unterpunkte (z.B. Artikel löschen, Artikel einfrieren, etc.) werden angezeigt, nur nicht in der selben Reihenfolge wie in einer funktionierenden Installation.

Desweiteren zeigt mir der IE einen Javascriptfehler an, das eine Variable 'area.xxxx Null oder kein Objekt' sei.

Dieser Fehler tritt komischerweise nur auf meinem lokalen Server auf.

Linux FC4
PHP 5.0.4
MySQL 4.1
Apache 2

Ich vermute das es etwas mit der Serverkonfiguration zu tun hat, steh aber im Moment total auf dem Schlauch.

Hat evtl. schon jemand das gleiche Problem gehabt?

Achja, auf anderen Servern im Web funzt alles und am Client-PC liegts wohl auch nicht, da mit 3 verschiedenen PC's getestet.

Vielen Dank für eure Hilfe ;-)

Gruß aus Franken

Ortwin

Verfasst: Do 1. Mär 2007, 17:15
von emergence
errorlog einträge ?
contenido version ?

Verfasst: Do 1. Mär 2007, 17:22
von Oldperl
contenido 4.6.8 - 4.6.17 (CVS)

Keinerlei Einträge im errorlog

Gruß

Ortwin

Verfasst: Do 1. Mär 2007, 21:50
von emergence
hast du einen screenshot davon wie die fehlerhafte reihenfolge aussieht ?

Verfasst: Do 1. Mär 2007, 23:52
von HerrB
Gab es da nicht mal den Effekt, dass bestimmte Einträge in der DB in einer bestimmten Reihenfolge vorliegen mussten? Mal unter Bugs gucken.

Gruß
HerrB

Verfasst: Mo 5. Mär 2007, 19:10
von Oldperl
... eine Nacht und etliche Tassen Cappu später 8)

@HerrB
Es liegt/lag nicht an der Reihenfolge der DB.

@emergence
es ist leicht nachzuvollziehen, nachdem ich nun weiß woran es lag.

in der con_area wird im Feld parent_id entweder die Bezeichnung des Elternelements (z.B. "groups") oder, falls es die oberste Ebene ist, eine "0" eingetragen.
Beim Dump der Datenbank vom Server mit phpmyadmin (2.6.0-rc2 auf MySQL 4.0.21) wird aber diese "0" im varchar-field parent_id einfach unterschlagen und ein Leereintrag erstellt. :?
Dieses sowohl beim Dump in Datei, als auch im SQL-Fenster von phpmyadmin.

Diese (doofe) Null wird aber bei der Erstellung des array $right_list in includes/rights.inc.php benötigt.

Code: Alles auswählen

while($db->next_record())
        {
                if($db->f("parent_id")=="0"){
                             $right_list[$db->f("name")][$db->f("name")]["perm"]=$db->f("name");

                             $right_list[$db->f("name")][$db->f("name")]["location"]=$db->f('location');


                }else{
                             $right_list[$db->f("parent_id")][$db->f("name")]["perm"]=$db->f("name");
                             $right_list[$db->f("parent_id")][$db->f("name")]["location"] = $db->f('location');
                }

                $sql="SELECT * FROM ".$cfg["tab"]["actions"]." WHERE idarea='".$db->f("idarea")."' AND relevant='1'";
                $db2->query($sql);
                while($db2->next_record())
                {

                      if($db->f("parent_id")=="0"){
                              $right_list[$db->f("name")][$db->f("name")]["action"][]=$db2->f("name");


                      }else{
                              $right_list[$db->f("parent_id")][$db->f("name")]["action"][]=$db2->f("name");

                      }



                }


         }
Hier wird die Erstellung des arrays über 'parent_id' == "0" gesteuert, fehlt die Null in der DB kommt ein vermurkstes array raus, das in der weiteren Verarbeitung den besagten Fehler macht.

Sicherlich kein Bug von Contenido, aber vielleicht wäre es überlegenswert eine andere Nichtbelegung für ein varchar-Feld zu nehmen als gerade eine Zahl. Auch ein NULL Eintrag läßt sich recht gut abfragen.

Zumindest könnte man die Erstellungsroutine insoweit ändern, das auch ein leeres parent_id-Feld überprüft wird.

Code: Alles auswählen

if($db->f("parent_id")=="0" || $db->f("parent_id")==""){
Gruß aus Franken

Ortwin

Verfasst: Mo 5. Mär 2007, 19:30
von HerrB
Klingt gut. Verschoben.

Gruß
HerrB

Verfasst: Mo 5. Mär 2007, 19:41
von emergence
wieso klingt gut ?

ähm, nein...

und ja, coole fehler situation.. nach deine schilderung:
das eine 0 bei einem dump unterschlagen wird, ist sowas von nicht vorhersehbar, dass ich sagen muss -> ist echt pech...
einfach ein bug der phpmyadmin 2.6.0-rc2 version, der dir da das kreuz gebrochen hat...
...aber vielleicht wäre es überlegenswert eine andere Nichtbelegung für ein varchar-Feld zu nehmen als gerade eine Zahl. Auch ein NULL Eintrag läßt sich recht gut abfragen.
jetzt mal ne blöde frage...

wieso nur bei einem user ?
müsste sich ja bei jedem user auswirken ?
wird nicht die einzige 0 im db dump gewesen sein ? -> sollen dann alle abgefangen werden ?

Verfasst: Mo 5. Mär 2007, 20:04
von Oldperl
@emergence
generell hast du ja recht, daher ja auch kein Bug in meinen Augen.

Trotzdem bin ich der Meinung das es nicht die feine englische Art ist mit einer 0 im Textfeld zu arbeiten, zumal es ja ein NULL in MySql gibt. Andere Nullen sind nur betroffen, wenn sie in varchar allein stehen, meistens nimmt man ja für Zahlen wohl int. :roll:

Ob andere Benutzer damit schon mal ein Problem hatten weiß ich nicht, bügelt man eine neue Installation drüber wäre der Fehler auch weg, da die Felder neu geschrieben werden.

Bin halt der Meinung es tut keinem weh die Abfrage zu ergänzen, aber das überlass ich dann den Contenido-Experten dies zu entscheiden :wink:

Gruß aus Franken

Ortwin

Verfasst: Mo 5. Mär 2007, 20:18
von emergence
ich sag zu dieser gewünschten änderung nein...
ich halte es einfach nicht für sinnvoll...

ich hab mich lange genug mit dem rechtesystem beschäftigt, dass ich sagen kann, mir ist dieser fall, dass dort nichts drinnen steht, noch nicht begegnet...

Verfasst: Mo 5. Mär 2007, 20:23
von emergence
Oldperl hat geschrieben:Trotzdem bin ich der Meinung das es nicht die feine englische Art ist mit einer 0 im Textfeld zu arbeiten, zumal es ja ein NULL in MySql gibt. Andere Nullen sind nur betroffen, wenn sie in varchar allein stehen, meistens nimmt man ja für Zahlen wohl int. :roll:
nein, varchar bedeutet nicht nur zeichen sondern auch ziffer...
gilt insbesondere für das feld parent_id in dieser tabelle...
Oldperl hat geschrieben:Ob andere Benutzer damit schon mal ein Problem hatten weiß ich nicht, bügelt man eine neue Installation drüber wäre der Fehler auch weg, da die Felder neu geschrieben werden.
ich hab gemeint, bei den usern in deiner contenido installation...
die annahme -> ein upgrade via contenido setup -> hätte das problem vermutlich auch behoben... -> stimmt -> da die inhalte dieser tabelle neu eingetragen werden...

Verfasst: Di 6. Mär 2007, 08:36
von Oldperl
emergence hat geschrieben:ich hab mich lange genug mit dem rechtesystem beschäftigt, dass ich sagen kann, mir ist dieser fall, dass dort nichts drinnen steht, noch nicht begegnet...
Ich fahr auch lang genug Auto und mir ist noch nie ein Reifen geplatzt, soll aber wohl passieren. :lol:
Scherz beiseite.
varchar->ja mir ist bekannt das varchar auch mit Zahlen beschrieben werden darf/kann.
user->klar tritt das Problem dann bei allen Usern auf bei denen man Rechte vergeben kann.
annahme->war es nicht, da es nachvollziehbar ist, das die Tabelle neu geschrieben wird (siehe setup.sql).

Schlußendlich war es ja nur ein Vorschlag, ob es dann in den Core übernommen wird...... :roll:
Anwenderfreundlich wäre zumindest ein Abfangen bei fehlerhaftem Datenbestand und/oder eine Meldung im error.log (da steckt dann aber noch mehr Arbeit drin) und ich stimme Dir zu, dass dies ein bug von phpmyadmin ist und nicht von Contenido.

So und nu wünsch ich einen schönen erfolgreichen Tag :D

Gruß aus Franken

Ortwin