Problème de format d'heure dans ma base de donnée

Par raoul, il y a 8 ans


Bonjour,

Voila je rencontre un petit problème avec mon code. je n'arrive pas à afficher l'heure que je mets dans ma Views. J'ai toujours 00:00:00 dans ma base de donnée.

voilà mon code dans ma views :

<td id="evenement"> <label for="" >Heure :</label> <br> <input align="center" type="time" id='timepicker' name="heureEvenement" value="<?php if(isset($heureEvenement)) { echo $heureEvenement; } ?>" /> </td>

voici le code PHP que je mets en place pour que çà marche :

if(isset($_POST['formcreerevenement'])){ $evenement = htmlspecialchars($_POST['evenement']); $date = date('Y-m-d', strtotime($_POST['dateEvenement'])); $heure = time('H:i', strtotime($_POST['heureEvenement'])); $salle = htmlspecialchars($_POST['salleEvenement']); if(!empty($_POST['evenement']) AND !empty($_POST['dateEvenement']) AND !empty($_POST['heureEvenement']) AND !empty($_POST['salleEvenement'])) { $evenementlength = strlen($evenement); $salleEvenementlength = strlen($salle); if($evenementlength <= 255){ if($salleEvenementlength <= 255){ $insertevent = $bdd->prepare("INSERT INTO evenement(nom, date, heure, salle) VALUE(?, ?, ?, ?)"); $insertevent->execute(array($evenement, $date, $heure, $salle)); }else{ $erreur = "Votre salle ne doit pas dépasser 255 caractères !"; } }else{ $erreur = "Votre évènement ne peut pas dépasser 255 caractères !"; } }else { $erreur = "Tous les champs doivent être complétés !"; } } ?>

J'utilise aussi un code Jquery pour le format des dates et des heures :

<script> $('#datepicker').datetimepicker({ dateFormat : 'yy-mm-dd', minDate : 0, maxDate : '2036-11-30' timepicker : false, }); $('#timepicker').datetimepicker({ format: 'H:i' datepicker: false, }); </script>

Dans ma base de donnée, heure est de type : time.
Pouvez-vous me dire là où je me trompe ?

merci

6 réponses

Lartak, il y a 8 ans

Bonjour.
Peut-être qu'en faisant du debug de ton code, tu trouveras d'où vient le problème.

raoul, il y a 8 ans

bonjor, je ne sais pas faire du débug, pouvez-vous me dire comment je dois faire ?

Lartak, il y a 8 ans

Par exemple :

if(isset($_POST['formcreerevenement'])) { $evenement = htmlspecialchars($_POST['evenement']); $date = date('Y-m-d', strtotime($_POST['dateEvenement'])); var_dump($_POST['heureEvenement']); // 1er debug pour voir ce que tu reçois exactement $heure = time('H:i', strtotime($_POST['heureEvenement'])); var_dump($heure); // second debug pour vérifier si ta manipulation est correcte, puis pour stopper le code restant : die(); /* ou */ exit(); // etc ... }
raoul, il y a 8 ans

ah, merci, je vais faire çà, et voire ce que je reçois

raoul, il y a 8 ans

alors, j'ai fait ce que vous m'avez dit et j'ai fait :

var_dump($_POST['heureEvenement']);

et je reçois : string(5) "23:01"

$heure = time('H:i', strtotime($_POST['heureEvenement'])); var_dump($heure);

et je reçois : int(1503325825), Pouvez-vous me dire à quoi corresponds ce chiffre, et dans ma base de donnée çà se transforme en : 838:59:59, que dois-je faire ?

eltharin, il y a 8 ans

Bonjour,
Ce n'est pas parce que tu veux une heure qu'il faut utiliser la fonction time,
la fonction time ne prend pas de paramètre et te retourne le timestamp actuel, rien d'autre.

Pour avoir l'heure d'une date, c'est la fonction date :

$heure = date('H:i', strtotime($_POST['heureEvenement']));