Rolf: shop zählt falsch bei altem browser?

Hallo Leute,
Ich hab da ein kleineres problem und zwar folgendes:
Ich habe eine shop seite,wo man ungewöhnliches kaufen kann.
Das problem ist dass der shop tadellos funktioniert,bei folgenden Typ Browser:
NS4.x,NS7.x,NS6.x,IE5.5,Mozilla1.6...
bei all diesen browser gehts gut.Bei folgendem User agent gehts nicht korrekt:
Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US)
Der zählt als total z.B. wenn ich den film "the new men carpet" bestell total
European Orders Total: 1861.00
Or International orders Total: 1901.00
anstatt
European Orders Total: 35.00
Or International orders Total: 40.00
Woher kann das denn kommen?
Es handelt sich um folgende seite
http://www.tramplefun.com/order1.htm
Man könnte sowas auch mit perl lösen oder,aber das scheint mir zu komplex :-)
Ich hab jetzt mal alles was älter ist als NS4.x oder IE4.x eine warnung ausgeben lassen.
Grüsse
Rolf

  1. Der zählt als total z.B. wenn ich den film "the new men carpet" bestell total
    European Orders Total: 1861.00
    Or International orders Total: 1901.00
    anstatt
    European Orders Total: 35.00
    Or International orders Total: 40.00
    Woher kann das denn kommen?
    Es handelt sich um folgende seite
    http://www.tramplefun.com/order1.htm

    Vielleicht wäre es einfacher uns zu zeigen, wie die Rechnung aussieht und woher die Werte kommen, als uns mühevoll durch deinen Code wühlen zu lassen?

    Struppi.

    1. Hi Struppi,

      Der zählt als total z.B. wenn ich den film "the new men carpet" bestell total
      European Orders Total: 1861.00
      Or International orders Total: 1901.00
      anstatt
      European Orders Total: 35.00
      Or International orders Total: 40.00
      Woher kann das denn kommen?
      Es handelt sich um folgende seite
      http://www.tramplefun.com/order1.htm

      Vielleicht wäre es einfacher uns zu zeigen, wie die Rechnung aussieht und woher die Werte kommen, als uns mühevoll durch deinen Code wühlen zu lassen?

      Ok ich habe mal den kompletten code in http://www.tramplefun.com/teste.html zusammengefasst.
      Es wird zum wert vom video jeweils 5 euro dazugezählt für europa bestellungen und bei ausland nochmal 5.
      Es geht auch ums gewicht wenn der wert übersteigt wird dann wird demensprechend dazugezählt
      unten der ausschnitt:

      Tax = totprice * .00000000;
      CTax = 0;
      FTax = FloatFormat(Tax,2);
      FCTax = FloatFormat(CTax,2);
      OCShipping = 5.00;
      Shipping = 0;

      if(FinalTotWeight >= 0.01 && FinalTotWeight >= 1.00)
      {
      Shipping = 10;
      TmpFinalTotWeight = FinalTotWeight - 10;
      TmpFinalTotWeight = TmpFinalTotWeight / 1;
      TmpFinalTotWeight = TmpFinalTotWeight * 0.00;
      Shipping = TmpFinalTotWeight + Shipping;
      if(FinalTotWeight >= 2.20)
      Shipping = 15;
      if(FinalTotWeight >= 3.00)
      Shipping = 20;
      }

      else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 10)
      Shipping = 5;

      Gruss
      Rolf

      1. Hi,

        Shipping = 10;
        TmpFinalTotWeight = FinalTotWeight - 10;

        Ok, TmpFinalTotWeight wird also auf irgendeinen Wert gesetzt.

        TmpFinalTotWeight = TmpFinalTotWeight / 1;

        Jetzt wird TmpFinalTotWeight auf denselben Wert gesetzt (Division durch 1), den es bereits hatte. Wozu?

        TmpFinalTotWeight = TmpFinalTotWeight * 0.00;

        Jetzt wird TmpFinalTotWeight auf 0 gesetzt (Multiplikation mit 0) - wozu so umständlich, wozu die Berechnungen vorher?

        Shipping = TmpFinalTotWeight + Shipping;

        Shipping wird auf 0 + Shipping gesetzt, also nicht verändert. Das geht auch einfacher.

        Die bisherigen Zeilen lassen sich also zu

        Shipping = 10;
        TmpFinalTotWeight = 0;

        zusammenfassen.

        cu,
        Andreas

        --
        MudGuard? Siehe http://www.Mud-Guard.de/
        Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
        1. Hi,

          Shipping = 10;
          TmpFinalTotWeight = 0;

          zusammenfassen.

          ja,aber es müssen noch mehr werte sein weil sich der betrag demensprechend ändert
          nach gewicht.
          Ich habs jetzt mal so geschrieben:
          Tax = 0;
          CTax = 0;
          FTax = FloatFormat(Tax,2);
          FCTax = FloatFormat(CTax,2);
          OCShipping = 5.00;
          Shipping = 0;

          if(FinalTotWeight >= 1.20 && FinalTotWeight <= 1.70)
          {
          Shipping = 10;
          TmpFinalTotWeight = 0;
          Shipping = TmpFinalTotWeight + Shipping;
          }
          if(FinalTotWeight >= 1.90 && FinalTotWeight <= 2.90)
          {
          Shipping = 15;
          }
          if(FinalTotWeight >= 3.00 && FinalTotWeight <= 4.40)
          {
          Shipping = 20;
          }
          if(FinalTotWeight >= 4.50 && FinalTotWeight <= 10)
          {
          Shipping = 30;
          }
          else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 1.10)
          Shipping = 5;

          so gehts auch und ohne diesen * 0 multiplikator-versteh jetzt auch nicht für was das gut sein soll ;-)
          Gruss
          Rolf

          1. Hi,

            if(FinalTotWeight >= 1.20 && FinalTotWeight <= 1.70)
            {
            Shipping = 10;
            }
            if(FinalTotWeight >= 1.90 && FinalTotWeight <= 2.90)
            {
            Shipping = 15;
            }
            if(FinalTotWeight >= 3.00 && FinalTotWeight <= 4.40)
            {
            Shipping = 20;
            }
            if(FinalTotWeight >= 4.50 && FinalTotWeight <= 10)
            {
            Shipping = 30;
            }
            else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 1.10)
            Shipping = 5;

            Da sind aber Lücken im System. Was z.B. bei FinalTotWeight = 1.8 oder 1.11?

            cu,
            Andreas

            --
            MudGuard? Siehe http://www.Mud-Guard.de/
            Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
            1. Hi,

              Da sind aber Lücken im System. Was z.B. bei FinalTotWeight = 1.8 oder 1.11?

              1.8 oder 1.1 gibts nicht da jedes objekt 0.4 lbs hat
              zusammengezählt also möglich 0.8 ,1.2,1.6...
              Gruss
              Rolf

              1. Hi,
                ich hab da nochwas gesehen,was mich interessiert:
                kann es eventuell sein dass der eine Browser dies
                Ftotprice = FloatFormat(totprice,2);

                nicht korrekt interpretiert?
                Das heisst doch es soll die ersten zwei zahlen berücksichtigen oder?
                Gruss
                Rolf

                1. ich hab da nochwas gesehen,was mich interessiert:
                  kann es eventuell sein dass der eine Browser dies
                  Ftotprice = FloatFormat(totprice,2);

                  nicht korrekt interpretiert?

                  Keine Ahnung, hast du die Funktion irgendwo schon gepostet?

                  Das heisst doch es soll die ersten zwei zahlen berücksichtigen oder?

                  Nein, ich vermute mal eher, das die Funk. eine Zahl auf 2 stellen rundet.

                  Dein Problem läßt sich schwer lösen, da kaum einer Lust hat in einem Haufen Code rumzuwühlen um eine evtl. auftretendes Problem zu lösen.
                  Meine Vermutung ist, dass du irgendwo zahlenwerte aus Formularfelder nimmst und diese nicht sinnvoll umgewandelt werden.

                  Struppi.

                  1. hi,

                    Dein Problem läßt sich schwer lösen, da kaum einer Lust hat in einem Haufen Code rumzuwühlen um eine evtl. auftretendes Problem zu lösen.
                    Meine Vermutung ist, dass du irgendwo zahlenwerte aus Formularfelder nimmst und diese nicht sinnvoll umgewandelt werden.

                    Aber ich frage mich warum dann alle browser,opera7,IE5,NS4-NS7,Mozilla1.6 den code verstehen bzw. richtig
                    interpretieren und der user agent von
                    Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US) falsch zusammenzählt?
                    Ist doch javascript 1.0 von daher sollten jedenfalls alle neueren browser den code richtig verstehen :-/
                    Also ich hab den kompletten code nochmal abgeändert und gekürzt und nochmals getestet mit meinen browsers -> es geht.
                    Aber vielleicht ,falls Du zeit hast ;-) könntest Du den code mal schnell überfliegen?
                    Ich post ihn hier unten nochmals(ist doch nicht soviel wie auch schon gelesen):
                    function ShowInvoice()
                    {
                    totprice = 0;
                    itemlist = 0;
                    TotQty = 0;
                    TotWeight = 0;
                    FinalTotWeight = 0;

                    document.writeln('<TABLE border="0" cellspacing="4" cellpadding="0">');

                    document.writeln('<TR><TD align="center"><b>Time in length</b></TD><TD align="center"><b>Film Title</b></TD><TD align="center"><b>Qty</b></TD><TD align="center"><b>Weight</b></TD><TD align=center><b>Price Each</b></TD><TD align="center"><b>Price Total</b></TD></TR><TR><TD colspan="6"><HR NOSHADE></TD></TR>');

                    for(NumItems = 0; NumItems<MaxCartItems; NumItems++)
                    {
                    CookieName = "Cart" +NumItems;
                    CookieValue = GetCookie(CookieName);
                    if(CookieValue != null)
                    {
                    for(var i = 0;i <= CookieValue.length; i++)
                    {
                    // using 0192,0193,0194,0195,0196
                    if (CookieValue.substring(i,i+1) == '[')
                    {
                    itemstart = i+1;
                    }
                    else if (CookieValue.substring(i,i+1) == 'À')
                    {
                    ID = CookieValue.substring(itemstart, i);
                    itemstart = i+1;
                    }
                    else if (CookieValue.substring(i,i+1) == 'Á')
                    {
                    Sdesc = CookieValue.substring(itemstart, i);
                    itemstart = i+1;
                    }
                    else if (CookieValue.substring(i,i+1) == 'Â')
                    {
                    Price = CookieValue.substring(itemstart, i);
                    itemstart = i+1;
                    }
                    else if (CookieValue.substring(i,i+1) == 'Ã')
                    {
                    Qty = CookieValue.substring(itemstart, i);
                    itemstart=i+1;
                    }
                    else if (CookieValue.substring(i,i+1) == 'Ä')
                    {
                    Weight = CookieValue.substring(itemstart, i);
                    itemstart = i+1;
                    }
                    else if (CookieValue.substring(i,i+1) == ']')
                    {
                    WeightUnit = CookieValue.substring(itemstart, i);

                    itemstart = i+1;
                    TotQty = TotQty + parseInt(Qty);
                    TotWeight = Weight * Qty;
                    ItemTotal = 0;
                    ItemTotal = (eval(Price*Qty));
                    totprice = totprice + ItemTotal;
                    FItemTotal = Float(ItemTotal,2);
                    FTotWeight = Float(TotWeight,2);
                    ConvertUnit(TotWeight,WeightUnit,'lbs');
                    ConvertedWeight = NewUnitSize;
                    FinalTotWeight = FinalTotWeight + NewUnitSize;
                    FConvertedWeight = Float(ConvertedWeight,2);

                    document.writeln('<INPUT type="hidden" name="Film" value="'+Sdesc+'">');

                    document.writeln('<INPUT type="hidden" name="Price '+Qty+' items(s)" value="'+FItemTotal+'">');

                    document.writeln('<TR><TD><font size="-1">'+ID+'</font></TD><TD><font size="-1">'+Sdesc+'</font></TD><TD align="right"><font size="-1">'+Qty+'</font></TD><TD align="right"><font size="-1">'+FConvertedWeight+' lbs</font></TD><TD align="center"><font size="-1">'+Price+'</font></TD><TD align="right"><font size="-1">'+FItemTotal+'</font></TD></TR>');
                    }
                    }
                    }
                    }

                    Ftotprice = Float(totprice,2);
                    document.writeln('<input type=hidden name="Totals" value="-----------------------------------------------">');

                    document.writeln('<TR><TD colspan="5"><b>Sub Total</b></TD><TD align="right"><b>'+Ftotprice+'</b></TD></TR><TR><TD colspan="6"><HR NOSHADE></TD></TR>');
                    document.writeln('<INPUT type="hidden" name="Sub Total" value="'+Ftotprice+'">');

                    Tax = 0;
                    CTax = 0;
                    FTax = Float(Tax,2);
                    FCTax = Float(CTax,2);
                    OCShipping = 5.00;
                    Shipping = 0;

                    if(FinalTotWeight >= 1.20 && FinalTotWeight <= 1.70)
                    {
                    Shipping = 10;
                    TmpFinalTotWeight = 0;
                    Shipping = TmpFinalTotWeight + Shipping;
                    }
                    if(FinalTotWeight >= 1.90 && FinalTotWeight <= 2.90)
                    {
                    Shipping = 15;
                    }
                    if(FinalTotWeight >= 3.00 && FinalTotWeight <= 4.40)
                    {
                    Shipping = 20;
                    }
                    if(FinalTotWeight >= 4.50 && FinalTotWeight <= 20)
                    {
                    Shipping = 30;
                    }
                    else if(FinalTotWeight >= 0.10 && FinalTotWeight <= 1.10)
                    Shipping = 5;

                    FShipping = Float(Shipping,2);
                    FOCShipping = Float(OCShipping,2);
                    FFinalTotWeight = Float(FinalTotWeight,2);

                    document.writeln('<TR><TD colspan="3"><b>Weight</b></TD><TD align=right>'+FFinalTotWeight+' lbs</TD></TR>');

                    document.writeln('<TR><TD colspan="5"><b>Shipping</b></TD><TD align=right>'+FShipping+'</TD></TR>');

                    document.writeln('<INPUT type="hidden" name="Shipping" value="'+FShipping+'">');

                    document.writeln('<INPUT type="hidden" name="Shipping outside of Europe" value="'+FOCShipping+'">');

                    NatFGrandTotal = Float(totprice + Shipping,2);

                    ONatFGrandTotal = Float(totprice + Shipping + OCShipping,2);

                    FGrandTotal = Float(totprice + Shipping,2);

                    document.writeln('<TR><TD colspan="5"><b>Sales Tax</b></TD><TD align="right">'+FTax+'</TD></TR>');

                    document.writeln('<INPUT type="hidden" name="Sales Tax" value="'+FTax+'">');

                    document.writeln('<TR><TD colspan="6"><HR NOSHADE></TD></TR><TR><TD colspan="5"><b><font color="#000080"><Ul>TOTAL</font></b></TD><TD align="right"><font color="#000080"><b>Euro '+FGrandTotal+'</b></font></TD></TR>');

                    document.writeln('<INPUT type="hidden" name="Total Amount" value=" '+FGrandTotal+'">');

                    document.writeln('<INPUT type="hidden" name="Totals in currency Euro" value="------------------------------">');

                    document.writeln('<INPUT type="hidden" name="European Orders Total" value="'+NatFGrandTotal+'">');

                    document.writeln('<INPUT type="hidden" name="EordTot" value="'+NatFGrandTotal+'">');

                    document.writeln('<INPUT type="hidden" name="Or International orders Total" value="'+ONatFGrandTotal+'">');

                    document.writeln('<INPUT type="hidden" name="IordTot" value="'+ONatFGrandTotal+'">');
                    document.writeln('</TABLE>');

                    document.writeln('<INPUT type="hidden" name="Deliver to / Empfaenger" value="------------------------------">');

                    }

                    function Float(expr,decplaces)
                    {
                    var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));
                    while(str.length <= decplaces)
                    {
                    str = "0" + str;
                    }

                    var decpoint = str.length - decplaces;
                    return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
                    }

                    lbs_factor = 0.0025;  // ounces to pounds
                    var UnitSize;         // weight number being converted
                    var OldUnit;          // converting from
                    var NewUnit;          // converting to
                    var NewUnitSize;      // new weight in new unit

                    function ConvertUnit(UnitSize,OldUnit,NewUnit)
                    {
                    // possible units
                    // lbs

                    NewUnitSize = 0;
                    TmpUnitSize = 0;

                    // if not oz, convert to oz first
                    if(OldUnit == 'lbs')
                    {
                    TmpUnitSize = UnitSize / lbs_factor;
                    }
                    else
                    {
                    // if oz, keep as is
                    TmpUnitSize = UnitSize;
                    }

                    // since TmpUnitSize is now oz, convert to NewUnit;
                    if(NewUnit == 'lbs')
                    {
                    NewUnitSize = TmpUnitSize * lbs_factor;
                    }
                    }
                    ..............end
                    Gruss
                    Rolf

                    1. Aber ich frage mich warum dann alle browser,opera7,IE5,NS4-NS7,Mozilla1.6 den code verstehen bzw. richtig
                      interpretieren und der user agent von
                      Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US) falsch zusammenzählt?

                      Keine Ahnung, ich kenne den Browser nicht. aber was mir auffällt, die Funktion nach der ich gefragt habe

                      function Float(expr,decplaces)
                      {
                      var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));
                      while(str.length <= decplaces)
                      {
                      str = "0" + str;
                      }

                      var decpoint = str.length - decplaces;
                      return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
                      }

                      Liefert einen String zurück, von daher kann es sein, das hier der Fehler liegt, wenn du mit einen Wert aus dieser Funktion weiterrechnen willst.

                      Struppi.

                      1. hi,

                        Keine Ahnung, ich kenne den Browser nicht. aber was mir auffällt, die Funktion nach der ich gefragt habe

                        function Float(expr,decplaces)
                        {
                        var str = "" + Math.round(eval(expr) * Math.pow(10,decplaces));
                        while(str.length <= decplaces)
                        {
                        str = "0" + str;
                        }

                        var decpoint = str.length - decplaces;
                        return str.substring(0,decpoint) + "." + str.substring(decpoint,str.length);
                        }

                        Liefert einen String zurück, von daher kann es sein, das hier der Fehler liegt, wenn du mit einen Wert aus dieser Funktion weiterrechnen willst.

                        hmmmm,aber ich sehe grade dass diese funktion gar nirgends aufgerufen wird?!
                        Dann nehm ich die mal raus ;-)
                        Gruss
                        Rolf

                        1. hi,

                          Liefert einen String zurück, von daher kann es sein, das hier der Fehler liegt, wenn du mit einen Wert aus dieser Funktion weiterrechnen willst.

                          oh doch die funktion brauch ich doch ->"Float" aber die umrechnung versteh ich nicht ganz.
                          Gruss
                          Rolf

  2. Hi,

    die Meldung
    "note:the JavaScript of your browser is disabled,but you need it and a cookie accept browser- otherwise you cannot using this order site.Or try the otherorder form"
    würde ich aber schon etwas ansprechender und größer ausgeben.
    Und bei der Errormeldung für das JS-lose Bestellformular javascript:history.back() ist nun wirklich Blödsinn.

    freundliche Grüße
    Ingo

  3. Tach,

    Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US)

    das ist übrigens kein alter sondern eher ein neuer Browser, nämlich der, der zur Spielekonsole Dreamcast gehört.

    mfg
    Woodfighter

    1. hi,

      Mozilla/3.0 (Planetweb/2.606 JS SSL VoIP US; Dreamcast US)

      das ist übrigens kein alter sondern eher ein neuer Browser, nämlich der, der zur Spielekonsole Dreamcast gehört.

      umso schlimmer dass der nicht zählen kann,wie die anderen üblichen browser ;-)
      Gruss
      Rolf
      P.S.ist eben schon mühsam,wenn jeder browser was anderes tut...beim javascript :-/