Ergebnis 1 bis 2 von 2

Thema: Komma abfangen

  1. #1
    Padawan Stufe III Avatar von Hawcha
    Registriert seit
    14.04.2011
    Beiträge
    217
    Themen
    17
    DANKE
    20
    Erhaltene Danke: 37

    Standard Komma abfangen

    Wir betreiben einen Patchworkshop, indem viel Meterware (Stoffe/Vliese) verkauft wird.
    Um z.B. 1.10 Meter zu bestellen ist die Eingabe von Dezimalzahlen nötig.

    Hier hat Zen Cart standartmäßig eine Überraschung auf Lager: Das Trennzeichen ist kein Komma sondern ein Punkt. (Die Amerikaner benutzen zum trennen von Dezimalzahlen standartmäßig einen Punkt).
    Benutzt ein Kunde den Num Block zur Eingabe, wird der Wert nicht übernommen und das Komma gelöscht. Dies führte bei unseren Kunden zu viel Verwirrung und Ärger.

    Zum abfagen des Kommas änderte ich folgende Datei ab:
    includes/classes/shopping_cart.php


    Code:
    function actionUpdateProduct($goto, $parameters) {
        global $messageStack; 
          for ($i=0, $n=sizeof($_POST['products_id']); $i<$n; $i++) {
          $adjust_max= 'false';
          if ($_POST['cart_quantity'][$i] == '') {
            $_POST['cart_quantity'][$i] = 0;
            }
          // Komma im Warenkorb abfangen 
            $new_qty = $_POST['cart_quantity'][$i];
            $new_qty = str_replace(',', '.', $new_qty);
            $_POST['cart_quantity'][$i]=$new_qty;
            // End Komma abfangen
            if (!is_numeric($_POST['cart_quantity'][$i]) || $_POST['cart_quantity'][$i] < 0) {
            $messageStack->add_session('header', ERROR_CORRECTIONS_HEADING . ERROR_PRODUCT_QUANTITY_UNITS_SHOPPING_CART . zen_get_products_name($_POST['products_id'][$i]) . ' ' . PRODUCTS_ORDER_QTY_TEXT . zen_output_string_protected($_POST['cart_quantity'][$i]), 'error');
            continue;
          }
          if ( in_array($_POST['products_id'][$i], (is_array($_POST['cart_delete']) ? $_POST['cart_delete'] : array())) or $_POST['cart_quantity'][$i]==0) {
            $this->remove($_POST['products_id'][$i]);
          } else {
            $add_max = zen_get_products_quantity_order_max($_POST['products_id'][$i]);
            $cart_qty = $this->in_cart_mixed($_POST['products_id'][$i]);
            $new_qty = $_POST['cart_quantity'][$i];
            
    //echo 'I SEE actionUpdateProduct: ' . $_POST['products_id'] . ' ' . $_POST['products_id'][$i] . '<br>';
            $new_qty = $this->adjust_quantity($new_qty, $_POST['products_id'][$i], 'shopping_cart');
    und zusätzlich:

    Code:
    function adjust_quantity($check_qty, $products, $stack = 'shopping_cart') {
        global $messageStack;
         if ($stack == '' || $stack == FALSE) $stack = 'shopping_cart';
          $old_quantity = $check_qty;
          
          //Komma abfangen 
          $check_qty = str_replace(',', '.', $check_qty);
          // End Komma abfagen
          
          if (QUANTITY_DECIMALS != 0) {
            //          $new_qty = round($new_qty, QUANTITY_DECIMALS);
            $fix_qty = $check_qty;
            
            // Komma abfagen
            $fix_qty = str_replace(',', '.', $fix_qty);
            // End Komma abfagen
            
              switch (true) {
                case (!strstr($fix_qty, '.')):
                $new_qty = $fix_qty;
              
              //$messageStack->add_session('shopping_cart', ERROR_QUANTITY_ADJUSTED . zen_get_products_name($products) . ' - ' . $old_quantity . ' => ' . $new_qty, 'caution');
                break;
                default:
              $new_qty = preg_replace('/[0]+$/','', $check_qty);
             
             //Komma abfangen
              $new_qty = str_replace(',', '.', $new_qty);
              //End Komma abfagen
              
    //            $messageStack->add_session('shopping_cart', 'A: ' . ERROR_QUANTITY_ADJUSTED . zen_get_products_name($products) . ' - ' . $old_quantity . ' => ' . $new_qty, 'caution');
              break;
            }
          } else {
            
            if ($check_qty != round($check_qty, QUANTITY_DECIMALS)) {
              $new_qty = round($check_qty, QUANTITY_DECIMALS);
              $messageStack->add_session($stack, ERROR_QUANTITY_ADJUSTED . zen_get_products_name($products) . ERROR_QUANTITY_CHANGED_FROM . $old_quantity . ERROR_QUANTITY_CHANGED_TO . $new_qty, 'caution');
            } else {
              $new_qty = $check_qty;
               }
          }
        return $new_qty;
      }
    }

    Es gibt sicherlich noch elegantere Lösungen, aber so funktioniert es auch.
    Ab nun ist die Eingabe von Kommas erlaubt und die Kunden müssen nicht den Punkt auf der Tastatur suchen.

  2. #2
    Padawan Stufe III Avatar von Hawcha
    Registriert seit
    14.04.2011
    Beiträge
    217
    Themen
    17
    DANKE
    20
    Erhaltene Danke: 37
    Erstellt von

    Standard

    Update: Code funktioniert auch in der 1.5er Version !

Ähnliche Themen

  1. Komma abfangen
    Von Hawcha im Forum Archivierte Beiträge Zen-Cart Support
    Antworten: 1
    Letzter Beitrag: 27.06.2012, 07:12
  2. Komma statt Punk bei der Mengeneingabe?
    Von Malinka im Forum Archivierte Beiträge Zen-Cart Support
    Antworten: 2
    Letzter Beitrag: 15.12.2008, 14:02
  3. Preise - Punkt statt Komma
    Von RMG im Forum Archivierte Beiträge Zen-Cart Support
    Antworten: 4
    Letzter Beitrag: 01.12.2006, 18:37
  4. Eingabeschwierigkeiten: Komma vs. Punkt
    Von fuzolan im Forum Archivierte Beiträge Zen-Cart Support
    Antworten: 3
    Letzter Beitrag: 08.02.2006, 17:25
  5. Komma zuviel in Browseranzeige
    Von kasiel im Forum Archivierte Beiträge Zen-Cart Support
    Antworten: 2
    Letzter Beitrag: 27.09.2004, 06:37

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  
zen-cart-pro.at
Zen Cart ist eine kostenlose unter der GPL-Lizenz veröffentlichte Open-Source Shopsoftware. Das System wird in den USA entwickelt, die amerikanische Website dazu ist www.zen-cart.com

Die deutsche Zen-Cart Version, um die es hier auf zen-cart-pro.at geht, ist eine Anpassung der amerikanischen Version an die Bedürfnisse von Onlineshopbetreibern im deutschsprachigen Raum.

Die deutsche Zen Cart Version wird von einem Team von Entwicklern in Österreich und Deutschland betreut, weiterentwickelt und supportet und steht kostenlos in unserem Downloadbereich zur Verfügung.

[mehr]
Follow Us
  • zen-cart-pro-at auf Twitter
  • zen-cart-pro-at auf Github
  • zen-cart-pro-at auf SourceForge
Aktuelle Version
Zen Cart 1.5.5 deutsch
Revision 1184 vom 01.09.2016
[Download]