【问题标题】:How to choose date of birth in calendar如何在日历中选择出生日期
【发布时间】:2016-01-29 11:40:52
【问题描述】:

作为出生日期的表单输入选择日历前端并存储为mysqli。

我不知道有人说该怎么做。因为我是php新手。

【问题讨论】:

  • 请展示你所做的工作。
  • 欢迎来到 SO,请在提问时更具体一点:您尝试过什么,您期望什么等。请参阅how to ask

标签: javascript php html mysqli


【解决方案1】:

您可以使用 jQuery UI 日期选择器。你可以找到它的文档here

让我们首先包含并启动插件

 /* include files needed */
<link rel="stylesheet" href="//code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css">
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
<script src="//code.jquery.com/ui/1.11.4/jquery-ui.js"></script>

/* initiate plugin */
<script>
  $( "#date" ).datepicker({dateFormat: "yy-mm-dd"});
</script>

选择器将是您的日期input,如下所示:

<input type="text" id="date" name="date">

然后以您通常的方式存储日期。记住日期格式必须是YYYY-MM-DD

【讨论】:

    【解决方案2】:

    使用

    <input type="date" name="birthDate">
    
    $birthDate = $_POST['birthDate'];
    

    使用 strtotime 您可以以 yyyy-mm-dd 格式存储日期。

    $newDOB = date('Y-m-d', strtotime($birthDate));
    

    【讨论】:

    • @sarathi 有什么更新吗?如果有帮助,请投票并接受答案谢谢!
    【解决方案3】:

    按照以下四个步骤完成您的需求设置。只需要创建 db 结构即可。

    1. 配置 Datepicker 以使用 altField(http://api.jqueryui.com/datepicker/#option-altField) 及其 altFormat 选项以支持的格式提供日期:

    <input type="hidden" id="actualDate" name="actualDate"/>
    $( "selector" ).datepicker({
        altField : "#actualDate"
        altFormat: "yyyy-mm-dd"
    });
    

    或者,如果您希望用户以 YYYY-MM-DD 格式查看日期,只需设置 dateFormat option

    $( "selector" ).datepicker({
        dateFormat: "yyyy-mm-dd"
    });
    

    2. 使用 MySQL 的 STR_TO_DATE() 函数转换字符串:

    INSERT INTO user_date VALUES ('', '$name', STR_TO_DATE('$date', '%m/%d/%Y'))
    

    3. 将从 jQuery 接收的字符串转换为 PHP 理解为日期的内容,例如 DateTime 对象:

    $dt = \DateTime::createFromFormat('m/d/Y', $_POST['date']);
    and then either:
    

    - 获取合适的格式化字符串:

    $date = $dt->format('Y-m-d');
    

    - 获取 UNIX 时间戳:

    $timestamp = $dt->getTimestamp();
    
    which is then passed directly to MySQL's [FROM_UNIXTIME()][3] function:
    
    INSERT INTO user_date VALUES ('', '$name', FROM_UNIXTIME($timestamp))
    

    4. 手动将字符串操作为有效的文字:

    $parts = explode('/', $_POST['date']);
    $date  = "$parts[2]-$parts[0]-$parts[1]";
    

    希望对您有所帮助!

    【讨论】:

      【解决方案4】:
      <input type="date" name="bday">
      

      试试这个从用户那里获取出生日期。

      然后在 PHP 中转换

      <?php
          $dob = date('Y-m-d', strtotime($_POST['bday']));
      ?>
      

      【讨论】:

      • 优秀!!!。但是Mysqli如何存储我需要yyyy-mm-dd格式。这种格式存储正确还是损坏?
      • 嗯,你可以把这个格式转换成 MySQLi 格式,比如 $newDOB = date('Y-m-d', strtotime($dateofbirth));
      • 抱歉问这个问题?如何转换这段代码放在哪里?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多