Как отправить HTML выбранную дату на PostgreSQL в запросе - PullRequest
0 голосов
/ 04 апреля 2020

Мне нужна небольшая помощь в этом, я пытался отправить выбранные даты моих 2 в запросе на PostgreSQL, чтобы я мог установить диапазон дат (между), дело в том, что я надеваю не знаю, правильно ли я делаю, пользователь устанавливает дату и проверяет isset ($ _ POST ['date1]), затем я делаю это

if (isset($_POST['date1'])) {
    $var_fecha2 = $_POST['date'];
        if ($var_fecha2 ==0) { //this since can be empty and for some reason if it is my var gets 0, but as you can see its covered
            $fecha2_bool = true;
        }else {
            $fecha2_bool = false;
            $opt = 1;
        }
}

После этого у меня есть условия, но главное вот что:

and sp.fec_grab between to_date('$var_fecha1','dd/mm/yyyy') and to_date('$var_fecha2','dd/mm/yyyy')

При вводе даты HTML дата отправляется в виде dmY, но в качестве строки, я думаю, to_date в запросе устанавливает переменную как дату, также я проверил столбец в PostgreSQL и это как 'dmY' Спасибо!

1 Ответ

0 голосов
/ 04 апреля 2020

Рассмотрим следующий код. В нем могут быть ошибки, поскольку я его не проверял, но общая идея такова:

// cheackout "ternary operator", it's a shorter syntax for if/else
$from = isset($_POST['from']) ? date($_POST['from']) : false;
$to = isset($_POST['to']) ? date($_POST['to']) : false;

if (!$from) {
  // using die() as example, respond with better error to your request
  die("cannot query without a from date");
}

// validate from date
// - replace '/' with your expected input date separator in explode()
// - check the order of the elements in checkdate() to match your expected date inputs
$from = explode('/', $from);
if (count($from) != 3 || !checkdate($from[0], $from[1], $from[2]) {
  die("invalid from date");
}

// validate to date (only if present)
if ($to !== false) {
  $to = explode('/', $to);
  if (count($to) != 3 || !checkdate($to[0], $to[1], $to[2]) {
    die("invalid to date");
  }
}

// Ready to query
if (!$to) {
  // query: ...and sp.fec_grab > '$from'
} else {
  // query: ...and sp.fec_grab between '$from' and '$to'
}

Полезные ссылки

...