User anlegen verändert andere Datensätze

Hallo,

nach langer Zeit haben wir endlich heraus gefunden, warum unsere DB spinnt.

Die Tabelle oxuser hat ein neues Feld bekommen.
Es ist eine Checkbox und so aufgebaut wie OXACTIVE.
Über das Backend läßt sich alles wunderbar pflegen.

Wird ein neuer User angelegt, so werden ALLE User an dieser Stelle auf 0 zurückgesetzt.

Die Views wurden aktualisiert.
Version CE 4.7.7

Woran kann das liegen?
Kann man bei OXID alle DB-Zugriffe protokollieren lassen?

Danke
Thoni

Hallo,

Fehler bei individuellen einbauten sind sehr schwer in der Glaskugel zu sehen.
Wenn du den SQL Code postest, der die DB Abfrage durchführt könnte man dir wahrscheinlich eher helfen. Wenn man mit jedem Usererstellen alle User updated kann das schon so sein.

cya

Hallo Firefax,

ich habe keinen eigenen SQL-String erzeugt - eine Glaskugel schaut da ins Leere.

Das habe ich im Backend-Formular eingefügt:

       <tr>
            <td class="edittext" width="90">
            [{ oxmultilang ident="GENERAL_ACTIVE" }]
            </td>
            <td class="edittext">
            <input class="edittext" type="checkbox" name="editval[oxuser__oxactive]" value='1' [{if $edit->oxuser__oxactive->value == 1}]checked[{/if}] [{ $readonly }]>
            [{ oxinputhelp ident="HELP_GENERAL_ACTIVE" }]
            </td>
        </tr>

// Mein Code Start
<tr>
<td class=“edittext” width=“90”>
[{ oxmultilang ident=“GENERAL_VERMITTLER” }]
</td>
<td class=“edittext”>
<input class=“edittext” type=“checkbox” name=“editval[oxuser__oxvermittler]” value=‘1’ [{if $edit->oxuser__oxvermittler->value == 1}]checked[{/if}] [{ $readonly }]>
</td>
</tr>
// Mein Code Ende

Das Datenbank-Feld habe ich natürlich auch eingefügt.

Beim Erzeugen eines Users gibt es den Fehler - an der Stelle habe ich nichts verändert - es sind die ‘normalen’ OXID-Routinen.

Gruß
Thoni

Neue Infos:

Wenn man den neuen User gleich als ‘Vermittler’ anlegt ist alles in Ordnung.

Nimmt man nachträglich den Haken bei einem User raus, sind alle User wieder ‘0’.

Unter Anderem werden diese Queries abgearbeitet, wenn ich einen User abspeicher, der kein Vermittler ist:

update oxuser set oxid = '507f1664d2155e5c37950f13eeb55268',oxactive = '1',oxvermittler = '1',oxrights = 'user',oxshopid = 'oxbaseshop',oxusername = '333',oxpassword = '',oxpasssalt = '',oxcustnr = '11',oxustid = '',oxcompany = '',oxfname = '',oxlname = '',oxstreet = '',oxstreetnr = '',oxaddinfo = '',oxcity = '',oxcountryid = 'a7c40f631fc920687.20179984',oxstateid = '',oxzip = '',oxfon = '',oxfax = '',oxsal = 'MR',oxregister = '0000-00-00 00:00:00',oxprivfon = '',oxmobfon = '',oxbirthdate = '',oxurl = '',oxdisableautogrp = '0',oxupdatekey = '',oxupdateexp = '0',oxpoints = '0',oxfbid = '0' where oxuser.oxid = '507f1664d2155e5c37950f13eeb55268'

oxvermittler = 1 ist hier schon mal falsch.
Später kommt dann …

UPDATE oxuser SET OXVERMITTLER = 0

… für alle Datensätze - warum?


            // checkbox handling
            if ( !isset( $aParams['oxuser__oxvermittler'] ) ) {
                $aParams['oxuser__oxvermittler'] = 0;
            }

… in der Save-Funktion in user_main.php bringt nichts.
Tmp wurde geleert.

Das alte Problem mit den Checkboxen und den Post Daten, mach mal folgendes:


// Mein Code Start
<tr>
<td class="edittext" width="90">
[{ oxmultilang ident="GENERAL_VERMITTLER" }]
</td>
<td class="edittext">
<!-- Hidden field VOR dem eigentlichen Feld mit dem initial Wert -->
<input type="hidden" name="editval[oxuser__oxvermittler]" value='0'>
<input class="edittext" type="checkbox" name="editval[oxuser__oxvermittler]" value='1' [{if $edit->oxuser__oxvermittler->value == 1}]checked[{/if}] [{ $readonly }]>
</td>
</tr>
// Mein Code Ende

Genau das war es - vielen Dank !!!