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.

2 Kommentare
  1. Christoph Schram
    Christoph Schram sagte:

    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

    Antworten
  2. Bastler
    Bastler sagte:

    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.

    Antworten

Hinterlasse einen Kommentar

An der Diskussion beteiligen?
Hinterlasse uns deinen Kommentar!

Schreibe einen Kommentar zu Bastler Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert