Max: Nullen in Tabellenfeldern zulassen

Hi zusammen,

ich habe hier ein Formular mit drei Feldern, in die man Tag(TT), Monat(MM) und Jahr(JJ) eintragen kann.
Die Werte werden dann über:

INSERT INTO uptodate (tag, monat, jahr) VALUES ('$_POST[tag]','$_POST[monat]','$_POST[jahr]')

in eine MySQL-Datenbank geschrieben, allerdings werden dabei eingegebene Nullen weggelassen (aus 20.02.08 wird 2.2.8).
Kann man dies vermeiden, also zulassen, dass Nullen in die Tabelle geschrieben werden?

Danke,
Max

  1. Frage: welche Datenform hat Dein DB Feld?

    Info: Nimm für Postleitzahlen kein INT, sondern TEXT, da aus 01234 dieses 1234 wird. Im Osten gibt es PLZ mit anstehender 0.

    1. Hi,

      Info: Nimm für Postleitzahlen kein INT, sondern TEXT,

      Unfug. Es soll ganz offenbar ein Datum gespeichert werden. Etwas anderes als ein Datumstyp müsste also einen *verdammt* guten Grund haben.

      Cheatah

      --
      X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
      X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
      X-Will-Answer-Email: No
      X-Please-Search-Archive-First: Absolutely Yes
      1. Heheheyho!

        Info: Nimm für Postleitzahlen kein INT, sondern TEXT,

        Unfug. Es soll ganz offenbar ein Datum gespeichert werden. Etwas anderes als ein Datumstyp müsste also einen *verdammt* guten Grund haben.

        Was an der Aussage, das Postleitzahlen eben keine Zahlen sind aber ja nichts aendert. :) Woher der Bezug zu Postleitzahlen ploetzlich kommt ist mir allerdings auch schleierhaft. Ich habs einfach als in den Raum geworfenen guten Ratschlag bewertet. (den ich so manchen unserer Kunden gern an die Stirn nageln wuerde)

        1. Hi,

          Info: Nimm für Postleitzahlen kein INT, sondern TEXT,

          [...]

          Was an der Aussage, das Postleitzahlen eben keine Zahlen sind aber ja nichts aendert. :) Woher der Bezug zu Postleitzahlen ploetzlich kommt ist mir allerdings auch schleierhaft.

          mir auch, und zwar so sehr, dass ich es erst jetzt durch Dich bemerkt habe ... Einen so plötzlichen Wechsel hatte ich nicht erwartet.

          Ich habs einfach als in den Raum geworfenen guten Ratschlag bewertet. (den ich so manchen unserer Kunden gern an die Stirn nageln wuerde)

          Nun ja, je nachdem welche Postleitzahlen gespeichert werden sollen, kann ein Zerofilled Int o.ä. durchaus von Vorteil sein.

          Cheatah

          --
          X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
          X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
          X-Will-Answer-Email: No
          X-Please-Search-Archive-First: Absolutely Yes
          1. Moin!

            Nun ja, je nachdem welche Postleitzahlen gespeichert werden sollen, kann ein Zerofilled Int o.ä. durchaus von Vorteil sein.

            Britische? ;)

            - Sven Rautenberg

            --
            "Love your nation - respect the others."
            1. Hi,

              Nun ja, je nachdem welche Postleitzahlen gespeichert werden sollen, kann ein Zerofilled Int o.ä. durchaus von Vorteil sein.
              Britische? ;)

              sofern die Briten auch Postleit_zahlen_ haben: ja. Nach meinem Kenntnisstand spinnen die aber, die Briten ;-)

              Cheatah

              --
              X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
              X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
              X-Will-Answer-Email: No
              X-Please-Search-Archive-First: Absolutely Yes
  2. Mahlzeit,

    INSERT INTO uptodate (tag, monat, jahr) VALUES ('$_POST[tag]','$_POST[monat]','$_POST[jahr]')

    Abgesehen davon, dass man NIEMALS Werte, die per POST übergeben wurden, ungeprüft, ungefiltert und unbehandelt in eine Datenbank schreiben sollte (dafür gibt's unter PHP z.B. die Funktion mysql_real_escape_string()!) ...

    in eine MySQL-Datenbank geschrieben, allerdings werden dabei eingegebene Nullen weggelassen (aus 20.02.08 wird 2.2.8).

    ... ist das völlig klar - wenn es sich um numerische Datenbankfelder handelt.

    Kann man dies vermeiden, also zulassen, dass Nullen in die Tabelle geschrieben werden?

    Warum? Wieso willst Du keinen numerischen Wert in der Tabelle speichern? Soll es bei der Ausgabe schöner aussehen? Dann formatiere die Zahlen DORT entsprechend.

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. »»Dann formatiere die Zahlen DORT entsprechend.

      Danke für die schnelle Antwort!
      Wie könnte eine solche Formatierung aussehen?

      Max

      1. Mahlzeit,

        Danke für die schnelle Antwort!
        Wie könnte eine solche Formatierung aussehen?

        In welcher Sprache?

        In PHP z.B.: printf("Datum: %02d.%02d.%04d", $tag, $monat, $jahr);

        MfG,
        EKKi

        --
        sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
        1. In PHP z.B.: printf("Datum: %02d.%02d.%04d", $tag, $monat, $jahr);

          Habe das über eine While-Schleife in PHP realisiert.
          An welcher Stelle muss denn jetzt die von dir vorgeschlagene Formatierung kommen?

          while ($row = mysql_fetch_array($resultat))
           {
          extract ($row);
             echo "<tr>
                   <td><b>   $tag.   </b></td>
                   <td><b>   $monat.    </b></td>
                   <td><b>   $jahr      </b></td>
                   </tr>";
          }

          Vielen Dank!

          1. Mahlzeit,

            An welcher Stelle muss denn jetzt die von dir vorgeschlagene Formatierung kommen?

            Wie wär's anstatt des echo?

            MfG,
            EKKi

            --
            sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
            1. Ok, jetzt hab ich das Prinzip verstanden!

              Danke EKKi und einen schönen Abend noch,
              Max

          2. Moin!

            Habe das über eine While-Schleife in PHP realisiert.
            An welcher Stelle muss denn jetzt die von dir vorgeschlagene Formatierung kommen?

            while ($row = mysql_fetch_array($resultat))
            {
            extract ($row);
               echo "<tr>
                     <td><b>   $tag.   </b></td>
                     <td><b>   $monat.    </b></td>
                     <td><b>   $jahr      </b></td>
                     </tr>";
            }

            Gibt es einen Grund, das Datum NICHT als Datumsspalte in der Datenbank abzuspeichern?

            Und außerdem bist du sehr leichtfertig über den Einwand hinweggegangen, das man dir deine Datenbank durch passende Dateneingabe zerschießen kann, weil du das Escaping vergessen hast.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."