"Division by zero"-Fehler in OsCommerce-Shop

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

  • "Division by zero"-Fehler in OsCommerce-Shop

    Hallo von einer PHP-/SQL-Newbie.

    Ich weiß nicht, ob mein Thema hierhin oder in's SQL-Forum gehört. Bitte Bescheid geben.

    Mein Problem ist eine Fehlermeldung im OsCommerce-Shop, und zwar folgende:

    Warning: Division by zero in /homepages/5/*********/htdocs/shop/includes/classes/split_page_results.php on line 86

    Warning: Division by zero in /homepages/5/*********/htdocs/shop/includes/classes/split_page_results.php on line 89


    (Habe den Pfad etwas mit Sternchen zensiert)


    Ich habe diese PHP als Textdatei hier an meinen Beitrag drangehängt.
    Am Script wurde NICHTS verändert !!!

    Ich habe nur an anderen PHP's und der oscommerce.sql etwas herumprogrammiert, aber das habe ich ja bei den anderen funktionierenden OsCommerce-Shops auch getan. Hmmm.

    Bei den anderen OsCommerce-Shops, die ich installiert habe, tritt dieser Fehler nicht auf.

    Der Fehler tritt übrigens in diesem speziellen Shop erst auf, wenn ich ein Produkt einfüge. Bei vorheriger Eingabe von Kategorien und Unterkategorien gibt es keinerlei Fehlermeldungen.

    Ich bin ratlos.
    Und was dieser Fehler zu bedeuten hat, weiß ich erst Recht nicht.

    Ich hoffe, ihr könnt mir helfen ?
    Vielen Dank schonmal im Voraus.

    Ciao und ein schönes Wochenende,
    Jacqueline
    Angehängte Dateien
    Sorry, ich weiß echt nix ;-))

  • #2
    PHP-Code:
    // zeile 86 - alt
    $cur_window_num intval($this->current_page_number $max_page_links);

    // zeile 86 - NEU
    $cur_window_num $max_page_links>intval($this->current_page_number $max_page_links) : $this->current_page_number;

    // ------------------------------------------------------------------------

    // zeile 89 - alt
    $max_window_num intval($this->number_of_pages $max_page_links);

    // zeile 89 - NEU
    $max_window_num $max_page_links>intval($this->number_of_pages $max_page_links) : $this->number_of_pages
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Wow

      Unglaublich, hat geklappt !!!
      Wie kann man das nur so einfach aus der Hand schütteln ?!?!

      Vielen lieben Dank Abraxax, das war ja richtig blitzartig und dann noch perfekt.

      Ich werde mir das Forum hier auf alle Fälle bookmarken.
      Danke danke danke.

      Jacqueline
      Sorry, ich weiß echt nix ;-))

      Kommentar


      • #4
        Re: Wow

        Original geschrieben von Jacqueline
        Unglaublich, hat geklappt !!!
        Wie kann man das nur so einfach aus der Hand schütteln ?!?!
        kurz nachdenken, oder die suche verwenden...

        Original geschrieben von Jacqueline
        Vielen lieben Dank Abraxax, das war ja richtig blitzartig und dann noch perfekt.


        Original geschrieben von Jacqueline
        Ich werde mir das Forum hier auf alle Fälle bookmarken.


        Original geschrieben von Jacqueline
        Danke danke danke.
        k.p.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          OffTopic:
          na haxe, auch noch fleissig am proggen? *gähn*, mein rotator schickt endlich die email , leider nicht im html format egal, ich mach dann mal weiter, gn8 all
          Sunshine CMS
          BannerAdManagement
          Borlabs - because we make IT easier
          Formulargenerator [color=red]Neu![/color]
          Herkunftsstatistik [color=red]Neu![/color]

          Kommentar


          • #6
            OffTopic:
            ne. bin nur 'noch' on. und auch gleich off ...

            n8@all too
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Re: Re: Wow

              Original geschrieben von Abraxax
              kurz nachdenken, oder die suche verwenden...


              Tzz, wie gemein.. und dabei habe ich doch die Suche aufgerufen
              .. aber irgendwie habe ich unter all den Beiträgen nichts mit einem "Division by Zero"-Fehler unter einem OsCommerce-Shop gefunden.

              Und all die anderen Beiträge zu "Division by zero" habe ich nicht verstanden

              Aber ich lern' das noch..!

              Und das richtige Suchmuster im Forum lern' ich vielleicht auch noch

              Gute Nacht und bis dann,
              Jacqueline
              Sorry, ich weiß echt nix ;-))

              Kommentar


              • #8
                Re: Re: Re: Wow

                Original geschrieben von Jacqueline
                Tzz, wie gemein.. und dabei habe ich doch die Suche aufgerufen
                .. aber irgendwie habe ich unter all den Beiträgen nichts mit einem "Division by Zero"-Fehler unter einem OsCommerce-Shop gefunden.
                das ist ein allgemeines problem und hat nicht mit dem osc-shop zu tun. aber egal. jetzt geht es ja...
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Okay, dann erklär(t) mal einer "Nicht-Scripterin-sondern-lediglich-Script-Verbiegerin", was der "Division by zero"-Fehler eigentlich bedeutet bzw. woher er herrührt ?

                  Soweit ich mich mit meinen schwachen mathematischen Fähigkeiten noch erinnere, kann/darf(?) man nicht durch 0 teilen.. aber was im Script versucht durch 0 zu teilen und wieso erlaubt man dem Script das und warum tritt der Fehler nicht bei den anderen installierten Shops auf und überhaupt, was ist der Sinn des Lebens ?!

                  Fragen über Fragen.. und die Antwort ist wie immer..
                  42

                  Schönes Wochenende allen und nochmals vielen Dank,
                  Jacqueline
                  Sorry, ich weiß echt nix ;-))

                  Kommentar


                  • #10
                    der fehler rührt, wie du schon erkannt hast, auch einer division durch 0 ... und das ist, wie du auch schon erkannt hast, nicht erlaubt.

                    und warum in dieser var eine 0 drin ist, kann ich dir auch nicht sagen. irgendwoher kommt sie aber.

                    und wenn man bei so einer division diese 0 eben nicht abfängt, bekommst du den fehler. ganz einfach.

                    was ich mit meinem beispiel gemacht habe, ist nichts geheimnisvolles. ich prüfe einfach ab, ob die var größer 0 ist. wenn sie das ist, kann/darf er teilen. wenn nicht, liefert er die andere var zurück. das ist alles...
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Original geschrieben von Abraxax
                      [B]der fehler rührt, wie du schon erkannt hast, auch einer division durch 0 ... und das ist, wie du auch schon erkannt hast, nicht erlaubt.

                      und warum in dieser var eine 0 drin ist, kann ich dir auch nicht sagen. irgendwoher kommt sie aber.

                      und wenn man bei so einer division diese 0 eben nicht abfängt, bekommst du den fehler. ganz einfach.


                      Hallo, 6 Jahre alter Thread - und wieder das Problem.. nehme an, es liegt an einem Serverumzug / neue PHP-Version des Hosters oder so ?

                      Habe division by zero-Fehler genau an den besagten Stellen der split_page_results.php.

                      Ich zitiere mal:

                      [color=darkred]
                      $cur_window_num = $max_page_links>0 ? intval($this->current_page_number / $max_page_links) : $this->current_page_number;

                      if ($this->current_page_number % $max_page_links) $cur_window_num++;



                      $max_window_num = $max_page_links>0 ? intval($this->number_of_pages / $max_page_links) : $this->number_of_pages;

                      if ($this->number_of_pages % $max_page_links) $max_window_num++;[/color]



                      Hier soll der Fehler liegen, aber ich hab's genauso stehen wie Abraxax empfohlen hat.

                      Was nun ?

                      Habe schon überall herumgesucht im Internet, aber steht immer nur da, daß man zusehen soll, daß im Admin-Bereich bei den Max-Werten nix auf "0" steht - habe ich getan, steht nix auf 0.

                      Was jetzt ?

                      Über Hilfe wäre ich dankbar.

                      Viele Grüße

                      Kommentar


                      • #12
                        Original geschrieben von Lotosblüte
                        Hallo, 6 Jahre alter Thread - und wieder das Problem.. nehme an, es liegt an einem Serverumzug / neue PHP-Version des Hosters oder so ?

                        Habe division by zero-Fehler genau an den besagten Stellen der split_page_results.php.
                        Naja, nicht ganz GENAU an der gleichen Stelle ...

                        PHP-Code:
                              $cur_window_num $max_page_links>intval($this->current_page_number $max_page_links) : $this->current_page_number;

                              if (
                        $this->current_page_number $max_page_links$cur_window_num++;

                              
                        $max_window_num $max_page_links>intval($this->number_of_pages $max_page_links) : $this->number_of_pages;

                              if (
                        $this->number_of_pages $max_page_links$max_window_num++; 
                        Hier soll der Fehler liegen, aber ich hab's genauso stehen wie Abraxax empfohlen hat.
                        Auch der "%"-Operator führt eine Divison durch. Also muss auch hier der Divisor ungleich Null sein.

                        Kurze Flickschusterei unter Zuhilfenahme von Analogiebildung zum weiter oben geposteten Fix:
                        PHP-Code:
                        if ($this->current_page_number % (== $max_page_links $max_page_links $this->number_of_pages) ) $cur_window_num++;

                        $max_window_num $max_page_links>intval($this->number_of_pages $max_page_links) : $this->number_of_pages;

                              if (
                        $this->number_of_pages % (== $max_page_links $max_page_links $this->number_of_pages)) $max_window_num++; 
                        Habe schon überall herumgesucht im Internet, aber steht immer nur da, daß man zusehen soll, daß im Admin-Bereich bei den Max-Werten nix auf "0" steht - habe ich getan, steht nix auf 0.
                        "Qualitätssoftware".
                        Bist du sicher, dass du die aktuellste Version einsetzt?
                        Ich kann mir nicht vorstellen, dass ein so saudummer Fehler in einer weit verbreiteten Open-Source-Websoftware immer wieder auftritt, ohne dass da mal jemand Kompetentes einen brauchbaren Workaround einbaut.
                        Klingon function calls do not have “parameters”‒they have “arguments”‒and they always win them!

                        Kommentar


                        • #13
                          Original geschrieben von fireweasel
                          Auch der "%"-Operator führt eine Divison durch. Also muss auch hier der Divisor ungleich Null sein.

                          Bahnhof - Abfahrt
                          - Hmpf, RFM.. aaaber als ob das Scripten-Draufschaffen mal so einfach wäre


                          PHP-Code:
                          if ($this->current_page_number % (== $max_page_links $max_page_links $this->number_of_pages) ) $cur_window_num++;

                          $max_window_num $max_page_links>intval($this->number_of_pages $max_page_links) : $this->number_of_pages;

                                if (
                          $this->number_of_pages % (== $max_page_links $max_page_links $this->number_of_pages)) $max_window_num++; 

                          - Nein, funzt leider auch nicht.
                          Er spruckt mir jetzt folgende Zeilen als Fehler raus:


                          if ($this->current_page_number % (0 == $max_page_links ? $max_page_links : $this->number_of_pages) ) $cur_window_num++;

                          und

                          if ($this->number_of_pages % (0 == $max_page_links ? $max_page_links : $this->number_of_pages)) $max_window_num++;




                          Bist du sicher, dass du die aktuellste Version einsetzt?
                          Ich bin mir SEHR sicher, daß ich NICHT die aktuellste Version einsetze sondern ein uraltes OsC-Script.. - getreu dem Motto "never change a running system" bin ich froh, daß das Dingen an sich läuft; wollte schon immer mal einen komplett neuen Shop zusammenbasteln, scheue aber dann das Datenbankimportieren (Kundendaten und so).. hab' Angst, da was falsch zu machen, und dann geht das verloren oder so...

                          - Also, er funzt ja, immerhin. Sieht zwar unschön aus mit diesem Division by Zero-Fehler, aber solange er noch läuft.. - denke, ich muß das mal in Angriff nehmen, und nicht ständig nur Fehler in dem alten Ding ausbügeln wegen neuerer PHP-Versionen beim Hoster, sondern eben ganz neu anfangen.

                          Und dann beten, daß es mit dem Importieren der alten Daten via MySQL geht

                          - Herzlichen Dank aber dennoch für Deine Mühe.
                          Ich wollte, ich könnte sowas mal ehmt scripten..

                          Viele Grüße

                          Kommentar


                          • #14
                            wollte schon immer mal einen komplett neuen Shop zusammenbasteln, scheue aber dann das Datenbankimportieren (Kundendaten und so).. hab' Angst, da was falsch zu machen, und dann geht das verloren oder so...
                            Deswegen lässt man das Leute machen, die sich damit auskennen...

                            Er spruckt mir jetzt folgende Zeilen als Fehler raus:
                            Mach doch mal Testausgaben und befolge die anderen Hinweise aus unseren Regeln.

                            Kommentar


                            • #15
                              Original geschrieben von TobiaZ
                              Mach doch mal Testausgaben und befolge die anderen Hinweise aus unseren Regeln. [/B]

                              Huhu TobiaZ,

                              habe mir den Link in Deiner Signatur durchgelesen und sogar verstanden, was Du von mir wolltest juhu

                              - Also, wenn ich dieses Debugging-Erroranzeige-Scriptchen reinsetze in die split_page_results.php, sagt er mir 5 Mal hintereinander (!) folgendes als Fehlermeldung:


                              Notice: Use of undefined constant SEARCH_ENGINE_FRIENDLY_URLS - assumed 'SEARCH_ENGINE_FRIENDLY_URLS' in /*****/domainname/webseiten/shop/includes/functions/html_output.php on line 55


                              (Hab's bissl zensiert.)


                              Ich kopiere aus besagter html_output.php mal den Passus raus, den er wahrscheinlich meinen wird:

                              PHP-Code:
                                  if ( (SEARCH_ENGINE_FRIENDLY_URLS == 'true') && ($search_engine_safe == true) ) {
                                    while (
                              strstr($link'&&')) $link str_replace('&&''&'$link);

                                    
                              $link str_replace('?''/'$link);
                                    
                              $link str_replace('&''/'$link);
                                    
                              $link str_replace('=''/'$link);

                                    
                              $separator '?';
                                  }

                                  if (isset(
                              $_sid)) {
                                    
                              $link .= $separator $_sid;
                                  }

                                  return 
                              $link;
                                } 



                              - Gebe Dir ja grundsätzlich Recht, Schuster bleib bei Deinen Leisten... aber ist halt leider auch oft eine Kostenfrage..

                              - Und ich wüßte auf Anhieb nicht, wem ich das zutrauen könnte, bzw. wen ich da fragen sollte.
                              Man läßt ja nicht mal ebent jeden in den Eingeweiden seines Shops fummeln, also, mit Direktzugriff, meine ich

                              Lieben Gruß und Danke

                              Kommentar

                              Lädt...
                              X