HTML和PHP,编辑生日

时间:2010-09-04 13:59:05

标签: php html

如果我将生日存储为1990-01-01

当用户编辑他的个人资料时,如何显示他当前的生日?

<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$days" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_days">
    <option selected="selected" value="1">1</option>
    <option value="2">2</option>

    <option value="3">3</option>
    <option value="4">4</option>
    <option value="5">5</option>
    <option value="6">6</option>
    <option value="7">7</option>
    <option value="8">8</option>

    <option value="9">9</option>
    <option value="10">10</option>
    <option value="11">11</option>
    <option value="12">12</option>
    <option value="13">13</option>
    <option value="14">14</option>

    <option value="15">15</option>
    <option value="16">16</option>
    <option value="17">17</option>
    <option value="18">18</option>
    <option value="19">19</option>
    <option value="20">20</option>

    <option value="21">21</option>
    <option value="22">22</option>
    <option value="23">23</option>
    <option value="24">24</option>
    <option value="25">25</option>
    <option value="26">26</option>

    <option value="27">27</option>
    <option value="28">28</option>
    <option value="29">29</option>
    <option value="30">30</option>
    <option value="31">31</option>

</select>

<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$months" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_months" style="width:100px;">
    <option selected="selected" value="1">januar</option>
    <option value="2">februar</option>
    <option value="3">marts</option>
    <option value="4">april</option>
    <option value="5">maj</option>
    <option value="6">juni</option>

    <option value="7">juli</option>
    <option value="8">august</option>
    <option value="9">september</option>
    <option value="10">oktober</option>
    <option value="11">november</option>
    <option value="12">december</option>

</select>
<select name="ctl00$ctl00$cphContent$cphContent$cphContentLeft$DatePicker1$years" id="ctl00_ctl00_cphContent_cphContent_cphContentLeft_DatePicker1_years">
    <option selected="selected" value="1950">1950</option>
    <option value="1951">1951</option>
    <option value="1952">1952</option>
    <option value="1953">1953</option>
    <option value="1954">1954</option>

    <option value="1955">1955</option>
    <option value="1956">1956</option>
    <option value="1957">1957</option>
    <option value="1958">1958</option>
    <option value="1959">1959</option>
    <option value="1960">1960</option>

    <option value="1961">1961</option>
    <option value="1962">1962</option>
    <option value="1963">1963</option>
    <option value="1964">1964</option>
    <option value="1965">1965</option>
    <option value="1966">1966</option>

    <option value="1967">1967</option>
    <option value="1968">1968</option>
    <option value="1969">1969</option>
    <option value="1970">1970</option>
    <option value="1971">1971</option>
    <option value="1972">1972</option>

    <option value="1973">1973</option>
    <option value="1974">1974</option>
    <option value="1975">1975</option>
    <option value="1976">1976</option>
    <option value="1977">1977</option>
    <option value="1978">1978</option>

    <option value="1979">1979</option>
    <option value="1980">1980</option>
    <option value="1981">1981</option>
    <option value="1982">1982</option>
    <option value="1983">1983</option>
    <option value="1984">1984</option>

    <option value="1985">1985</option>
    <option value="1986">1986</option>
    <option value="1987">1987</option>
    <option value="1988">1988</option>
    <option value="1989">1989</option>
    <option value="1990">1990</option>

    <option value="1991">1991</option>
    <option value="1992">1992</option>
    <option value="1993">1993</option>
    <option value="1994">1994</option>
    <option value="1995">1995</option>

</select>

因此,用户的生日为选中=。

它存储在数据库中,我得出这样的完整生日:

<?php echo $v["birthday"]; ?>

4 个答案:

答案 0 :(得分:2)

感谢“Richard Fearn”和“Karem”,我已经完成了月份和年份的组合框。完整的源代码如下:

<?php
    $month = date("n"); //without leading zero(o)
    $year = date("Y"); //four digit format
    $st_year = "2010"; //Starting Year
    $month_names = array("January", "February", "March","April", "May", "June", "July", "August", "September", "October", "November", "December");
?>

<form name="Month_Year" id="Month_Year" action="<?php $SITE['REQURI'] ?>" method="post">
<select name="month" id="month">
<?php
for ($i=1; $i<=12; $i++) {
    echo "<option ";
    if ($i == $month) {
        echo "selected=\"selected\" ";
    }
    echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}
?>
</select>
<select name="year" id="year">
<?php
for ($i=$st_year; $i<=$year; $i++) {
    echo "<option ";
    if ($i == $year) {
        echo "selected=\"selected\" ";
    }
    echo "value=\"$i\">$i</option>\n";
}
?>
</select>

<input type="submit" name="submit" id="submit" value="Submit" />
</form>

<?php
$month = $_POST['month'];
$year = $_POST['year'];
$final_val = $month ."-". $year ;
echo $final_val;

?>

答案 1 :(得分:1)

如果您使用for循环生成<option>元素,例如:

for ($i=1; $i<=31; $i++) {
    echo "<option value=\"$i\">$i</option>\n";
}

然后您可以稍微修改它以在适当的元素上插入selected属性:

// Assuming $day is the user's day of birth
for ($i=1; $i<=31; $i++) {
    echo "<option ";
    if ($i == $day) {
        echo "selected=\"selected\" ";
    }
    echo "value=\"$i\">$i</option>\n";
}

您会在月份和年份使用类似的循环。在几个月的情况下,您不想输出数字但想要月份名称,您可以将名称存储在数组中并在循环中索引到该数组中:

$month_names = array("Jan", "Feb", "Mar", ...);
for ($i=1; $i<=12; $i++) {
    echo "<option ";
    if ($i == $month) {
        echo "selected=\"selected\" ";
    }
    echo "value=\"$i\">", $month_names[$i-1], "</option>\n";
}

要获取yyyy-mm-dd出生日期字符串中的日/月/年,请使用explode功能,如Sabeen Malik所示。

答案 2 :(得分:0)

不使用硬编码的HTML,而是使用for循环打印组合框,并根据用户选择的内容,在相关的“选项”中打印“已选择”

获取日期部分,您可以执行以下操作:

list($year , $month , $day) = explode("-" , $dob);

答案 3 :(得分:0)

我想我会添加我的方法作为答案。也许对某人有用。

这使用缩写的月份数组。

来自Sabeen的

list()想法。

<?php
·
·
·
list( $dob['year'], $dob['month'], $dob['day'] ) = explode( "-", $user['birthday'] );

$user['dob'] = $dob;
?>
<select id="dob-day" name="dob-day">
    <?php
    foreach( range(1, 31) as $day )
        printf( "<option%s>$day</option>", $day == $user['dob']['day'] ? ' selected' : '' );
    ?>
</select>
<select id="dob-month" name="dob-month">
    <?php
    $months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');

    foreach( $months as $key => $month )
        printf( "<option%s>$month</option>", $key + 1 == $user['dob']['month'] ? ' selected' : '' );
    ?>
</select>
<select id="dob-year" name="dob-year">
    <?php
    foreach( range( date('Y'), date('Y') - 105 ) as $year )
        printf( "<option%s>$year</option>", $year == $user['dob']['year'] ? ' selected' : '' );
    ?>
</select>
?>