WernerK: Zahl mit führenden Nullen addieren

Hallo,

Ich möchte gerne eine 7 stellige Zahl mit führenden Nullen immer um 1 addieren.
In einer DB Spalte steht z.b. "0000000" drin. Dieser Wert wird mit ajax geholt.
Dann soll um 1 erhöt werden und in einem Textfeld angezeigt werden. Nach dem Speichern soll nacher eine neue Reihe in der DB steht mit
"0000001", dann "0000002" usw.

So wie unten klappt es nicht da ja dann die 1 hinten ran gehängt wird und man eine 8 stellige Zahl hat.

  
var newdnr = data + 1;//data ist der Wert aus der DB  

Gruss
Werner

  1. Tach!

    Ich möchte gerne eine 7 stellige Zahl mit führenden Nullen immer um 1 addieren.

    Normalisieren, verarbeiten, formatieren. Zuerst aus dem Wert in eine echte Zahl konvertieren, dann rechnen, anschließend die Nullen auffüllen.

    dedlfix.

    1. Hallo,

      Normalisieren, verarbeiten, formatieren. Zuerst aus dem Wert in eine echte Zahl konvertieren, dann rechnen, anschließend die Nullen auffüllen.

      Dann wäre es doch vielleicht gleich besser die DB Spalte als Integer zu definieren und nur "echte" Zahlen wie 1,2,3,56,77 ... zu speichern. Und dann den String später wo man ihn braucht mit führenden Nullen auffüllen? Diese Zahl wird benötigt für eine Art Auftragsnummer die zb.

      Q-0000001  die dann in einer varchar Spalte gespeichert wird.

      Gruss
      Werner

      1. Hallo Werner,

        Normalisieren, verarbeiten, formatieren. Zuerst aus dem Wert in eine echte Zahl konvertieren, dann rechnen, anschließend die Nullen auffüllen.
        Dann wäre es doch vielleicht gleich besser die DB Spalte als Integer zu definieren und nur "echte" Zahlen wie 1,2,3,56,77 ... zu speichern. Und dann den String später wo man ihn braucht mit führenden Nullen auffüllen?

        what he said.

        Ciao,
         Martin

        --
        Liebet eure Feinde - vielleicht schadet das ihrem Ruf.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. @@Der Martin:

          nuqneH

          Diese Zahl wird benötigt für eine Art Auftragsnummer

          what he said.

          No, what he said.

          Auftragsnummern sind oft wie andere -nummern keine Nummern.

          Und sie tun gut daran, keine zu sein.

          Qapla'

          --
          „Talente finden Lösungen, Genies entdecken Probleme.“ (Hans Krailsheimer)
      2. Art Auftragsnummer die zb. Q-0000001  die dann in einer varchar Spalte gespeichert wird.

        Wozu das denn? Wenn das "Q" ein Auftragstyp ist, dann speichere den und selektiere mit

        select .... where id=1 and Auftragstyp='Q' <- Wobei es sich womöglich lohnen könnte auch den numerisch fest zu legen und die Spalte zu binden.

        Nur zur Ausgabe setzt Du dann das "Q" wieder vor die mit sprintf erweiterte Zahl.

        Jörg Reinholz

  2. Hallo Werner,

    das Problem ist, dass die Variable data keine Zahl beinhaltet, sondern ein String, der eine Zahl mit führenden Nullen repräsentiert. Um das Problem zu umgehen mußt Du den String aus der DB in eine Zahl umwandeln und dem JavaScript zur Verfügung stellen.
    var newdnr = parseInt(data) + 1;//data ist der Wert aus der DB

    Beim Speichern in der DB formatierst Du die Zahl wieder in einen String mit 8 Zeichen und führende Null.
    Zum Beispiel in PHP:
    sprintf('%08d', $zahl);

    Gruß,
    the-FoX

    1. Tach!

      das Problem ist, dass die Variable data keine Zahl beinhaltet, sondern ein String, der eine Zahl mit führenden Nullen repräsentiert. Um das Problem zu umgehen mußt Du den String aus der DB in eine Zahl umwandeln und dem JavaScript zur Verfügung stellen.
      var newdnr = parseInt(data) + 1;//data ist der Wert aus der DB

      Bei einer Zahl mit führenden Nullen besteht die Möglichkeit, dass sie als Oktalzahl interpretiert werden kann. Es ist deshalb sinnvoll, bei parseInt() den zweiten Parameter names radix anzugeben, damit garantiert das Dezimalsystem beim Interpretieren verwendet wird.

      dedlfix.

  3. Hi,

    In einer DB Spalte steht z.b. "0000000" drin.

    Das solltest du als erstes ändern – und eine echte *Zahl* draus machen, ohne führende Nullen.

    MfG ChrisB

    --
    Autocomplete has spoiled me to a point where it happens every so often that I encounter a CAPTCHA, and I just type in the first character … and then wait for the rest of the code to be automatically suggested :/
    1. Das solltest du als erstes ändern – und eine echte *Zahl* draus machen, ohne führende Nullen.

      Goldrichtig! Ergänzend für den TO: Die Ausgabe mit führenden Nullen ist - eine Ausgabe und das Speicher derselben höchst kontraproduktiv (string statt Zahl führt zu höherem Speicherbedarf, ist sehr viel aufwendiger (und sicher auch langsamer) beim Indexieren in der Datenbank, Berechnungen erst nach Umwandlung möglich, etc.)

      Für die Ausgabe mit führenden Nullen (und noch viel mehr...) gibt es dann Funktionen wie sprintf oder fprintf

      Jörg Reinholz