jQuery Datepicker Вставить NULL, если оставлено пустым

0

Я использую jQuery Datepicker. Когда страница отправляется, если значение не введено, мне нужно вставить NULL в таблицу SQL. Вместо этого он в настоящее время вставляет 1900-01-01 00:00:00.000. Можно ли передать NULL в мою вставку с помощью jQuery Datepicker?

В SQL таблицы, которая была создана лет назад, тип данных является datetime и Разрешает Null установлено значение Да. Ничего не задано в стандартном значении или привязке.

Кроме того, просто отметить, что я делаю проверку ошибок и принимая во внимание возможность SQL-инъекции. Просто, чтобы попытаться предотвратить кластер здесь и держать код простым/легким для чтения, я не включаю его здесь.

PHP

$sDate = $_POST['sDatepicker'];
$eDate = (!empty($_POST['eDatepicker'])) ? $_POST['eDatepicker'] : NULL;

$insert = "INSERT INTO table1 (sdate, edate)
            VALUES ('$sDate', '$eDate')";
// Connection, error checking, execution, etc. using ODBC

Я также пробовал:

if (empty($_POST['eDatepicker'])) {
    $insert = "INSERT INTO table1 (sdate, edate)
                VALUES ('$sDate', NULL)";
} else {
    $eDate = $_POST['eDatepicker'];
    $insert = "INSERT INTO table1 (sdate, edate)
                VALUES ('$sDate', '$eDate')";
}
// Connection, execution, etc.

Я также попытался добавить скрытое поле и использовать его, если (empty($_POST['eDatepicker'])) поэтому datepicker даже не используется, если он пуст. Даже когда я это делаю, он все равно вставляет те же самые 1900-01-01 00:00:00.000.

HTML/JQuery

<div>
    <label>Start Date:</label>
    <input type="text" id="sDatepicker" name="sDatepicker" class="required" />
</div>
<div>
    <label>End Date:</label>
    <input type="text" id="eDatepicker" name="eDatepicker" />
    <input type="submit" value="Submit" id="btnSubmit" />
</div>

$('#sDatepicker, #eDatepicker').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "mm/dd/yyyy"
});

Я также попытался расщепить datepicker в jQuery и добавить defaultDate: null но это тоже не сработало.

  • 0
    Вы пытались использовать NULL в качестве значения по умолчанию в вашей БД?
  • 0
    Ничто не установлено в Значении по умолчанию или Связывании. Извините, если вы не это имеете в виду, у меня минимальный опыт работы с БД. Если нет, то где я найду это?
Показать ещё 8 комментариев
Теги:
datepicker

1 ответ

1
Лучший ответ

вы можете просто проверить, является ли значение поля "1900-01-01 00: 00: 00.000" и вставить нуль.

if ($_POST['eDatepicker']=="1900-01-01 00:00:00.000") {
    $insert = "INSERT INTO table1 (sdate, edate)
                VALUES ('$sDate', NULL)";
}

Обновление: поскольку это значение не исходит от datepicker. Вы должны проверить, установлено ли значение по умолчанию в db.

Быстрое исправление заключается в том, чтобы добавить дату по умолчанию к datepicker и проверить, что в php

$('#sDatepicker, #eDatepicker').datepicker({
    changeMonth: true,
    changeYear: true,
    dateFormat: "mm/dd/yyyy"
    defaultDate:"01/01/1900" //some date
});

а также

if ($_POST['eDatepicker']=="01/01/1900") {
        $insert = "INSERT INTO table1 (sdate, edate)
                    VALUES ('$sDate', NULL)";  //insert null
    }
  • 0
    Похоже, это должно работать, но тот же результат. На самом деле он публикует "", который я тоже пытался проверить в операторе if, но, опять же, тот же результат.
  • 0
    @ Брайан обновленный ответ

Ещё вопросы

Сообщество Overcoder
Наверх
Меню