Enregistrer une date et une heure dans une base de données MySQL

Fermé
Schlaufox Messages postés 2 Date d'inscription jeudi 4 mai 2017 Statut Membre Dernière intervention 4 mai 2017 - Modifié le 4 mai 2017 à 15:38
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 - 4 mai 2017 à 17:31
Bonjour !

Je cherche un moyen de récupérer grâce à un formulaire un nom, un numéro, une date et une heure puis de l'enregistrer dans une base de donnée.

Ma table COURSE ressemble donc à ça :

COURSE :
idCourse INT (clé primaire auto increment)
Date DATETIME
Numero FLOAT


Tout marche très bien pour l'enregistrement du nom et du numéro, mais je n'arrive pas à enregistrer la date et l'heure...

Auriez-vous un coup de main à me donner ? :)
Merci d'avance !
A voir également:

2 réponses

[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
4 mai 2017 à 15:47
Salut Schlaufox,

Assure toi que le format des données DATETIME correspond bien à ce qui est attendu par MySQL :

The DATETIME type is used for values that contain both date and time parts. MySQL retrieves and displays DATETIME values in 'YYYY-MM-DD HH:MM:SS' format. The supported range is '1000-01-01 00:00:00' to '9999-12-31 23:59:59'.

https://dev.mysql.com/doc/refman/5.7/en/datetime.html


Dal
1
Schlaufox Messages postés 2 Date d'inscription jeudi 4 mai 2017 Statut Membre Dernière intervention 4 mai 2017
4 mai 2017 à 17:01
Merci pour ta réponse Dal !

Effectivement mon problème est un problème de format ; déjà je n'arrive pas à récupérer de mon formulaire pour l'enregistrer dans une variable PHP.
Pour l'instant j'ai mis " $date=$_POST["date"]; " mais je sais que ce n'est pas correct. Et donc par la suite l'enregistrement dans la base de données ne marche pas

Pour l'instant dans la page contenant le formulaire j'ai :

<form method="post" action="course_inscrite.php">
<p>
<label for="date">Date et heure de la course : </label><input type="datetime-local" name="Date" id="date"><br>
<input type="reset"/><input type="submit" /><br>
</p> 
</form>


et dans la page "course_inscrite.php"

<?php
//(Connexion à la base correcte)
//---------Attribution des valeurs du formulaire--------------
$date=$_POST["date"]; //là je sais que j'ai faux mais je trouve pas de solution

//----------Remplissage de la table "Course"-------------------
$sqlCourse = "INSERT INTO Course(`Date`) VALUES ('$date')";
mysqli_query($con,$sqlCourse) or die ('<br>Erreur SQL : '.$sqlCourse.'<br />'.mysql_error());
	
//-------------Fermeture de la connexion-------------------
mysqli_close($con);


J'ai donc comme message d'erreur " Notice: Undefined index: date in (...) on line 21" (normal)
Mais je ne parviens pas à trouver comment résoudre ce problème malgré beaucoup d'essais.
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 4 mai 2017 à 17:42
Tu as mis une majuscule dans le contenu de "name" dans ton html (il vaut
Date
), tu devrais donc récupérer ta variable POSTée en respectant cette casse sous Php.

Essaye :

$date=$_POST["Date"];
echo "<p>J'ai récupéré la date $date</p>";
exit;

Dal
0
[Dal] Messages postés 6194 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 11 octobre 2024 1 092
Modifié le 4 mai 2017 à 17:35
avant de tenter d'insérer quoi que soit ayant été récupéré d'un formulaire en le passant à ta base de données, tu devrais aussi valider que c'est bien le type de contenu attendu, sinon ton application peut être vulnérable à des attaques par injection de code SQL.

par exemple en utilisant
date_create_from_format
comme suggéré là :

https://stackoverflow.com/questions/15858685/fast-way-in-php-to-check-if-a-value-is-in-mysql-datetime-format#15858690

ou en utilisant une regexp avec
preg_match
0