Как вставить даты, выбранные из выпадающих списков в таблицу MySQL с помощью php? - PullRequest
0 голосов
/ 10 апреля 2009

Если у вас есть 5 выпадающих списков для выбора даты (Y, m, d, H, i), как вставить выбранную дату и время в один столбец таблицы mySQL в качестве даты и времени с использованием PHP5?

Я знаю, что они должны быть объединены в строку, такую ​​как:

$DateTime="$Year-$Month-$Day $Hour:$Minute:00";

, а затем, возможно, используйте strtotime:

$Date=date('Y-m-d H:i:s', strtotime($DateTime)) ;

но где я могу объявить переменные и как мне встроить их в запрос, такой как:

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "details")) {

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date)
 VALUES (%s, %s, $s)",

                       GetSQLValueString($_POST['Location1'], "text"),
                       GetSQLValueString($_POST['Location2'], "text"),
                       GetSQLValueString($_POST[' ???? '], "date"));

Ответы [ 4 ]

1 голос
/ 10 апреля 2009

Вы также можете посмотреть в функцию mktime (): http://ca.php.net/mktime

Тогда вам просто нужно объявить переменную даты следующим образом:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']);

$location1 = mysql_real_escape_string( $_POST['Location1'];
$location2 = mysql_real_escape_string( $_POST['Location2'];

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', $date)";

mysql_query( $insertSQL );

EDIT:

Или, используя используемый вами формат sprintf:

$date = mktime($_POST['H'],$_POST['i'],0,$_POST['m'],$_POST['d'],$_POST['Y']);  

$insertSQL = sprintf("INSERT INTO sessions (Location1, Location2, Date)
     VALUES (%s, %s, $s)",

                           GetSQLValueString($_POST['Location1'], "text"),
                           GetSQLValueString($_POST['Location2'], "text"),
                           GetSQLValueString($date, "date"));

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

0 голосов
/ 15 апреля 2009

Спасибо всем, кто пытался помочь - ответ был намного менее сложным (блондин момент, я думаю! LOL) Просто нужно объявить переменные записи как:

$ _ POST ['startDate'] = "$ год- $ месяц- $ день $ час: $ минута: 00";

Нет необходимости в преобразовании времени, так как оно уже в формате Mysql (ДА!)

0 голосов
/ 11 апреля 2009

MySQL предоставляет функцию, которая облегчит вам эту задачу. FROM_UNIXTIME(). Я бы использовал mktime(), чтобы получить вашу дату в метке времени, поскольку ее издержки намного меньше, чем в strtodate, так как вы знаете, что части даты не нужно анализировать как строку.

Ниже приведен самый простой подход, который я могу себе представить:

$date = mktime($_POST['H'], $_POST['i'], 0, $_POST['m'], $_POST['d'], $_POST['Y']);

$location1 = mysql_real_escape_string( $_POST['Location1'];
$location2 = mysql_real_escape_string( $_POST['Location2'];

$insertSQL = "INSERT INTO sessions (Location1, Location2, Date) VALUES ('$location1', '$location2', FROM_UNIXTIME($date))";

Я предполагаю, что GetSQLValueString - это пользовательская функция Dreamweaver (я только слышал об этом). Я уверен, что вы можете применить это в своей реализации.

0 голосов
/ 11 апреля 2009

Создайте служебную функцию, которая конвертирует между «режимом отображения» и режимом MySQL, ti пригодится в некоторых других проектах в будущем.

Дата - Возвращает строку, отформатированную в соответствии с заданной строкой формата

MkTime - получение метки времени Unix для даты

Strtotime - Разбирать текстовое описание даты и времени на английском языке в метку времени Unix

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