HTML/PHP display current date in html date input - php

I am using a date input type to select a date in my PHP project.
Now everytime I submit the form I want to display the date in the input that has been selected.
This is what I've tried:
<?php $date = $_GET['date']; ?>
<input placeholder="<?php $date ?>" type="date" name="date" id="date" />
But unfortunately this doesn't seem to work.
Anyone has any idea if my goal is possible?
Many thanks in advance!

You can't set a placeholder to <input type="date"/>. See the following information from HTML specification:
The following content attributes must not be specified and do not apply to the element: accept, alt, checked, dirname, formaction, formenctype, formmethod, formnovalidate, formtarget, height, inputmode, maxlength, minlength, multiple, pattern, placeholder, size, src, and width.
https://html.spec.whatwg.org/multipage/forms.html#date-state-%28type=date%29
You have to set the date as value like the following:
<?php $date = $_GET['date']; ?>
<input type="date" name="date" id="date" value="<?= $date ?>" />
An example code:
<input placeholder="2011-01-01" type="date" id="date"/>
<input value="2011-01-01" type="date" id="date"/>

You need to echo that variable, or else nothing will display.
Like this:
//Shorthand
<?=$date ?>
//Not shorthand with print
<?php print $date; ?>
//Not shorthand with echo
<?php echo $date; ?>
People would probably prefer echo instead of print.

You need to use the variable inside value
<?php
$date = isset($_GET['date']) ? $_GET['date'] : '';
?>
<input value="<?php echo $date; ?>" type="date" name="date" id="date" />

You need check the form submission data first, before fetching the data in PHP. Request you to check form data and submission method.
I would like to suggest use $_REQUEST['date'] instead of $_GET.
If this does not work, let us see your form code?

In addition to the answers where the echo was mentioned as solution, you should add the following after $date:
<?php $date = isset($_GET['date']) ? $_GET['date'] : false; ?>
When $date is not found, this will result in not giving a warning message. If you don't, and the $_GET['date'] can't be found you'll get a undefined variable warning message..

Related

Datetime value in the input field

I have a problem echoing the DateTime in the input field with PHP. Now I cannot echo the selected DateTime value in the input field.
Below is my sample coding, I use below method cannot echo selected value:
<?php
$datetime ="2021-06-04 09:13:00";
?>
<input type="datetime-local" class="form-control" id="datetime" name="datetime" value="<?php echo date('Y-m-d\TH:i:s', strtotime($datetime));?> ">
The result shows me like below picture:
This is my online working sample code : https://paiza.io/projects/D-J1uBPeHJuL8jCOhToRQQ
Hope someone can guide me on how to solve this problem. Thanks.
You may follow like this
<?php
// Ajmal Praveen
$datetime ="2021-06-04T09:13:00";
?>
<input type="datetime-local" value="<?php echo $datetime; ?>">
It will work. You need to Include the T, between date and time
PHP To Modify Existing Date time from Database using HTML5 Datetime-local
I written this function mainly to get work the HTML5 Datetime, it can be used with any of script.
<?php
// Code by Ajmal Praveen
$time = date("Y-m-d H:i:s");
// Used Current Date time
$GetDate = date("c", strtotime($time));
list($Date) = explode('+', $GetDate);
$GetDate = $Date;
// Code by Ajmal Praveen
//Output
?>
<input type="datetime-local" value="<?php echo $GetDate; ?>">
If the code is useful Do a Upvote. Thank you.

Filling the field of the datum form automatically with the date of today

I am building a web page for an admin dashboard using PHP and I have the following code, for the input date form and what I want is that if the "startdatum" is empty it must fill today's date in automatically.
<input type="date" class="form-control" placeholder="startdatum" id="startdatum" name="startdatum">
Here's how you can do it:
Btw, the <input type="date"> isn't supported on safari.
This example assumes that the input tag will always be empty when showing up, the user can later change the values.
<?php
$a = date("Y-m-d");
?>
<input type="date" id="startdatum" name="startdatum" value="<?php echo $a ?>">

How to set a value for the input type 'datetime-local'?

I tried this:
<input type="datetime-local" value="<?php echo $row['Time']; ?>" class="date" name="start" REQUIRED>
How can I set the value of this input field with the data from the database?
It doesn't work!!
I need to make it possible to edit too.
Or should I use another type of input?
$row['Time'] is from the database!
I don't know exacly what is in $row['Time'] but it should be as follows:
Definition
A valid date-time as defined in RFC 3339 with these
additional qualifications:
the literal letters T and Z in the date/time syntax must always be uppercase
the date-fullyear production is instead defined as four or more digits representing a number greater than 0
Examples
1990-12-31T23:59:60Z
1996-12-19T16:39:57-08:00
Solution
To create RFC 3339 format in PHP you can use:
echo date('Y-m-d\TH:i:sP', $row['Time']);
or in another way:
echo date("c", strtotime($row['Time']));
or if you prefer objective style:
echo (new DateTime($row['Time']))->format('c');
In your code
So in your code it would look as follows:
<input type="datetime-local" value="<?php echo date('Y-m-d\TH:i:sP', $row['Time']); ?>" class="date" name="start" REQUIRED>
or
<input type="datetime-local" value="<?php echo date("c", strtotime($row['Time'])); ?>" class="date" name="start" REQUIRED>
Manual
More informations can be found here
PHP date Manual
PHP DateTime Manual
When submitting <form> using <input type="datetime-local">
the value format you will get is look like this.
2019-09-06T00:21
To set new value in your input type box.
You must use:
date('Y-m-d\TH:i', strtotime($exampleDate)) //2019-08-18T00:00
Solution Example:
$exampleDate = "2019-08-18 00:00:00"; //sql timestamp
$exampleDate = strtotime($exampleDate); //convert to unix timestamp
$newDate = date('Y-m-d\TH:i', $exampleDate); //format unix to date
or
$exampleDate = "2019-08-18 00:00:00";//sql timestamp
$newDate = date('Y-m-d\TH:i', strtotime($exampleDate));
If you don't use strtotime() you will get an error of
Notice: A non well formed numeric value encountered
**Tested**:
- $exampleDate = 2019-08-18 00:00:00 ;
- //Not Working - output(1970-01-01T01:33:39)
- <?php echo date('Y-m-d\TH:i:s', $exampleDate);?>
- //Not Working - output(1970-01-01T01:33:39+01:00)
- <?php echo date('Y-m-d\TH:i:sP', $exampleDate);?>
- //Not Working - output(2019-08-18T00:00:00+02:00)
- <?php echo date("c", strtotime($exampleDate));?>
- //Not Working - output(2019-09-23T19:36:01+02:00)
- <?php echo (new DateTime($row['Time']))->format('c');?>
- //Working Perfect - output(2019-08-18T00:00:00)
- <?php echo date('Y-m-d\TH:i:s', strtotime($exampleDate));?>
it's simple is that and working for me
first convert your php value to this format
<?php $datetime = new DateTime($timeinout[0]->time_in); ?>
then in value of html input element
use this format
<input type="datetime-local" id="txt_time_in" placeholder="Time In" name="timein" value = "<?php echo $datetime->format('Y-m-d\TH:i:s'); ?>" class="form-control" />
this will set your value to input element
The answer of Karol Gasienica is a great explanation but somehow did not work for me even in their replies
date('Y-m-d\TH:i:s', $row['Time']); //Gives me 1970-01-01 00:00
date('Y-m-d\TH:i:sP', $row['Time']); //Gives me no display
date("c", strtotime($row['Time'])); //No display too
What worked for me is this
$t = $row['Time'];
date('Y-m-d\TH:i:s', strtotime($t)); // This got it perfectly
However I still voted it up becauce of the explanation.
None of the above solutions worked for me as of 2019 using Google Chrome Version 78.0.3904.70 (Official Build) (64-bit)
What worked for me is.
<input type="datetime-local" value="2017-06-13T13:00">
As you can see the format is 2017-06-13T13:00 or Y-m-dTH:i.
As of PHP you can do like.
<input type="datetime-local" value="<?php echo Date('Y-m-d\TH:i',time()) ?>">
Hope this will save someone's time. :)
You can use
date('Y-m-d\TH:i'); //Example result: '2017-01-01T01:01'
if use \T instead of T (not working)
date('Y-m-dTH:i'); //Example result: '2017-01-01UTC01:01'
Better use timezone feature
function getCurrentDateTime(){
$date = new DateTime();
$date->setTimezone(new DateTimeZone('GMT+6')); //Time Zone GMT +6
$dt= $date->format('Y-m-d\TH:i:s');
return $dt;
}
Try that. I get that in Bootstrap 4. (Google Translate: prueba con eso, a mi me sale con eso en Bootstrap 4. )
<input class="form-control" type="datetime-local" name="fecha_e" id="fecha_e" value="
<?php echo date('Y-m-d\TH:i', strtotime($data['fecha_e_tarea'])); ?>" required>
The simple way working for me is
<input type="datetime-local" value="<?= str_replace(' ', 'T', $date) ?>" name="date" required />
Easiest way! Here's how to set a value using php for input field with type="datetime-local"
setting value using php in type="datetime-local"
$date_now_time = date("Y-m-d H:i:s", strtotime('+5 hours'));
$from_for_val= date("Y-m-d\TH:i:s", strtotime($date_now_time));
Below is html form input field with type="datetime-local" and its showing how to set value inside input field
<input type="datetime-local" name="submit_from" value="<?=$from_for_val;?>" >
$tripid=$_REQUEST['tripid'];
$sql="SELECT * FROM tripdetails WHERE trip_id='".$tripid."'";
$trpresult=mysqli_query($connect,$sql);
if(mysqli_num_rows($trpresult)==1)
{
$trpdetails=mysqli_fetch_assoc($trpresult);
}
$trpstartdate = substr_replace($trpdetails['trip_start_date'],T,11,0);
$string = preg_replace('/\s+/', '', $trpstartdate);
This is Html part
<input type="datetime-local" name="trip_start_date" id="cal" value="<?php echo $string?>">
This will convert datetime from database to datetime-local
str_replace(" ","T",substr_replace($string ,"", -3))
Try it:
<input type="datetime-local" value="<?php $row['Time'] = preg_replace("/\s/",'T',$row['Time']); echo $row['Time']?>" class="date" name="start" REQUIRED>
for everybody on 2021 the working format is Y-m-d\TH:i
all other old format is just a hussel.
if you are using carbon library
\Carbon\Carbon::parse($data->chosen_date,$timezone)->format('Y-m-d\TH:i')
after that you can just pass to value like this
if are using ajax or fetch api
document.getElementById('chosen_date').value = data.chosen_date

submit the current date alongside the rest of the form

I'm trying to get the current date to be submitted to the database without the user entering a date.
I currently have the following php code
<?php $currentDate = time(); ?>
And then within the form ive assigned the php code as a value to a hidden input.
<input type="hidden" name="mDateJoined" value="$_POST['currentDate']">
this doesnt seem to work though? where am i going wrong?
You dont have to send the date through the form. In the php code that processes your script, just use the now() function in the query
Like:
INSERT into `users` (`name`,`date`) VALUES('$name',now())
In your database, your date column must be of date type.
OR
date_default_timezone_set('UTC');
$date = date('Y-m-d');
INSERT into `users` (`name`,`date`) VALUES('$name','$date')
If these both statements are on the same page just change:
<input type="hidden" name="mDateJoined" value="<?php echo $currentDate; ?>">
This will print the value of $currentDate in your hidden field .
You need to set current date exactly to hidden field:
<input type="hidden" name="mDateJoined" value="<?php echo time();">
And when handling the submitted data you can do:
$currentDate = (new \DateTime())->setTimestamp((int) $_POST['mDateJoined']);
I guess
<?php $currentDate = time(); ?>
and
<input type="hidden" name="mDateJoined" value="$_POST['currentDate']">
are on same page. Try this instead of above code lines:
<?php $currentDate = date('Y-m-d'); ?>
<input type="hidden" name="mDateJoined" value="<?php echo $currentDate; ?>">
I will prefer do not pass the date as hidden field in the form and use <?php $currentDate = date('Y-m-d'); ?> at the place where you are inserting the date into the database.

posting hidden value

hey there,
i have three pages:
(1) bookingfacilities.php
(2) booking_now.php
(3) successfulbooking.php
and they are link together.
i want to pass data from bookingfacilities.php to successfulbooking.php by using hidden field/value. however, my data doesn't get print out in successfulbooking.php.
here are my codes:
from 'booking_now.php':
$date="$day-$month-$year";
from 'successfulbooking.php';
<input type="hidden" name="date" id="hiddenField" value="<?php print "$date" ?>"/>
i would greatly appreciate your help as my project is due tomorrow :(
You should never assume register_global_variables is turned on. Even if it is, it's deprecated and you should never use it that way.
Refer directly to the $_POST or $_GET variables. Most likely your form is POSTing, so you'd want your code to look something along the lines of this:
<input type="hidden" name="date" id="hiddenField" value="<?php echo $_POST['date'] ?>" />
If this doesn't work for you right away, print out the $_POST or $_GET variable on the page that would have the hidden form field and determine exactly what you want and refer to it.
echo "<pre>";
print_r($_POST);
echo "</pre>";
Maybe a little late to the party but why don't you use sessions to store your data?
bookingfacilities.php
session_start();
$_SESSION['form_date'] = $date;
successfulbooking.php
session_start();
$date = $_SESSION['form_date'];
Nobody will see this.
You have to use $_POST['date'] instead of $date if it's coming from a POST request ($_GET if it's a GET request).
I'm not sure what you just did there, but from what I can tell this is what you're asking for:
bookingfacilities.php
<form action="successfulbooking.php" method="post">
<input type="hidden" name="date" value="<?php echo $date; ?>">
<input type="submit" value="Submit Form">
</form>
successfulbooking.php
<?php
$date = $_POST['date'];
// add code here
?>
Not sure what you want to do with that third page(booking_now.php) too.

Categories