XTC Probleme String Typecasting
Nach einem Upgrade von PHP 4.3.8 auf 4.3.10 tritt beim Betrieb des Shopsystems XT Commerce ein Fehler bei Berechnungen auf. Das Problem ist eine Verbesserung einer PHP-Funktion.
Einer unserer Hostingkunden hat bereits einen Patch für das Problem des Abschneidens der Nachkommastellen entwickelt welches wir allen anderen Kunden gern zur Verfügung stellen.
inc/xtc_db_perform.inc.php macht ein implizites typecasting per (string)$value bislang und auch auf meinem lokalen XAMPP mit PHP 4.3.7 wird aus einem Zahlenwert float 24,9 ein String “24.9”.
Jetzt arbeitet die PHP Funktion besser: aus float 24,9 wird string 24,9. Aber mit fatalen Folgen für MySQL. Das erwartet nämlich beim Schreiben in ein “decimal (15,4) ” also mit 4 Nachkommastellen – ein ”.”, nicht ein ”,”. Also ist die Ursache das Typecasting per (string)$value.
Update
Mit der Veröffentlichung der Version 3.03 ist ein weiterer Fehler im Zusammenhang mit der aktuellen PHP-Version 4.3.10 aufgefallen.Es liegt nun der aktuelle Patch mit PHP Versionsabfrage und SQL-Update vor.
Bei welcher XTC Version tritt dieses Problem auf?
Habe es gerade mit der Version v2.0 RC1.2 eine Bestellung getestet und hat einwandfrei funktioniert.
Danke
Christoph
Super, und bis heute steht der Unsinn noch im Quellcode:
… wird aus einem Zahlenwert float 24,9 ein String “24.9”. …
Völlig richtig, denn 24,9 ist kein Zahlenwert vom Typ float (der hat nun mal kein Komma sondern einen Punkt). Wenn PHP aus einem String einen String macht, ist das schon korrekt.