format ändern bei auto_increment

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

  • format ändern bei auto_increment

    hallo community,

    vorab, mit sql im allgemeinen kenne ich mich kaum aus. also bitte rücksicht nehmen!

    mein problem:
    ich verwende phpMyAdmin 2.6.4-pl3 und habe in meiner datenbank "123xxx" eine tabelle "table123" erstellt mit folgendem feld: id (es gibt noch drei weitere, sind aber unwichtig), typ: INT, Länge/Set: 11, Attribute: -, Null: not null, Standard: -, Extra: auto_increment;

    wenn ich per php einen datensatz erzeuge, dann kommt als id 1, beim zweiten datensatz die 2, beim dritten 3, usw.

    soweit alles prima. ich möchte aber ein anderes format. besser gesagt genau folgendes: 0000001 beim ersten datensatz, 0000002 beim zweiten, usw.
    >dieses ergebnis als php-geparstes html im browser natürlich angezeigt *kopfkraz*<

    wie mache ich das? z. B. beim feld datetime habe ich als format im Standard: 0000-00-00. die ausgabe klappt wunderbar mit z. B. 2006-08-01.

    am liebsten wäre mir eine sql-seitige lösung. ich kann mir nämlich gut vorstellen, dass man in php eine art zwischen-skript erstellen kann, welche auf unwegen die 1 in 0000001 verwandelt.

    war alles jetzt super kompliziert erklärt, aber ich hoffe trotzdem man kanns verstehn.

    lg
    stefan

  • #2
    typ: INT,
    INT können imho keine führenden Nullen haben. Aber warum willst du das denn ?
    Wenn du es unbedingt brauchst, dann kannst du das auch bei der Ausgabe mittels PHP machen z.B.
    PHP-Code:
    echo str_pad($id7"0"STR_PAD_LEFT); 
    Gruss

    tobi
    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

    Kommentar


    • #3
      Original geschrieben von jahlives
      INT können imho keine führenden Nullen haben. Aber warum willst du das denn ?
      weil ich graphiker bin und kein php-skripter oder sql-programmierer. dass mit den nullen ist nur eine graphische sache.

      dein php-code
      PHP-Code:
      echo str_pad($id7"0"STR_PAD_LEFT); 
      ist in etwa der gleiche, den ich schon auspobiert und verworfen habe. denn meiner, bzw. dein code-beispiel ersetzt mir die id-nummer mit den nullern nur. es soll also nicht so sein: 0000000, 0000000, 0000000, 0000000, usw. !!

      sondern: 0000001, 0000002, 0000003, 0000004, usw.

      sprich: php klar machen, dass es sechs nullen vor der id anfügen soll, was aber auch nicht ganz korrekt ist, denn wenn die id zwei, drei, vier oder fünfstellig wird siehts wahrscheinlich so aus: 000000120 - also die 120 mit sechs nullen davor.

      hat jemand für das in fettschrift genannte eine lösung für mich?

      bisher ist meine ausgabe ganz normal:

      PHP-Code:
      echo htmlspecialchars($row_table123->id); 
      wahrscheinlich ist es wieder ganz leicht, aber ich komm einfach nicht drauf. hab momentan mehrer bretter vorm kopf!

      danke im voraus
      stefan

      PS: sorry, das thema müsste mittlerweile wohl in die php-rubrik

      Kommentar


      • #4
        ich nochmal!

        zum besseren verständnis:
        0000008 - ist der achte Datensatz.
        0000014 - ist der vierzehnte Datensatz.
        0000200 - ist der zweihunderste Datensatz.
        0007311 - ist der siebentausenddreihundertelfte Datensatz.
        2341001 - ist der (das erspar ich mir jetzt ) Datensatz.
        usw.

        Kommentar


        • #5
          Et voilà
          PHP-Code:
          $laenge 8;
          echo 
          str_repeat('0',8-strlen($zahl)).$zahl
          Gruss

          tobi

          p.s. allerdings kriegst du dann einen Fehler wenn die Zahl mehr als 8 Stellen hat
          Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

          [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
          Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

          Kommentar


          • #6
            ZEROFILL in mysql
            z.B.
            Code:
            CREATE TABLE `test` (
            `id` INT UNSIGNED ZEROFILL NOT NULL ,
            `test` VARCHAR( 255 ) NOT NULL
            ) ENGINE = MYISAM ;
            gibt dann allerdings mehr Stellen
            0000000001
            (10 Stellen statt 8)

            btw. ich würde es auch mit php machen und es funktioniert mit str_pad einwandfrei, das Rumgespiele mit str_repeat kann man sich sparen:
            PHP-Code:
            <?php

            $id 
            1;
            #$id = 11;
            echo str_pad($id8'0'STR_PAD_LEFT);
            Zuletzt geändert von ghostgambler; 01.08.2006, 14:42.

            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
            Wie man Fragen richtig stellt

            Kommentar


            • #7
              @ghostgambler
              diesen Vorschlag habe ich ihm auch schon gemacht. Aber diese Version setzt stur 8 Nullen vornehin auch wenn die Zahl selbst bereits 4 Stellen hat. Also hast du dann 12 Stellen.
              Und genau das wollte der topicstarter nicht. Mit str_repeat geht es immer einen gleich langen String zu erzeugen, unabhängig von der Startlänge.
              aus dem Manual
              Die Funktion gibt den input-String, erweitert auf der linken, rechten oder auf beiden Seiten um die angegebene Länge, zurück.
              D.h. er addiert einfach 8 Stellen dazu

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                warum nicht zerofill und substr? wäre doch auch eine möglichkeit

                gruß
                peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  @jahlives:

                  SUPER

                  Klappt wunderbar!! Habe es jetzt so gemacht:
                  PHP-Code:
                  $laenge 6;
                  echo 
                  str_repeat('0',6-strlen($zahl)).$zahl;
                  echo 
                  htmlspecialchars($row_table123->id); 
                  sechs stellen genügen allemal!

                  nochmal danke!

                  lg
                  stefan

                  Kommentar


                  • #10
                    sechs stellen genügen allemal!
                    Solange die DB nicht groooooooooosssss ist

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar


                    • #11
                      Original geschrieben von jahlives
                      @ghostgambler
                      diesen Vorschlag habe ich ihm auch schon gemacht. Aber diese Version setzt stur 8 Nullen vornehin auch wenn die Zahl selbst bereits 4 Stellen hat. Also hast du dann 12 Stellen.
                      Und genau das wollte der topicstarter nicht. Mit str_repeat geht es immer einen gleich langen String zu erzeugen, unabhängig von der Startlänge.
                      str_repeat ist Murkserei, str_pad macht exakt das was es soll

                      PHP-Code:
                      <?php

                      $id 
                      1111;
                      echo 
                      str_pad($id8'0'STR_PAD_LEFT);
                      Output
                      Code:
                      00001111
                      Keine Ahnung was du gemacht hast, aber es funktioniert mit diesem Code-Fitzel und zwar auch wenn der String schon 8 Zeichen hat

                      PHP-Code:
                      <?php

                      $id 
                      11112222;
                      echo 
                      str_pad($id8'0'STR_PAD_LEFT);
                      Output
                      Code:
                      11112222

                      Die Funktion gibt den input-String, erweitert auf der linken, rechten oder auf beiden Seiten um die angegebene Länge, zurück.
                      Du solltest mittlerweile wissen, dass die deutsche Übersetzung bei Feinheiten für die Tonne ist, im Englischen ist es
                      This functions returns the input string padded on the left, the right, or both sides to the specified padding length.
                      Zuletzt geändert von ghostgambler; 01.08.2006, 16:19.

                      Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                      bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                      Wie man Fragen richtig stellt

                      Kommentar


                      • #12
                        @ghostgambler
                        Danke für den Tipp mit der englischen Version. Das ist wirklich ein kleiner aber feiner Unterschied

                        Danke und Gruss

                        tobi
                        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                        Kommentar


                        • #13
                          @ghostgambler:

                          mhhh, ja, da hast du recht. dann werd ich mal dein beispiel verwenden.

                          in der praxis funktioniert das Beispiel genau so, wie hier aufgeführt:

                          PHP-Code:
                          $id 11112222;
                          echo 
                          str_pad($id8'0'STR_PAD_LEFT); 
                          da bekomme ich zweifelsfrei, dass was ghostgambler auch als outputs geschrieben hat.

                          wenn ich aber ghostgambler oder jahlives code verwende, wie hier:

                          PHP-Code:
                          echo str_pad($id6'0'STR_PAD_LEFT);
                              echo 
                          htmlspecialchars($row_table123->id); 
                          oder
                          PHP-Code:
                          $laenge 6;
                                  echo 
                          str_repeat('0',6-strlen($zahl)).$zahl;
                                  echo 
                          htmlspecialchars($row_table123->id); 
                          wird mir wieder nur die id an die sechs nullen angehängt und ich habe wieder z.B. 00000010

                          da muss irgendwo der fehlerteufel stecken. ich bräucht wohl noch eine zeile code, die echo htmlspecialchars($row_table123->id) beinhaltet, sich aber wie $id = 11112222; verhält. dann würde es auf jedenfall klappen.

                          bitte nochmals um hilfe!!!!!

                          stefan
                          Zuletzt geändert von Destrict; 01.08.2006, 18:25.

                          Kommentar


                          • #14
                            Du hast keine Checkung oder? Grundlagen lernen, schnell
                            PHP-Code:
                            echo str_pad($row_table123->id8'0'STR_PAD_LEFT); 
                            Du musst den Wert natürlich auch an die Funktion übergeben, sonst kann nichts aufgefüllt werden!

                            Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                            bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                            Wie man Fragen richtig stellt

                            Kommentar


                            • #15
                              Original geschrieben von ghostgambler
                              Du hast keine Checkung oder? Grundlagen lernen, schnell
                              warum reißt du mir nicht gleich den arm aus?

                              ich dachte nur das echo htmlspecialchars($row_table123->id); würde das schon für mich erledigen. selbstverständlich ist das quatsch! aber ich musste heute schon mit javascript, pyton und was weiß ich noch rumschlagen...

                              habe doch schonmal geschrieben, dass ich kein php-skripter bin! und das ich mehr als nur ein brett heut vorm kopf hab. aber kappieren du ich es schon einigermaßen.

                              FREUNDLICHE(RE) Grüße ghostgambler!

                              meine fresse...

                              Kommentar

                              Lädt...
                              X