使用PHP将日期和时间表单字段发送到MySQL

时间:2012-11-02 04:19:49

标签: php mysql forms html5

我在帖子中搜索了答案,最接近的答案来自“试图发布日期 - 通过php-with-mysql-need-help”

我有一个包含2个输入字段的表单。用户从html5弹出日历选择器中选择日期,输入时间类型,然后将表单提交给mysql数据库。我无法获取日期和时间字段以验证/上传到数据库。

在我的MySQL数据库中,我有一个名为约会的表,其中一个名为curdate的列具有DATE类型;另一列称为curtime,类型为TIME。

我的PHP文件在文件顶部有PHP验证和SQL操作,底部有粘性html表单。表单用于发送表单

以下是代码:

$td = date( 'Y-m-d H:i:s', $phpdate );
$phpdate = strtotime( $td );
if(isset($_POST['submitted'])) {
    require_once('mysqli_connect.php');
    $errors=array();
if(empty($_POST['curdate'])) {
            $errors[]='Your date did not match';
        } else {
            $td=mysqli_real_escape_string($dbc,trim($_POST['curdate']));
    }

    if(empty($_POST['curtime'])) {
            $errors[]='Your time is empty';
    } else {
        $tt=$_POST['curtime'];
    }
if(empty($errors)) {
    $q="INSERT INTO users (first_name,last_name,email,curdate,curtime,physician,reason) VALUES ('$fn','$ln','$e','$td','$tt','$phys','$reason')";
    $r=@mysqli_query($dbc,$q);

    if($r) {
        echo '<h1>Thanks</h1>
        <p>You are now registered</p><p><br/></p>';
    } else {
        echo '<h1>System Error</h1>
        <p class="error">You could not be registered</p>';
        echo '<p>'.mysqli_error($dbc).'<br/><br/>Query:'.$q.'</p>';
    }

    mysqli_close();
    include('includes/footer.html');
    exit();
    } else {
    echo '<h1>Error</h1>
    <p class="error">The following errors occurred:<br/>';
    foreach ($errors as $msg) {
        echo "-$msg<br/>\n";
    }
    echo '</p><p> Please try again</p><p><br/></p>';
    }
    mysqli_close($dbc);
}

2 个答案:

答案 0 :(得分:2)

Mysql或Mysqli支持日期格式为'yyyy-mm-dd'所以你需要在插入DB之前以适当的格式转换日期和时间

如果要在用户提交表单时插入当前日期和时间,请使用以下查询

    INSERT INTO users (first_name,last_name,email,curdate,curtime,physician,reason) 
               VALUES ('$fn','$ln','$e',CURDATE(),CURTIME(),'$phys','$reason')

但是如果你想从表单字段插入日期,请​​执行以下操作

    $td=$_POST['curdate'];
    $tt=$_POST['curtime'];

    $td=date('Y-m-d',strtotime($td));    //Converts date to 'yyyy-mm-dd' acceptable to mysql
    $tt=date('H:i:s',strtotime($tt));    //converts time to HH:mm:ss

    //Now apply Your Query as
     INSERT INTO users (first_name,last_name,email,curdate,curtime,physician,reason) 
               VALUES ('$fn','$ln','$e','$td','$tt','$phys','$reason')

答案 1 :(得分:0)

你可能遇到问题,如果你在mysql中使用table dateandtime类型创建了那一行,如果是这种情况你将无法像那样存储它。如果你希望它只是使用text或varchar ....

DATE - 以YYYY-MM-DD格式存储日期值。例如2008-10-23。 DATETIME - 存储YYYY-MM-DD HH:MM:SS格式的日期和时间值。例如2008-10-23 10:37:22。支持的日期和时间范围是1000-01-01 00:00:00一直到9999-12-31 23:59:59 TIMESTAMP - 与DATETIME类似,但有一些差异取决于MySQL的版本和服务器运行的模式。