Opened 5 years ago

Closed 4 years ago

Last modified 4 years ago

#1954 closed Bug/Fehler (fixed)

PHP Notices in checkout_process.php — at Version 15

Reported by: info@… Owned by: somebody
Priority: niedrig Milestone: modified-shop-2.0.7.0
Component: Shop Version: 2.0.5.1
Keywords: Cc:
Blocked By: Blocking:

Description (last modified by Torsten Riemer)

Guten Morgen,

nach einem Shopupdate auf Version 2.0.5.1 sind mir folgende PHP-Fehlermeldungen aufgefallen:

Undefined index: csID in File: /checkout_process.php on Line: 96
Undefined index: company in File: /checkout_process.php on Line: 98
Undefined index: suburb in File: /checkout_process.php on Line: 104
Undefined index: company in File: /checkout_process.php on Line: 118
Undefined index: suburb in File: /checkout_process.php on Line: 120
Undefined index: company in File: /checkout_process.php on Line: 132
Undefined index: suburb in File: /checkout_process.php on Line: 134

Wie sich herausstellt, können die Spalten "entry_suburb", "entry_company" und "entry_state" in der Tabelle address_book den Wert "Null" annehmen, und haben es in meinem Fall auch, da sie in der Vorherigen Shopversion nicht vorhanden waren.
Gleiches gilt auch für die Spalte "customers_cid" der Tabelle customers.

Ich schlage vor, die Definition der betroffenen Tabellen zu ändern und auch eine entsprechende Änderung im Installer aufzunehmen, sodass die Einträge nicht Null sondern leer sind.

Alternativ könnten diverse Scripte angepasst werden, beispielsweise die /includes/orders.php Zeile 438

$default_select =
        "IFNULL(ab.entry_company,'') as company,
         ab.entry_street_address as street_address,
         IFNULL(ab.entry_suburb,'') as suburb,
         ab.entry_gender as gender,
         ab.entry_postcode as postcode,
         ab.entry_city as city,
         ab.entry_zone_id as zone_id,
         ab.entry_country_id as country_id,
         ab.entry_state as state,
         co.countries_name as title,
         co.countries_id as id,
         co.countries_iso_code_2 as iso_code_2,
         co.countries_iso_code_3 as iso_code_3,
         co.address_format_id as format_id,
         z.zone_name
        ";

und Zeile 465

IFNULL(c.customers_cid,'0') as csID

Die Änderung im Installer wäre aber einfacher.
Wie reagiert der Shop wenn "customers_cid" per default "0" ist?

Grüße
Andreas

Change History (15)

comment:1 by Gerhard Waldemair, 5 years ago

Welche Version war das denn ?
Bereits seit Version 1.00 sind diese Felder vorhanden.

in reply to:  1 ; comment:2 by info@…, 5 years ago

Replying to GTB:

Welche Version war das denn ?
Bereits seit Version 1.00 sind diese Felder vorhanden.

Laut Credits war die Datenbankversion auf "MOD_1.0.6.0".
Du hast aber Recht, die Spalten sind bereits in der Datenbank des alten Shops enthalten.
Dort konnten Sie noch den Wert "NULL" annehmen, welcher durch das Update beibehalten wurde und nun die notices verursacht.
Die NULL-Werte stammen vermutlich noch aus einer alten XTC-Version.

Eine Update-Anweisung im Installer, welche die NULL-Werte ersetzt, könnte das Problem auch bei anderen Shops korrigieren. Ich habe aber keinen Überblick, wie oft es überhaupt auftritt. Ich kann auch damit leben, wenn ich es nur für diesen einen Shop durchführe.

Danke für die Klärung

comment:3 by Gerhard Waldemair, 5 years ago

Resolution: invalid
Status: newclosed

comment:4 by Torsten Riemer, 5 years ago

Milestone: modified-shop-2.0.6.0

comment:5 by FräuleinGarn, 4 years ago

Ich kann die gleichen Fehlermeldungen (mit anderen Zeilenangaben weil 2.0.6.0 statt 2.0.5.1) in Kerim's Testshop für Amazon Pay nachstellen, egal ob Amazon Pay oder jede andere Zahlungsart genutzt wird. Und der Shop ist eine 2.0.6.0 Neuinstallation. Kann also keine Altlast sein.

[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /xxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: csID in File: /xxx/checkout_process.php on Line: 102	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /xxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: company in File: /xxx/checkout_process.php on Line: 104	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /xxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: suburb in File: /xxx/checkout_process.php on Line: 110	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /xxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: company in File: /xxx/checkout_process.php on Line: 124	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /Axxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: suburb in File: /xxx/checkout_process.php on Line: 126	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /xxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: company in File: /xxx/checkout_process.php on Line: 138	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	NOTICE found for URL: /xxx/checkout_process.php	{}	{}
[2021-10-15 15:08:47]	[notice]	[modified]	[pid:11012]	Undefined index: suburb in File: /xxx/checkout_process.php on Line: 140	{}	{}

comment:6 by FräuleinGarn, 4 years ago

Ich selbst habe diese Fehlermeldungen in meinem 2.0.5.1 Shop nicht.

Aber in der Tabelle adress_book habe ich sowohl bei entry_company als auch bei entry_suburb (und auch entry_state, obwohl nicht in der Fehlermeldung) einige wenige Einträge mit NULL und das auch bei Einträgen aus 2020. Und in der Tabelle customers habe ich extrem viele Einträge mit NULL in der Spalte customers_cid. Und das bis heute. Und ich habe mit einem 2.x Shop angefangen. Kann also auch keine Altlast sein. Auch hat Gerhards selbsterstellter Adminzugang bei mir eine customers_cid und entry_suburb mit WERT NULL in der DB.

Wenn man sich den _installer anschaut, dann ist für die angesprochenen Felder auch NULL als Standard vorgegeben, während es bei anderen Feldern NOT NULL ist.

comment:7 by Torsten Riemer, 4 years ago

Kannst du bitte versuchen das bei uns im DEV-Shop nachzustellen? Notices an Drittanbieter-Testshops können diverse Ursachen haben, die nicht unser Verschulden sind.

comment:8 by FräuleinGarn, 4 years ago

Wird schwierig im Demoshop, weil man die DB nicht runterladen kann und somit nicht sieht durch welche Konstellation die DB Felder NULL werden.

Undefined index: csID in File: /checkout_process.php on Line: 102

Kann man nachstellen indem man über Paypal Cart bestellt. Dadurch erhält in der Tabelle customers die Spalte customers_cid ein NULL. entry_company, entry_suburb und entry_state bleiben aber leer.

Gleiches gilt für Kunden, die den Account über Amazon Pay erstellen.

Bei mir haben viele Kunden die mit Paypal Classic bezahlt haben auch eine customers_cid mit Wert NULL. Ich vermute aber, dass diese sich eigentlich über Paypal Cart angemeldet haben und weil sie dann nicht direkt auf die checkout_confirmation geleitet wurden sondern zum Warenkorb, dass sie dann den normalen checkout mit Paypal Classic durchlaufen haben. Das ist aber noch ein extra Fehler, den ich Gerhard schonmal geschrieben hatte. Wenn bei Paypal Cart die customers_cid nicht mehr NULL wird, dann kann ich das ja beobachten, ob es wesentlich weniger wird.

comment:9 by FräuleinGarn, 4 years ago

In Kerim's Testshop entstehen die Meldungen, weil die Testaccounts in der DB in den 4 Feldern ein NULL haben. Meldet man sich neu an, sind alle 4 Felder nicht NULL und es gibt auch keine Fehlermeldung. Liegt also bei ihm an den Testaccounts. Vermutung er lädt die über ein vorgefertigtes Skript in seine Testshops hoch und hat sich an den Standardwertne für die DB Felder orientiert.

Das bei Amazon Pay genauso wie bei Paypal Cart die customers_cid NULL wird, kann man Drittentwicklern nicht wirklich vorwerfen, da das Feld standardmäßig so belegt ist und sie davon ausgehen müssen, dass das korrekt ist. Das birgt viel Raum für zukünftige Fehlermeldungen.

Die Frage wäre also warum die Felder als Standard NULL haben, wenn der Shop die Felder (bis auf entry_state) scheinbar absichtlich immer leer lässt, egal ob über normale Registrierung oder Kundenaccount anlegen durch den Admin im Backend.

in reply to:  2 comment:10 by Torsten Riemer, 4 years ago

Milestone: modified-shop-2.0.6.1
Resolution: invalid
Status: closedreopened

Replying to info@…:

[...]
Du hast aber Recht, die Spalten sind bereits in der Datenbank des alten Shops enthalten.
Dort konnten Sie noch den Wert "NULL" annehmen, welcher durch das Update beibehalten wurde und nun die notices verursacht.
Die NULL-Werte stammen vermutlich noch aus einer alten XTC-Version.
[...]

So wie ich das sehe können die 3 Spalten (entry_company, entry_suburb & entry_state) in Tabelle address_book sowie Spalte customers_cid in Tabelle customers auch im Installer der Trunk Version noch den Wert NULL annehmen.

Replying to info@…:

[...]
Eine Update-Anweisung im Installer, welche die NULL-Werte ersetzt, könnte das Problem auch bei anderen Shops korrigieren. Ich habe aber keinen Überblick, wie oft es überhaupt auftritt. Ich kann auch damit leben, wenn ich es nur für diesen einen Shop durchführe.
[...]

Da sollten wir dann vielleicht doch nochmal an die update.sql ran und die MySQL-Datentypen einheitlich setzen.

comment:11 by Gerhard Waldemair, 4 years ago

Resolution: fixed
Status: reopenedclosed

In 13657:

partly fix #1954 - fix warning

comment:12 by Torsten Riemer, 4 years ago

Resolution: fixed
Status: closedreopened

comment:13 by Gerhard Waldemair, 4 years ago

Resolution: fixed
Status: reopenedclosed

In 13925:

fix #1954 - fix NULL customer details

comment:14 by Gerhard Waldemair, 4 years ago

In 13926:

fix #1954 - fix NULL customer details

comment:15 by Torsten Riemer, 4 years ago

Component: AdminShop
Description: modified (diff)
Note: See TracTickets for help on using tickets.