2010-09-04 8 views
2

J'ai un petit problèmePHP: pour la date de boucle et d'anniversaire

Les anniversaires sont stockés sous forme de DATE dans la base de données MySQL.

DATE est 00-00-00

et maintenant quand je fais les options de sélection, je l'ai fait avec une boucle:

<?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"; 
} 
?> 

Cela fonctionne, mais me donne 1,2,3 , 4,5,6,7,8,9,10,11,12 comme valeurs.

je dois avoir comme ça 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12.

Comment puis-je faire cela?

Répondre

3

Vous devez mettre une condition comme celui-ci:

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

Je dirais, qu'une condition comme celle-ci est un peu à beaucoup. J'aime vraiment la solution de Tim et j'aurais fait la solution de SimpleCoder autrement. – 2ndkauboy

+0

@ Kau-Boy: D'accord c'est ce qui m'est venu à l'esprit au moment de l'écriture :) – Sarfraz

0

Une approche simple serait de préfixer la chaîne de valeur avec un « 0 » si elle est inférieure à 10.

3

str_pad() est ce que vous » re après.

http://www.php.net/str_pad

Au lieu d'imprimer $i, vous devez utiliser

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

qui sera pavé la chaîne avec des zéros sur la taille à la main gauche jusqu'à ce qu'il soit deux caractères.

4

Remplacer la 7ème ligne avec les éléments suivants:

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

Pas besoin d'utiliser chaîne fonctions de mise en forme:

Changer

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";