Dialog Kategorie / Artikel zuordnen ist leer

Hallo,

nach der Umstellung auf PHP 7.2 können können im Shop (Oxid CE 4.10.x) keine Kategorien bzw. Artikel zugeordnet werden.

Zum Beispiel unter Kundeninformationen -> Aktionen verwalten werden in dem Dialog “Artikel zuordnen” keine Artikel angezeigt (Spalte: “Alle verfügbaren Artikel”) und können demzufolge keiner Aktion zugeordnet werden. Einer Aktion bereits zugeordnete Artikel (Spalte: “Zugeordnete Artikel”) werden ebenfalls nicht angezeigt.

In der Adressleiste vom Dialog ist die index.php gefolgt von mehreren Parametern angegeben. Die eigentliche Funktionalität ist dort allerdings nicht zu finden. Im Dialog wird auch keine Warnung oder Fehlermeldung angezeigt. In welcher Datei ist nach dem Fehler bzw. der Funktionalität zu suchen?

Welches x? Ich hab hier PHP 7.2 mit OXID 4.10.8 und Artikel werden im Popup angezeigt.

Hallo,
vielen Dank für die Rückmeldung!

Aktuell wird noch die 4.10.1 verwendet. Wir mussten zuerst die PHP-Version aktualisieren und wollen demnächst auch das Shop-System updaten.

Welche Datei(en) werden für den Dialog benötigt? Dann könnten wir diese als Workaround schon erneuern, bevor wir uns an die Datenbank und Module wagen :wink:

Hallo,

Shop Version CE 4.10.7 PHP 7.1

Mir ist aufgefallen, dass bei Artikel - Kategorien zurordnen zwar nichts im rechten Fenster des Popup angezeigt wird, aber wenn ich dort die Zuordnung ganz normal vornehme, erscheint der Artikel ganz normal im Shop da, wo ich ihn zugeordnet habe.Wird halt nur nicht im Backend angezeigt.

Wenn ich im Backend über Kategorien - Artikel zuordnen die Zuordnung vornehme, dann ist es so wie es sein soll.

Hallo,

vielen Dank für die Rückmeldungen.

Der Shop wurde jetzt auf die Version 4.10.8 aktualisiert. Auch in dieser Version wird nichts in den getesteten Dialogen angezeigt:

Artikel verwalten → Artikel → Erweitert → Kategorien zuordnen
Artikel verwalten → Kategorien → Stamm → Artikel zuordnen
Shopeinstellungen → Versandkostenregeln → Stamm → Länder zuordnen
Shopeinstellungen → Versandkostenregeln → Artikel-> Kategorien zuordnen
Shopeinstellungen → Versandkostenregeln → Artikel-> Artikel zuordnen
Kundeninformationen → Aktionenverwalten → Stamm → Produkt zuordnen

Das gleiche Ergebnis mit PHP Version 7.2.18 und 7.1.29. Weitere Probleme wurden bis jetzt zum Glück nicht festgestellt. Ich bin aber echt am verzweifeln. So ist der Shop trotzdem nicht weiter nutzbar :confused:

Hat jemand noch eine Idee wie der Fehler zu finden ist bzw. wie das Problem behoben werden kann?

Es liegt prinzipiell wohl nicht an der Oxid-Version und auch nicht an der PHP-Version. Du könntest zweierlei machen:

  • Das Problem eingrenzen, z.B. einen frischen Shop aufsetzen und schauen ob das Problem da auch besteht, falls nein schauen was du ändern musst (z.B. Tabellen, Module etc. vom Problemshop kopieren) damit das Problem auftritt.
  • Debuggen, die Listen werden über Ajax geladen, schauen ob was auffälliges in den Ajax-Responses steht (Networkingtab in der Browserkonsole). Erstellt werden die Listen in application/controllers/admin/ajaxlistcomponent.php in der Methode processRequest. Da kannst du schauen ob bei _outputResponse oder bei _getData irgendwas schief läuft, z.B. SQL-Statements ausgeben lassen und testen, schauen ob json_encode einen Fehler zurückgibt etc.

Hallo leofonic,

vielen Dank für die hilfreichen Hinweise!

Beginne gleich mit der Fehlersuche und werde dann berichten :wink:

Hallo,

also der Shop läuft im Testsystem unter PHP 5.x problemlos. Sobald auf PHP 7.2 umgestellt wird, entsteht der Fehler immer noch.

In der ajaxlistcomponent.php sind die Ergebnisse (Zugeordnete Artikel) in beiden PHP-Versionen der function processRequest, $this->_getData sowie $this->outputResponse gleich und die Artikel werden im Shop auch korrekt angezeigt. Was ich dabei festgestellt habe, sobald mit PHP 5.x in der function processRequest ein Fehler entsteht, werden im Dialog auch keine Artikel angezeigt.

In welcher Funktion werden Alle verfügbaren Artikel ausgelesen, evtl. entsteht dort der Fehler?

Beim Testen mit PHP 7.2 ist mir noch aufgefallen, dass unter beiden Feldern im Dialog ganz kurz so etwas wie “… Loading” angezeigt wird, dann sind die Felder leer. Im Drop-Down über dem linken Feld, werden auch alle Kategorien angezeigt.

Hat jemand einen Tipp wie man den Fehler weiter eingrenzen kann und das Problem lösen?

Wie ist der Shop auf PHP7 vorbereitet worden? - es müssen ja auch noch ein paar Dateien geändert werden …
Mit dieser Anleitung / Modul gehts:

Na eben in der methode _getData. Ob Artikel drin sind oder nicht kannst du in der Response von oxajax.php in der Browserkonsole sehen.

Hallo zusammen,

vielen Dank für die sehr guten Infos!

Der Shop wurde bereits wie in dem Artikel von patchwork.de beschrieben aktualisiert und der Tipp bzw. Screenshot von leofonic war Gold wert :wink: Ich hatte in der Netzwerkanalyse nur die Kopfzeilen und Parameter betrachtet. In der Antwort war dann der Fehler zu finden und relativ einfach zu beheben:

Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /shop/core/oxlang.php on line 313

Für was ist bei dem PHP7 Update (Beitrag von patchwork.de) die Zeile 21 (var $fetchMode=false;) in \core\adodblite\adodbSQL_drivers\mysqli erforderlich?

Wenn die Frage noch geklärt ist, werde ich das Paket mit den für PHP7 optimierten Dateien aus der Shop-Version 4.10.8 hier zu Verfügung stellen. Dabei sind dann auch noch einige Warnungen im Admin-Bereich behoben, damit es keine störenden Meldungen gibt, wenn der Shop nicht im “Produktivmodus” betrieben wird!