我创建了一个将数据提交到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
由于某种原因,帖子正在提交而没有时间戳,并且正在恢复为默认时间戳。
答案 0 :(得分:1)
听起来你的表单给你的数据库提供了非常少量的“Ticks”。请注意,您有一个名称=“日期”和id =“日期”三次。这很可能是你的问题。更改这些名称和ID,使用月,年,日(根据您的“回发”)。
答案 1 :(得分:0)
看起来strtotime
无法理解您提供给它的格式
请改用mktime
。
无论如何,您必须始终调试代码,即打印出查询以查看是否出现任何问题。
或者考虑使用mysql支持的类型colymn,date
或datetime
您可能会感到困惑的是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");