Как получить дату и время из строки таблицы MySQL - PullRequest
0 голосов
/ 03 марта 2011

я обнаружил старый сценарий блога (очень старый), работающий на моем ПК. У меня возникли проблемы с получением даты и времени из моей БД для отображения в PHP. Может ли кто-нибудь помочь мне.
Это моя настройка базы данных MySQL.

CREATE TABLE blog_posts (
  id int(11) NOT NULL auto_increment,
  title varchar(30) NOT NULL default '',
  news text NOT NULL,
  poster varchar(15) NOT NULL default '',
  date timestamp(14) NOT NULL,
  PRIMARY KEY  (id)
) TYPE=MyISAM;


И это то, что я использую, чтобы отправить сообщение:

<?php

include "db.php";   
    $title=$_POST['title'];
    $news=$_POST['news'];
    $poster=$_POST['poster'];

    $query="INSERT INTO $blogposts (title, news, poster) VALUES ('$title', '$news', '$poster')";
    $result=mysql_query($query) or die (mysql_error());

    mysql_close();

    header("Location: post.php");
?>


И, наконец, это то, что я использую для вызова даты во внешнем интерфейсе:

<?php echo "posted on: - ".$day.".".$month.".".$year." at ".$hour.":".$min; ?>


Я не эксперт (ясно), но призыв к дате не выглядит правильным для меня. У кого-нибудь есть какие-либо идеи о том, как я могу заставить его работать или даже сделать его лучше?
EDIT ::

<?php

    include "db.php";

//query
    $query="SELECT * FROM ".$blogposts." ORDER BY id DESC LIMIT 0,$limit ";
    $result=mysql_query($query) or die (mysql_error());

//loop
    while($row=mysql_fetch_array($result))
    {
$querycomment = "SELECT ID FROM ".$newscomments." WHERE newsid=".$row['id'];
$resultcomment=mysql_query($querycomment) or die (mysql_error());
$num_rows = mysql_num_rows($resultcomment);

    ereg("^([0-9]{4})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})([0-9]{2})",$row['date'],$res);
    $year=$res[1];
    $month=$res[2];
    $day=$res[3];
    $hour=$res[4];
    $min=$res[5];
    $sec=$res[6];


?>


Спасибо

Ответы [ 3 ]

2 голосов
/ 03 марта 2011

Поскольку столбец даты имеет тип данных TIMESTAMP и не имеет нулевого ограничения, он будет иметь значение по умолчанию current_timestamp, если при вставке данных в столбец даты не было добавлено никаких данных. см. Руководство по использованию метки времени mysql .

Таким образом, чтобы получить результат, который вы запрашиваете, вы можете попробовать получить эти данные, используя следующий код:

$sql = "select id, title, news, poster, DATE_FORMAT(date,'%d.%m.%Y at %k:%i') as posteddate from blog_posts";
$result = mysql_query($sql);
while ($row = mysql_fetch_assoc($result)) {
    echo $row["title"]."<br/>";
    echo "By : " . $row["poster"]."<br/>";
    echo "posted on: -  " . $row["posteddate"]."<br/>"; //"posted on: - 03.03.2011 at 7:35"
}
2 голосов
/ 03 марта 2011

Вы, похоже, не добавляете никакого значения в поле даты в вашей команде вставки.Вы можете использовать now(), чтобы добавить метку текущего времени, чтобы добавить текущее время во время вставки.Чтобы извлечь время, вы можете (а) прочитать поле даты из таблицы и отформатировать время с помощью PHP или (б) получить отформатированные поля метки времени в команде выбора, используя mysql функции даты и времени

Вам также нужно иметь некоторый код для чтения значений в вашем PHP, чтобы прочитать значения для полей.Это, кажется, отсутствует в вашем вопросе.

0 голосов
/ 03 марта 2011

Конечно, вы не определили ни одну из переменных даты, которую вы пытаетесь использовать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...