Fehlberechnung in Schleife?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fehlberechnung in Schleife?

    Mir ist gerade der Browser abgestürzt!

    Ich hoffe dass ist jetzt nihct doppelt!, Wenn ja bitte ignorieren und sorry

    OK,

    Ich hab schon einiges erlebt -- aber noch nie so ein Sch..projekt :

    Erst funzt bei dem Server ISSET bei _GET nicht und nun das:

    In einem Formular werden per Scanner ( Eingabe + Enter) Zahlenkolonnen eingegen deren gültigkeit geprüft wird indem anhand einer Formel der Wert neuberechnet und die ersten 3 Stellen gegen einen Datenbankwert getestet werden.

    Zur Validierung nutze ich sowohl JS als PHP:

    in JS wird bei jedem ENTER der Text anhand "\n" in ein Array gesplittet und geprüft:

    PHP-Code:
    --> Das ist Javascript 
    lticket 
    =  (tc/71-6)/3;
    if (
    tickets_va != lticket.substr(0,3) {
    // Fehler behandlung

    Ist diese Bedingung erfüllt, dann ist die Zahl gültig. Per Schleife wird dies in JS für jeden Array eintrag gemacht

    das heisst ich kann davon ausgehen, dass jede Zahl durch Enter getrennt und gültig ist.

    Diesen Text (Zahlen durch Enter getrennt und gültig) übergebe ich an PHP wo im Grunde genommen noch einmal ds selbe abläuft:

    PHP-Code:
    $tickets explode("\n",trim($tickets_scanned));

    $error 0;
    for (
    $i=0$i<count($tickets); $i++) {        

        
    $y = (($tickets[$i]/71) - 6)/3;
        
    $test_va substr($y,0,3);

        if (
    $test_va == $va_nummer) { ... } 
    und genau da hakts! Der selbe String der mit JS geprüft wird, wird anhand der selben Formel geparst und die WErte verglichen ABER

    Es werden andere Werte errechnet!!!!!!!!!!!!!!!!!!


    Und noch was, teste ich das auf einem anderen (meinem!) Server
    (RH 9 PHP 4.2) klappt es!!!!!!

    Ich krieg hier noch ein Klapps weg


    Jemand ne Idee???

    chansel
    chansel0049
    ----------------------------------------------------
    if you've reached the bottomline - dig further!
    Übersetzer gesucht? http://www.babelport.com

  • #2
    Wo kommt denn $va_nummer her? Und hat sie auch die 3 Zahlen die $test_va entsprechen?
    Vielleicht waere es besser wenn du mal so ne Zahlenkolonne postest und genau sagst mit was sie verglichen werden soll.

    Kommentar


    • #3
      $va_nummer kommt per URL ins Formular und wird in Variable gesetzt (hab auch schon gekuckt im HTML) das klappt

      hat den WErt 102

      der String im Textfeld (Zahlenkolonne ) ist:

      2180652678
      2180653104
      2180653743
      2180653956
      2180652039

      und das sind gültige Werte , die umgerechnet auf

      10237804
      10237806
      10237809
      10237810
      10237801

      gebracht werden soltlen

      dann 102 = 102

      beim eigentlichen Rechnen kommt jedoch das Skript

      auf

      10082080.849765
      10082080.849765
      10082080.849765
      10082080.849765
      10237801

      Wobei interressanter weise immer der Letzte Eintrag korrekt ist, egal ob 5 , 8, 12, oder sonstwieviele Einträge gemacht werden
      chansel0049
      ----------------------------------------------------
      if you've reached the bottomline - dig further!
      Übersetzer gesucht? http://www.babelport.com

      Kommentar


      • #4
        Nochwas :

        Gebe ich den jeweiligen WErt von Ticket in der Schleife aus, also

        echo ticket[$i];

        erscheint

        2180652678
        2180653104
        2180653743
        2180653956
        2180652039


        also die korrekten Werte
        chansel0049
        ----------------------------------------------------
        if you've reached the bottomline - dig further!
        Übersetzer gesucht? http://www.babelport.com

        Kommentar


        • #5
          Habe gerade in der Schleife folgendermasse den Code geändert t

          PHP-Code:
                                  $x $tickets[$i];
                      
          $y = (($x/71) - 6)/3;
                      
          $test_va substr($y,0,3);
                      
          $test_ticketnr substr($y,4,5);
                      echo 
          $tickets[$i]."-".$x."-".$y."<br>"
          Und das kommt raus:

          2180652678 -2180652678 -10082080.849765
          2180653104 -2180653104 -10082080.849765
          2180653743 -2180653743 -10082080.849765
          2180653956 -2180653956 -10082080.849765
          2180652039-2180652039-10237801
          Defakto klappt die Berechnung nicht!!!!!!!
          Und beim letzten im Array dann doch!!!!
          chansel0049
          ----------------------------------------------------
          if you've reached the bottomline - dig further!
          Übersetzer gesucht? http://www.babelport.com

          Kommentar


          • #6
            Also ich hab grad folgendes bei mir getestet:
            PHP-Code:
            <?
            $tickets_scanned="2180652678\n2180653104\n2180653743\n2180653956\n2180652039";
            $tickets = explode("\n",trim($tickets_scanned));
            $va_nummer=102;
            $error = 0;
            for ($i=0; $i<count($tickets); $i++) {        

                $y = (($tickets[$i]/71) - 6)/3;
                $test_va = substr($y,0,3);
                if ($test_va == $va_nummer) echo $y." => stimmt<br>";
                else $y." => stimmt nicht<br>";
            }

            ?>
            und es geht.
            Was gibt dieser code bei dir aus?

            Kommentar


            • #7
              Problem gefunden! Hoffe ich

              Danke Oppi,

              Dein Code öffnete mir die Augen:

              Zwar kann ichs nicht erklären aber es ist So, auf dem neuen Server wird irgendwie aus "\n" wird " \n" also ein Leerzeichen (Was im String gar nicht eingegeben wird!

              Zwar sollte das bei der automatischen Konvertierung String / Int keine Rolle spielen aber setze ich folgenden Code ein:

              PHP-Code:
              $x trim($tickets[$i]); 
              funktioniert es!


              Danke
              -----------------------
              Manchmal ist der ernste Monolog die beste Diskussion
              chansel0049
              ----------------------------------------------------
              if you've reached the bottomline - dig further!
              Übersetzer gesucht? http://www.babelport.com

              Kommentar

              Lädt...
              X