Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: SQL Fehler bei Bestellbearbeitung im Adminbereich

    knoebe

    • Neu im Forum
    • Beiträge: 2
    Heute stiess ich auf einen Fehler, als ich über den Adminbereich eine Bestellung erfassen wollte. So bald ich auf "speichern" drücke, erhalte ich eine SQL Fehlermeldung, welche die folgende Anweisung bemängelt:
    Code: SQL  [Auswählen]
    UPDATE orders_total SET text = 'CHF 1'819.87', value = '1819.8700' where orders_id ='1033' and class = 'ot_subtotal'

    Nach einigem Herumsuchen (der Internet Explorer zeigt ja die Anweisung nicht so schön farbig an wie hier im Forum) wurde mir der Fehler klar: Das Tausendertrennzeichen. Dieses sieht zwar für höhere Beträge übersichtlich aus, erzeugt aber natürlich einen Fehler.

    Da ich sonst nichts zum Einstellen gefunden hatte, habe ich in der Datei /includes/classes/xtcPrice.php die Zeile 520 von

    Code: PHP  [Auswählen]
    $Pprice = number_format(floatval($price), $decimal_places, $this->currencies[$this->actualCurr]['decimal_point'], $this->currencies[$this->actualCurr]['thousands_point']);

    in

    Code: PHP  [Auswählen]
    $Pprice = number_format(floatval($price), $decimal_places, $this->currencies[$this->actualCurr]['decimal_point'], "");

    geändert. Damit gibts halt kein Tausendertrennzeichen mehr, dafür gibts keine Fehler.

    Meine Frage ist nun, ob ich das irgendwo anders hätte ändern sollen und ob meine Änderung Auswirkungen auf andere Funktionen haben kann. Vielleicht gibt es auch einen anderen Lösungsansatz?

    Danke.

    Linkback: https://www.modified-shop.org/forum/index.php?topic=28953.0

    GTB

    • modified Team
    • Gravatar
    • Beiträge: 6.306
    • Geschlecht:
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #1 am: 15. Januar 2014, 19:36:19
    Hast du als Tausender Trennzeichen tatsächlich ein '  (Hochkomma) einstellt ?

    Gruss Gerhard

    web28

    • modified Team
    • Beiträge: 9.404
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #2 am: 15. Januar 2014, 19:39:04
    @ knoebe Das Tausenderzeichen hast Du im Admin bei Deiner Währung selber eingetragen

    @GTB Schweizer machen das, die haben ja auch Löcher im Käse  :lol:

    [EDIT] Spass beiseite, es sollte durch das Zeichen keine Fehler ausgelöst werden, die Datei orders_edit.php muss überarbeitet werden

    knoebe

    • Neu im Forum
    • Beiträge: 2
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #3 am: 15. Januar 2014, 21:10:24
    Genau, wir Schweizer haben ein ' zum Trennen der Tausender. Danke aber für den Hinweis mit der Währungseinstellung, habe das dort gelöscht und meine Änderung in der xtcPrice.php rückgängig gemacht. Funktioniert auch. Weiss nicht, wieso ich dort nicht gesucht habe, hätte man drauf kommen können  :doh:

    misterwong

    • Frisch an Board
    • Beiträge: 87
    • Geschlecht:
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #4 am: 29. Oktober 2014, 17:13:13
    Hallo

    Das gleiche Problem hatte ich auch gerade.

    Gibt es schon eine korrigierte orders_edit.php ?

    Grüsse
    Gordian

    Fabrizio

    • Neu im Forum
    • Beiträge: 25
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #5 am: 05. März 2015, 13:29:39
    Hi Jungs

    Hatte das Problem auch.
    Anstelle des Hochkomma (') einfach den Accent Grave aus dem Französischen verwenden (`) .
    Dieser befindet sich auf der Tastatur beim Zirkumflex (^) "shift + ^" + Leerschlag.

    Gruss

    cooler

    • Mitglied
    • Beiträge: 190
    • Geschlecht:
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #6 am: 08. Januar 2016, 11:51:30
    Guten Tag, wie kann ich den Fehler beheben?
    Wenn man das ' einsetz kommt es zu der Fehlermeldung
    Es ist für Schweizer Shops wichtig das man das drin hat, sonst meint der Kunde es sei ein Deutscher Shop.

    Ursprungsthread
    http://www.modified-shop.org/forum/index.php?topic=34145.new;topicseen#new

    Fakrae

    • Viel Schreiber
    • Beiträge: 997
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #7 am: 08. Januar 2016, 12:26:01
    Was spricht gegen den Accent Grave als Lösung einen Post vor deinem?
    Sieht fast gleich aus und du musst keine Änderungen am Quellcode vornehmen.

    hpzeller

    • Experte
    • Beiträge: 4.129
    • Geschlecht:
    Re: SQL Fehler bei Bestellbearbeitung im Adminbereich
    Antwort #8 am: 08. Januar 2016, 13:29:36
    Hallo cooler,

    wenn dir der Vorschlag von Fakrea nicht genügt, müsstest Du die 'admin/orders_edit.php' wie folgt bearbeiten.

    ca. Zeile 836 folgenden Code
    Code: PHP  [Auswählen]
      xtc_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".$subtotal_text."', value = '".$subtotal_final."' where orders_id = '".(int)$_POST['oID']."' and class = 'ot_subtotal' ");
     
    mit diesem
    Code: PHP  [Auswählen]
      xtc_db_query("update ".TABLE_ORDERS_TOTAL." set text = '".xtc_db_input($subtotal_text)."', value = '".xtc_db_input($subtotal_final)."' where orders_id = '".(int)$_POST['oID']."' and class = 'ot_subtotal' ");
     
    oder diesem ersetzen
    Code: PHP  [Auswählen]
        $sql_data_array = array (
                                'text'  => $subtotal_text,
                                'value' => $subtotal_final
                                );

        xtc_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array, 'update', "orders_id = '".(int)($_POST['oID'])."' and class = 'ot_subtotal'");
     

    und dann ca. zeile 1120 folgenden Code
    Code: PHP  [Auswählen]
      xtc_db_query("update ".TABLE_ORDERS_TOTAL."
                       set text = '"
    .$total_text."',
                           value = '"
    .$total_final."'
                     where orders_id = '"
    .(int)$_POST['oID']."'
                       and class = 'ot_total'"
    );
     
    mit diesem
    Code: PHP  [Auswählen]
      xtc_db_query("update ".TABLE_ORDERS_TOTAL."
                       set text = '"
    .xtc_db_input($total_text)."',
                           value = '"
    .xtc_db_input($total_final)."'
                     where orders_id = '"
    .(int)$_POST['oID']."'
                       and class = 'ot_total'"
    );
     
    oder diesem ersetzen
    Code: PHP  [Auswählen]
        $sql_data_array = array (
                                'text'  => $total_text,
                                'value' => $total_final
                                );

        xtc_db_perform(TABLE_ORDERS_TOTAL, $sql_data_array, 'update', "orders_id = '".(int)($_POST['oID'])."' and class = 'ot_total'");
     

    Obige Änderungen habe ich nicht getestet.

    Gruss
    Hanspeter
    0 Antworten
    1402 Aufrufe
    04. Dezember 2014, 20:48:14 von cillex
    10 Antworten
    5273 Aufrufe
    18. Februar 2010, 19:39:33 von web28
    4 Antworten
    2707 Aufrufe
    09. Februar 2016, 15:38:53 von Bonsai
    16 Antworten
    6053 Aufrufe
    30. Dezember 2015, 14:54:17 von noRiddle (revilonetz)