web-dev-qa-db-fra.com

Comment définir une valeur pour le type d'entrée «datetime-local»?

J'ai essayé ceci:

<input type="datetime-local"  value="<?php echo $row['Time']; ?>" class="date" name="start" REQUIRED>

Comment puis-je définir la valeur de ce champ de saisie avec les données de la base de données?
Ça ne marche pas !!
Je dois aussi pouvoir éditer.
Ou dois-je utiliser un autre type d'entrée? $ row ['Time']; vient de la base de données!

17
Jbadminton

Je ne sais pas exactement ce que contient $row['Time'] mais cela devrait être comme suit:

Définition

Une date-heure valide telle que définie dans RFC 3339 avec ces qualifications supplémentaires:

  • les lettres littérales T et Z dans la syntaxe date/heure doivent toujours être en majuscules
  • la production date-année complète est plutôt définie comme quatre chiffres ou plus représentant un nombre supérieur à 0

Exemples

  • 1990-12-31T23: 59: 60Z
  • 1996-12-19T16: 39: 57-08: 00

Solution

Pour créer RFC 3339 au format PHP vous pouvez utiliser:

echo date('Y-m-d\TH:i:sP', $row['Time']);

ou d'une autre manière:

echo date("c", strtotime($row['Time']));  

ou si vous préférez un style objectif:

echo (new DateTime($row['Time']))->format('c');

Dans votre code

Ainsi, dans votre code, cela ressemblerait à ceci:

<input type="datetime-local"  value="<?php echo date('Y-m-d\TH:i:sP', $row['Time']); ?>" class="date" name="start" REQUIRED>

ou

<input type="datetime-local"  value="<?php echo date("c", strtotime($row['Time'])); ?>" class="date" name="start" REQUIRED>

Manuel

16
Karol Gasienica

c'est simple, et en travaillant pour moi, convertissez d'abord votre valeur php dans ce format

 <?php  $datetime = new DateTime($timeinout[0]->time_in);   ?>

puis en valeur d'élément d'entrée html utiliser ce 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" /> 

cela définira votre valeur à l'élément d'entrée

7
Mohsin Shoukat

Vous pouvez utiliser

date('Y-m-d\TH:i'); //Example result: '2017-01-01T01:01'

si utiliser\T au lieu de T (ne fonctionne pas)

date('Y-m-dTH:i'); //Example result: '2017-01-01UTC01:01'
4
Ferhat KOÇER

La réponse de Karol Gasienica est une excellente explication, mais en quelque sorte n'a pas fonctionné pour moi, même dans leurs réponses

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

Ce qui a fonctionné pour moi, c'est

$t = $row['Time'];
date('Y-m-d\TH:i:s', strtotime($t)); // This got it perfectly

Mais je l'ai quand même voté en raison de l'explication.

1
ailia
$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);

C'est une partie Html

<input type="datetime-local" name="trip_start_date" id="cal" value="<?php echo $string?>">
0
Rishi