michael: Zahlen mit führender 0 formatieren

hallo alle zusammen,

ich lasse per for-schleife für ein datums-select feld alle tage von 1-31 ausgeben:

<select name="select">
  <?php for ($i = 1; $i <= 31; $i++){?>
    <option value="<?=$i?>"><?=$i?></option>
  <?php } ?>
</select>

ich will diese daten in ein mysql date-feld übernehmen.
dazu muss aber ja nicht eine 1 im value attribut stehen, sondern eine "01"...

gibt es eine möglichkeit, mit php zahlen unter immer zweistellig zu formatieren? also mit einer führenden 0?

vielen dank für eure hilfe,
grüße,
michael

  1. Hallo du da draußen,

    gibt es eine möglichkeit, mit php zahlen unter immer zweistellig zu formatieren? also mit einer führenden 0?

    Hmm...
    <?=((strlen($i) == 1) "0" : "").$i?>

    Also:
    Wenn die Länge von $i 1 ist, schreibe eine Null und ansonsten nichts. Und dann schreibe $i.

    Ist bestimmt nicht die sauberste Lösung, aber ich habe keine Ahnung von sauberem Programmierstil... ;-)

    Du könntest natürlich auch eine eigene Funktion schreiben, wie zum Beispiel:
    function nulls($number, $digits=2)
    {
        while(strlen($number) < $digits)
          $number = "0".$number;
        return $number;
    }

    Die rufst du dann einfach so auf:
    <?=nulls($i)?>

    Grüße von hier drinnen, aus Biberach an der Riss,
    Candid Dauth (Dogfish)

    --
    »Bismarck biss Mark, bis Mark Bismarck biss!«
    http://cdauth.net.tc/
    ie:{ fl:( br: va:} ls:[ fo:| rl:( n4:( ss:) de:> js:( ch:| sh:( mo:) zu:|
    1. Hello,

      es gibt die Funktion str_pad() http://de3.php.net/manual/de/function.str-pad.php

      Und außerdem könnte man auch mit substr('00'.$zahl,-2) arbeiten

      Harzliche Grüße aus http://www.annerschbarrich.de

      Tom

      --
      Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
      Nur selber lernen macht schlau
  2. Hi,

    ich will diese daten in ein mysql date-feld übernehmen.
    dazu muss aber ja nicht eine 1 im value attribut stehen, sondern eine "01"...

    Sagt wer?

    mysql> show columns from datum;
    +-------+------------+------+-----+------------+----------------+
    | Field | Type       | Null | Key | Default    | Extra          |
    +-------+------------+------+-----+------------+----------------+
    | id    | bigint(20) |      | PRI | NULL       | auto_increment |
    | tag   | date       |      |     | 0000-00-00 |                |
    +-------+------------+------+-----+------------+----------------+
    2 rows in set (0.01 sec)

    mysql> insert into datum (id, tag) values (0, "2004-11-3");
    Query OK, 1 row affected (0.00 sec)

    mysql> select * from datum;
    +----+------------+
    | id | tag        |
    +----+------------+
    |  1 | 2004-11-03 |
    +----+------------+
    1 row in set (0.00 sec)

    Beachte das Format des Datums beim insert und beim anschließenden select.

    gibt es eine möglichkeit, mit php zahlen unter immer zweistellig zu formatieren? also mit einer führenden 0?

    • Zahlen: nein. Beachte dabei auch, daß bei Zahlen eine führende Null eine besondere Bedeutung hat:

    echo 011 + 1; // gibt logischerweise 10 aus.

    • Strings, die eine Zahl darstellen: ja (neben den bereits genannten Lösungen: sprintf("%02d", $zahl) bzw. printf)

    cu,
    Andreas

    --
    Warum nennt sich Andreas hier MudGuard?
    Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.