Page 1 sur 1

récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 21:29
par Maroua Mima
Bonjour,
Je suis entrain de créer un formulaire d'inscription et je voudrais récupérer la date de naissance de l'utilisateur
Mais lorsque je fais la requête de l'insertion dans ma BDD, ça insère toujours une valeur vide, alors qqn aurait une idée prk ça marche pas ?
Merci d'avance.

Code : Tout sélectionner

<input type="date" name=="date_naissance" id="date_naissance" required value="<?php echo date('Y-m-d', strtotime(date('Y-m-d')));?>"/>

Code : Tout sélectionner

$date_naissance =$_POST['date_naissance']);

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 21:30
par xTG
Quel est le type de champs de ta table ?
Quelle est ta requête ?

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 21:51
par Maroua Mima
Le type de champs de la date dans la base de donnée c'est un string
La requete c'est une requete d'insertion

Code : Tout sélectionner

$req= $bdd->prepare('insert into personne_inscrite values( :id,:nom, :prenom, :autre_nom, :email, :password,:date_naissance, :pays_naissance, :ville_naissance, :adresse,:sexe,:situation,:type, :code_postale, :telephone, :date_creation)'); $req->execute(array( 'id' => $numero_identite, 'nom' => $nom, 'autre_nom' => $nom_patronyme, 'prenom' => $prenom, 'email' => $email, 'password' => $password, 'date_naissance' => $date_naissance, 'pays_naissance' => $pays_naissance, 'ville_naissance' => $lieu_naissance, 'adresse' => $adresse, 'sexe' => $sexe, 'situation' => $situation_familiale, 'type' => $type, 'code_postale' => $code_postal, 'telephone' => $telephone, 'date_creation' => $date_creation )) or die(print_r($bdd->errorInfo())); echo 'utilisateur enregistré !';

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 22:03
par xTG
Si l'ordre des champs de la table est bien correct et que la variable est bien remplie je vois pas ce qui pourrait pas aller.
Puisque du coup le SGBD ne fait aucun traitement si ton champs est de type String.

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 22:29
par Maroua Mima
J'ai pas bien compris, est-ce qu'il a fallu utiliser un type date dans la BDD ou un type string ?

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 22:33
par Maroua Mima
Si l'ordre des champs de la table est bien correct et que la variable est bien remplie je vois pas ce qui pourrait pas aller.
Puisque du coup le SGBD ne fait aucun traitement si ton champs est de type String.

J'ai pas bien compris, est-ce qu'il a fallu utiliser un type date dans la BDD ou un type string ?

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 23:01
par moogli
Salut,

Merci de ne pas doubler tes messages pour n'apporter aucune précision.

Sans le tester ton code html m'indique que le champs date n'as pas de nom et que par conséquence l'utilisation de $date_naissance =$_POST['date_naissance']); doit retourner une erreur de type notice (undefined index date_naissance).
Ceci est vérifiable dans le log serveur ou en activant l'affichage des erreurs (avec niveau de rapport d'erreur fixé a E _ALL, c'est indispensable pour le développement).
Tu peux aisément le vérifier en ajoutant un var_dump($_POST); au début de ton script de validation du formulaire.

Pourquoi je pense cela ?
A cause du double égale dans le nom du champ.

Code : Tout sélectionner

<input type="date" name=="date_naissance" id="date_naissance" required value="<?php echo date('Y-m-d', strtotime(date('Y-m-d')));?>"/>
Je t'invite aussi a réfléchir à la pertinence du code qui te permet de mettre la valeur par défaut du champ.
Celui ci peux largement être remplacé par un seul appel a la fonction date le strtotime et le date en paramètres étant totalement inutile (vu qu'au final tu passe en paramètre l'instant présent date n'a pas besoin de second paramètre, comme tu le fait pour le second date).

Quand a ta question sur le type de champ dans la base, effectivement utiliser un champ de type date est préférable a un varchar tu pourras ainsi réaliser des comparaison ou des calculs en SQL directement.

@+

Re: récupération de la date d'un input type="date"

Posté : 04 sept. 2013, 23:16
par Maroua Mima
Salut,

Merci de ne pas doubler tes messages pour n'apporter aucune précision.

Sans le tester ton code html m'indique que le champs date n'as pas de nom et que par conséquence l'utilisation de $date_naissance =$_POST['date_naissance']); doit retourner une erreur de type notice (undefined index date_naissance).
Ceci est vérifiable dans le log serveur ou en activant l'affichage des erreurs (avec niveau de rapport d'erreur fixé a E _ALL, c'est indispensable pour le développement).
Tu peux aisément le vérifier en ajoutant un var_dump($_POST); au début de ton script de validation du formulaire.

Pourquoi je pense cela ?
A cause du double égale dans le nom du champ.

Code : Tout sélectionner

<input type="date" name=="date_naissance" id="date_naissance" required value="<?php echo date('Y-m-d', strtotime(date('Y-m-d')));?>"/>
Je t'invite aussi a réfléchir à la pertinence du code qui te permet de mettre la valeur par défaut du champ.
Celui ci peux largement être remplacé par un seul appel a la fonction date le strtotime et le date en paramètres étant totalement inutile (vu qu'au final tu passe en paramètre l'instant présent date n'a pas besoin de second paramètre, comme tu le fait pour le second date).

Quand a ta question sur le type de champ dans la base, effectivement utiliser un champ de type date est préférable a un varchar tu pourras ainsi réaliser des comparaison ou des calculs en SQL directement.

@+
Merci bcp, le problème est résolu. Le truc c'est que j'ai pas fait attention au double =.
Sinon, merci pour les autres informations ☺

Re: récupération de la date d'un input type="date"

Posté : 05 sept. 2013, 10:29
par moogli
Modération :
Si ta question est résolue, pense à l'indiquer pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.
Tu peux réaliser cette opération toi-même en cliquant sur le bouton vert "Mettre le sujet en tant que Résolu" situé en haut de la page à côté du titre du sujet.