2010-09-04 3 views
2

У меня есть небольшая проблемаPHP: для цикла и даты рождения

День рождения сохраняется как DATE в базе данных MySQL.

ДАТА является 00-00-00

и теперь, когда я сделать выбор опций, я сделал это с циклом:

<?php 
$month_names = array("januar", "februar", "marts", "april", "maj", "juni", "juli", "august", "september", "oktober", "november", "december"); 
for ($i=1; $i<=12; $i++) { 
    echo "<option "; 
    if ($i == $month) { 
     echo "selected=\"selected\" "; 
    } 
    echo "value=\"$i\">", $month_names[$i-1], "</option>\n"; 
} 
?> 

Это работает, но дает мне 1,2,3 , 4,5,6,7,8,9,10,11,12 в качестве значений.

мне нужно иметь его, как это 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.

Как я могу это сделать?

ответ

3

Вам нужно поставить условие, как это:

for ($i=1; $i<=12; $i++) { 
    echo "<option "; 
    if ($i == $month) { 
     echo "selected=\"selected\" "; 
    } 

    if ($i < 10) { 
     echo "value=\"0$i\">", $month_names[$i-1], "</option>\n"; 
    } 
    else{ 
     echo "value=\"$i\">", $month_names[$i-1], "</option>\n"; 
    } 
} 
+0

Я бы сказал, что подобное состояние немного много. Мне очень нравится решение Тима, и решение SimpleCoder было бы направлено. – 2ndkauboy

+0

@ Kau-Boy: Согласен, это то, что пришло мне в голову во время написания :) – Sarfraz

0

Простой подход был бы предварять строку значения с «0», если это меньше, чем 10.

3

str_pad() является то, что вы» повторно после.

http://www.php.net/str_pad

Вместо печати $i, вам нужно использовать

echo str_pad($i, 2, "0", STR_PAD_LEFT); 

который будет подушечка строки с нулями на размере левого, пока не будет длиной в два символа.

4

Замените 7-й линии со следующим:

printf("value=\"%02d\">%s</option>\n", $i, $month_names[$i-1]); 
1

Нет необходимости использовать строки форматирования функции:

Изменить

echo "value=\"$i\">", $month_names[$i-1], "</option>\n"; 

в

echo "value=\"$i\">", ($month_names[$i-1] < 10 ? $month_names[$i-1] : "0" . $month_names[$i-1]), "</option>\n"; 
Смежные вопросы