PHP как установить дату по умолчанию на новую?

#php #date

#php #Дата

Вопрос:

Я пытался найти, как установить в поле даты текущую дату, если пользователь ее не заполняет, но у меня нет идей, может кто-нибудь мне помочь?? Так, например, если пользователь не выбирает дату, часть даты должна быть сегодняшней датой: 25.09.2020… Вот базовый html:

 <!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width-device-width, intial-scale-1.0">
        <link rel="stylesheet" href="styles/main.css">
        <title>Find rest - add Infection</title>
    </head>
    <nav>
        <a href="index.html">Home</a>
    </nav>
        <body>
        <?php 
        //php invalid.
            if($_SERVER["REQUEST_METHOD"] == "POST"){
                $error_end = "";
                if(!$validEnd){
                    echo "Invalid end date: Please enter date after March 1 2020... rn";
                    $error_end = 'border: red 5px solid';
                }
            }
        ?>
<form>
        <table>
        <tr class="repeat_example">
                    <td>end_date <br><input type="date" name="end_date" id="end_date" value="<?php echoIfExists($_POST,"end_date","")?>" 
                    style="<?php echo $error_end; ?>"></td>
                    <td>date</td>
                    <td>The end_date of the infection if left empty
                        it should default to current date.</td>
                </tr>
        </table>
<br><br>
            
                <label> Write new Form!</label><input type="submit">
            </form>
        </body>
    </div>
</html>
  

И вот мой PHP:

 <?php

//constants
define("endDate", "end_date");

//Helper function
function valueIfExists($array, $key, $default){
    if(array_key_exists($key,$array)){
        return $array[$key];
    } else {
        return $default;
    }
}

if($_SERVER['REQUEST_METHOD'] == "POST"){

    $endTime = new dateTime(valueIfExists($_POST, endDate, "0"));
    $ref = new dateTime("03-01-2020");
    $current = new dateTime(strtotime(date("m-d-Y")));
    
    if($endTime->getTimeStamp() < $ref->getTimeStamp()){
        $isValid = false;
        $validEnd = false;
    }
    if($endTime->getTimeStamp() == "0"){
        $isDefault = true;
    }
}else {
    $isValid = false;
}



//Routing
if($isValid){    
    //process
    include "echo.php";
    exit(); //Emmit echo page if form is valid
} else {
    include "add_infection.php";
    exit(); //Emit the form if form is not valid
}
  

Поэтому, если пользователь не вводит другую дату, я хочу, чтобы форма для части даты отображала текущую дату…

Спасибо,

Комментарии:

1. Возможно, вам следует исправить вашу HTML-разметку. Я не вижу открывающегося <form>

Ответ №1:

Ввод даты HTML5 определяет формат как ISO8601.

Вы можете установить значение по умолчанию для ввода как

 <input type="date" value="2020-09-25">
  

и это получается с помощью следующего PHP-кода:

 date('Y-m-d');
  

итак:

 $date = isset($_POST['end_date']) ? $_POST['end_date'] : date('Y-m-d');
  

Комментарии:

1. Где я могу поставить $Date в значение тега после значения=»<?php echoIfExists($_POST,»end_date»,»»)?>»или в мой файл php в случае, если по умолчанию??

2. Вы так сильно смешиваете HTML и PHP, поэтому я не очень хорошо понимаю, идея состоит в том, чтобы напечатать $_POST[‘end_date’] определено или date('Y-m-d) если нет. Что предполагается сделать echoIfExists($_POST,"end_date","") . Пустая "" строка для печати, если ее нет end_date $_POST ? Если да, замените это "" на date('Y-m-d')

3. «идея состоит в том, чтобы напечатать $_POST[‘end_date’] определяется или дата (‘Y-m-d), если нет». Я думаю, вы не поняли мой вопрос, я не хочу выводить дату на консоль, но я хочу, чтобы она была установлена внутри формы в качестве значения…..

4. да, именно так. Я напишу <input type="date" name="end_date" id="end_date" value="<?= isset($_POST['end_date']) ? $_POST['end_date'] : date('Y-m-d')?>" style="<?= $error_end; ?>" />