#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; ?>" />