表单向MySQL数据库提交不正确的信息

时间:2010-05-01 16:57:39

标签: php mysql forms

我创建了一个将数据提交到MySQL数据库的表单,但是日期,时间,年份和月份字段不断恢复到完全相同的日期(1970年1月1日),尽管事实上我将数据提交到数据库时表单显示当前日期,时间等给我。我已经设置了它,以便时间和日期字段自动显示当前时间和日期。有人可以帮我解决这个问题。

形式:

    <html>

<head>
<title>Ultan's Blog | New Post</title>
<link rel="stylesheet" href="css/newposts.css" type="text/css" />
</head>

<body>
<div class="new-form">
<div class="header">
<a href="edit.php"><img src="images/edit-home-button.png"></a>
</div>
<div class="form-bg">
<?php
if (isset($_POST['submit'])) {

    $month = htmlspecialchars(strip_tags($_POST['month']));
    $date = htmlspecialchars(strip_tags($_POST['date']));
    $year = htmlspecialchars(strip_tags($_POST['year']));
    $time = htmlspecialchars(strip_tags($_POST['time']));
    $title = htmlspecialchars(strip_tags($_POST['title']));
    $entry = $_POST['entry'];

        $timestamp = strtotime($month . " " . $date . " " . $year . " " . $time);

    $entry = nl2br($entry);

    if (!get_magic_quotes_gpc()) {
        $title = addslashes($title);
        $entry = addslashes($entry);
    }

    mysql_connect ('localhost', 'root', 'root') ;
    mysql_select_db ('tmlblog');

$sql = "INSERT INTO php_blog (timestamp,title,entry) VALUES ('$timestamp','$title','$entry')";

    $result = mysql_query($sql) or print("Can't insert into table php_blog.<br />" . $sql . "<br />" . mysql_error());

    if ($result != false) {
        print "<p class=\"success\">Your entry has successfully been entered into the blog. </p>";
    }

    mysql_close();
}
?>

<?php
$current_month = date("F");
$current_date = date("d");
$current_year = date("Y");
$current_time = date("H:i");
?>

<form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">

<input type="text" name="month" value="<?php echo $current_month; ?>" />
<input type="text" name="date" value="<?php echo $current_date; ?>" />
<input type="text" name="year" value="<?php echo $current_year; ?>" />


<input type="text" name="time" id="time" size="5"value="<?php echo $current_time; ?>" />

<input class="field2" type="text" id="title" value="Title Goes Here." name="title" size="40" />

<textarea class="textarea" cols="80" rows="20" name="entry" id="entry" class="field2"></textarea>

<input class="field" type="submit" name="submit" id="submit" value="Submit">

</form>
</div>
</div>
 </div>
 <div class="bottom"></div>
 <!-- //End Wrapper!-->  
</body>

</html>

</html>

alt text http://i42.tinypic.com/2ns4755.jpg

由于某种原因,帖子正在提交而没有时间戳,并且正在恢复为默认时间戳。

4 个答案:

答案 0 :(得分:1)

听起来你的表单给你的数据库提供了非常少量的“Ticks”。请注意,您有一个名称=“日期”和id =“日期”三次。这很可能是你的问题。更改这些名称和ID,使用月,年,日(根据您的“回发”)。

答案 1 :(得分:0)

看起来strtotime无法理解您提供给它的格式 请改用mktime

无论如何,您必须始终调试代码,即打印出查询以查看是否出现任何问题。

或者考虑使用mysql支持的类型colymn,datedatetime

您可能会感到困惑的是unix timestamp,它只是数字和mysql时间戳类型列,它是2010-05-01 00:00:00的字符串

答案 2 :(得分:0)

您有三个名为date的文本框。由于未设置$_POST['month']$_POST['year']strtotime()无法确定正确的时间戳,SQL查询如下所示:

INSERT INTO php_blog (timestamp,title,entry) VALUES ('','Title Goes Here.','')

将输入元素的名称更改为您的PHP代码所期望的内容:

<input type="text" name="month" value="<?php echo $current_month; ?>" />
<input type="text" name="date" value="<?php echo $current_date; ?>" />
<input type="text" name="year" value="<?php echo $current_year; ?>" />

完成此操作后,strtotime()将能够解析日期并在查询中插入正确的值。

INSERT INTO php_blog (timestamp,title,entry) VALUES ('1272738360','Title Goes Here.','')

答案 3 :(得分:0)

strtotime可能无法识别您提交日期的格式。

尝试使用经典的YYYY/MM/DD格式:

 $timestamp = strtotime("$year/$month/$date $time");