проблема с отметкой времени - PullRequest
2 голосов
/ 16 июля 2010

У меня есть несколько сценариев, и в таблице базы данных я установил для dato значение int (25) и отметку времени

У меня есть сценарий создания темы, а затем я создаю тему, в которую вставляются дата и время.табель времени (дато).

Но почему-то мой сценарий комментариев не будет вставлять время: S и то же самое, что я использую: S.

Вот мой сценарий

    if(isset($_POST['opret_kommentar']))
{
 $indhold = $_POST['indhold'];
 $godkendt = "ja";

 $mysql = connect();
 $stmt = $mysql->prepare("INSERT INTO forum_kommentare (fk_forum_traad, brugernavn, indhold, dato, godkendt) VALUES (?,?,?,?,?)") or die($mysql->error);
 $stmt->bind_param('issis', $traadID, $_SESSION['username'], $indhold, $dato, $godkendt) or die($mysql->error);
 $stmt->execute();
 $stmt->close();

 $svar = mysqli_insert_id($mysql); 

 header("location: forum.traad.php?traadID=$traadID&kategoriID=$kategoriID&#$svar");

}

Вот мой сценарий создания темы, так что вы можете увидеть те же самые вещи, которые я использую: S

    if(isset($_POST['send'])) {

 $kategoriID = $_GET['kategoriID'];
    $overskrift = $_POST['overskrift'];
    $indhold    = $_POST['indhold'];
 $godkendt   = "ja";

    $mysql = connect();
    $stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, dato, godkendt) VALUES (?,?,?,?,?,?)") or die($mysql->error);
 $stmt->bind_param('ssisis', $overskrift, $indhold, $kategoriID, $_SESSION['username'], $dato, $godkendt) or die($mysql->error);
 $stmt->execute();
 $stmt->close();

 $traadID = mysqli_insert_id($mysql);

  header("location: forum.traad.php?traadID=$traadID&kategoriID=$kategoriID");

}#Lukker isset send

Вот мой SQL

CREATE TABLE, ЕСЛИ НЕ СУЩЕСТВУЕТ forum_kommentare (id int (11) NOT NULL AUTO_INCREMENT, fk_forum_traad int (11) NOT NULL,
brugernavn текст NOT NULL, indhold средний текст NOT NULL, dato отметка времени NOT NULL ПО УМОЛЧАНИЮ CURRENT_TIMESTAMP ON UPDATECURRENT_TIMESTAMP, godkendt varchar (4) NOT NULL DEFAULT 'ja',
PRIMARY KEY (id)) ENGINE = MyISAM CHARSET DEFAULT = latin1 AUTO_INCREMENT = 4;

-

- Дамп данных для табеллена forum_kommentare


-

- Структур-дамп для табеллена forum_traad

СОЗДАТЬ ТАБЛИЦУ, ЕСЛИ НЕ СУЩЕСТВУЕТ forum_traad (id int (11) NOT NULL AUTO_INCREMENT, overskrift текст NOT NULL, indhold mediumtext NOT NULL, fk_forum_kategori int (11) NOT NULL, brugernavn text NOT NULL, dato отметка времени NOT NULL DEFAULT CURRENT_TIMESTAMP при ОБНОВЛЕНИИ CURRENT_TIMESTAMP, godkendt varchar (4) NOT NULL ПО УМОЛЧАНИЮ 'ja', ПЕРВИЧНЫЙ КЛЮЧ (id)) ДВИГАТЕЛЬ = АВТОМОБИЛЬНЫЙ ШИНАМ ПО УМОЛЧАНИЮ = 1 ШАРС МАРША =;

- - Дамп данных для tabellen forum_traad

Надеюсь, кто-то может мне помочь: /

Ответы [ 2 ]

0 голосов
/ 16 июля 2010

Более дешевое и веселое решение было бы ...

$stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, godkendt) VALUES (?,?,?,?,?)") or die($mysql->error);

Только не устанавливайте столбец дато. Первый (крайний левый) столбец TIMESTAMP любой таблицы будет автоматически установлен в текущее время даты при вставке или обновлении строки.

0 голосов
/ 16 июля 2010

Помимо вашего кода, который должен быть правильно отформатирован, чтобы его можно было прочитать, я настоятельно рекомендую вам использовать поле даты MySQL, а не метку времени.

Поэтому измените этот запрос на:

// notice that the date is inserted by MySQL with the NOW() operator
$stmt = $mysql->prepare("INSERT INTO forum_traad (overskrift, indhold, fk_forum_kategori, brugernavn, dato, godkendt) VALUES (?,?,?,?,NOW(),?)") or die($mysql->error);

Почему вы должны использовать поле даты MySQL вместо метки времени?

Диапазон DATETIME ... '1000-01-01 00:00:00' до '9999-12-31 23:59:59 '.

Диапазон TIMESTAMP ...' 1970-01-01 00:00:01 UTC до 2038-01-19 03: 14: 07 '

Мало того, у вас также есть много встроенных функций MYSQL для работы с DATETIME, таких как INTERVAL, которые позволят вам делать великие дела.

// easy pull all comments values from within a range
SELECT * FROM your_table
WHERE your_date_field = DATE_SUB('2001-01-01 12:12:12' + INTERVAL 15 DAYS;

Если вам нужноРаботая с метками времени в PHP, вы можете извлекать их в реальном времени в SQL следующим образом:

// converts a DATETIME field real time to timestamps
SELECT UNIX_TIMESTAMP(your_date_field)
FROM your_table (...)
And when you pull them out just format them anyway you like using strftime. Example bellow.

// pull a date from MySQL and format them to a custom format
// %A -> full weekday | %B -> full month name | %d -> month day | %Y - year 1999
$sql = "SELECT title, name, UNIX_TIMESTAMP(date) as timestamp
        FROM your_table
        WHERE your_limits";
$result = mysql_fetch_assoc(mysql_query($sql));
echo strftime("%A, %B %d, %Y", $result['timestamp']);

Я уже рассмотрел вопрос в той же теме , так что вы можете посмотреть в этой теме дополнительныеответы.

Надеюсь, это поможет!

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