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


eltharin
Réponse acceptée

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']));

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

raoul
Auteur

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

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
Auteur

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

raoul
Auteur

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 ?