2016-05-27 4 views
-1

В принципе, у меня есть контактная форма, и я также хочу отправить дату, когда нажата кнопка отправки. В основном вы заполняете поля, отправляете, и дата проходит с ним. Я точно не знаю, как это сделать ...Получение даты и отправка ее через вставку mysqli?

У меня есть форма в .php на другой странице, но действие ведет к текущей странице.

дата должна быть: год-мм-дд

<?php 

include 'connection.php'; 

$name = $_POST['name']; 
$email = $_POST['email']; 
$phone = $_POST['phone']; 
$question = $_POST['question']; 
$date = //I need the date here so it can go through the insert propperly; 


if ($_POST['submit']){ 

    mysqli_query($connect,"INSERT INTO contactusresults (`id`, `date`, `name`, `email`, `phone`, `question`) VALUES (NULL, '$date', '$name', '$email' , '$phone', '$question')") or die(mysql_error()); 


    header('Location: ../pages/index.php'); 
    //change to submit page 
}else{ 
    header('Location: ../pages/index.php'); 
} 


?> 
+0

$ дата = дата ('Y-м-д', StrToTime ($ _ GET [ 'дата'])) –

+0

просто использовать 'CURDATE()'. –

+0

Где именно я помещаю «NOW()» –

ответ

0

функция Использовать дату PHP.

$date = date("Y-m-d H:i:s"); // If your mysql column is datetime 
$date = date("Y-m-d"); // If your mysql column is just date 

Используйте NOW() в SQL

mysqli_query($connect,"INSERT INTO contactusresults (`id`, `date`, `name`, `email`, `phone`, `question`) 
VALUES (NULL, NOW(), '$name', '$email' , '$phone', '$question')") or die(mysql_error()); 
+0

'NOW()' возвращает 'YYYY-mm-dd 00: 00: 00', а не предполагаемый' YYYY-mm-dd' –

1

"Дата должна быть: год-мм-дд" CURDATE() функция

Использовать в MySQL, как это возвращает YYYY-mm-dd.

VALUES (NULL, CURDATE(), '$name', ... 

и не забудьте установить столбец даты в тип DATE. Если в настоящее время VARCHAR, то это не сработает.

Ссылки:

Вы также должны добавить exit; после каждого заголовка. В противном случае ваш код может продолжить выполнение.

Примечание:mysql_error(), который должен быть указан как mysqli_error($connect). API MySQL и MySQLi не смешиваются.

Ваш метод подключения неизвестен, поэтому вам нужно использовать тот же, который вы использовали для вашего запроса, являясь MySQLi_ API.

Ссылка:

Если это mysql_ или PDO, то те, которые не будут работать с вашим запросом. Различные API MySQL не смешиваются.

Вы также должны проверить наличие ошибок.

Проконсультируйтесь по следующим ссылкам: http://php.net/manual/en/mysqli.error.php и http://php.net/manual/en/function.error-reporting.php и примените это к вашему коду.


Ваш действующий код открыт для SQL injection.Используйте mysqli with a prepared statement, или PDO with prepared statements, они намного безопаснее.


Foonotes:

"Я получил форму в .php на другой странице, но действие приводит к текущей странице."

Это неясно. Действие должно привести к вашему коду запроса. «Текущая страница» (для меня) означает либо action="html_form.php", либо action="".

Поэтому его необходимо изменить на тот, который вы используете для запроса.

Вы также должны проверить пустые поля, используя empty().

Другое дело. Я заметил, что вы используете NULL для своего столбца id. Убедитесь, что он принимает значения NULL, иначе ваш запрос не будет выполнен. Если это так, и что ваш id является AUTO_INCREMENT, используйте '' в соответствии со следующим столбцом id.

VALUES ('', CURDATE(), '$name', ... 
0

В качестве альтернативы выбранного ответа:

На вашем столе MySQL вы можете установить колонки на значение даты, чтобы сохранить timestamp вставки, которая будет включать в себя дату, как указано, и можете вызывается с использованием функции DATE_FORMAT. Этот метод полностью отрицает необходимость вручную устанавливать и сохранять значение даты при вставке.

установки Таблица:

CREATE TABLE `contactusresults` (
    `id` INT PRIMARY KEY AUTO_INCREMENT, 
    `name` VARCHAR(256), 
    `email` VARCHAR(256), 
    `phone` VARCHAR(256), 
    `question` VARCHAR(256), 
    `date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, 
) 

Таблица Вставка:

mysqli_query($connect,"INSERT INTO contactusresults (`name`, `email`, `phone`, `question`) VALUES ('$name', '$email' , '$phone', '$question')") or die(mysqli_error($connect)); 

Чтобы извлечь дату из таблицы данных:

$var = mysqli_query($connect, "SELECT `name`,DATE_FORMAT(`date`, '%Y-%d-%m') as `date` FROM contactusresults WHERE id = 1"); 

Примечания:

  • Ваш MySQLi_error должен быть mysqli_ и должен содержать переменную соединения.

  • NULL Любые ценности, на вставке, такие как id могут быть проигнорированы

  • только один столбец временной метки может быть установлен в виде таблицы.

Смежные вопросы