$_POST pour date

Eléphant du PHP | 81 Messages

04 févr. 2011, 12:19

Bonjour

dans mon formulaire tous fonctionne sauf les dates.
quand je saisie une date dans imput type=texte, elle ne s'enregistre pas dans ma base de données mais affiche 00-00-0000.

merci

ViPHP
ViPHP | 3607 Messages

04 févr. 2011, 13:02

Bonjour,

Quelle est la structure de la base de donnée?
Qu'entres-tu dans ton champs? Quels traitements effectues-tu sur les données du formulaire?
Un peu de code?

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 févr. 2011, 15:03

salut,

j'ajouterais que le problème est dû au fait que le format de date que tu rentre ne convient à mysql et donc il met la valeur par défaut.

pour info => les types dates dans la doc de mysql ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 81 Messages

04 févr. 2011, 15:34

Ma base de donnée est sous Table: client "InnoDB free: 4096 kB"
le champs est en date
dans le champs du formulaire je tapes 01-01-2010
mon formulaire

<label>stage Voyage</label> <input type="checkbox" name="xguest_stageV" id="xguest_stageV" value="oui"/>
				&nbsp;&nbsp;&nbsp;
				<label for xguest_dateStV>Date</label> <input type="date" name="xguest_dateStV" id="xguest_dateStV" value=""/>

et mo fichier add
<?php

$xguest_nom =$_POST['xguest_nom'];
$xguest_prenom =$_POST['xguest_prenom'];
$insc =$_POST['xguest_inscription'];
$xguest_adresse =$_POST['xguest_adresse'];
$xguest_ville =$_POST['xguest_ville'];
$xguest_cp =$_POST['xguest_cp'];
$xguest_tel =$_POST['xguest_tel'];
$xguest_mobil =$_POST['xguest_mobil'];
$xguest_email =$_POST['xguest_email'];
$xguest_site =$_POST['xguest_site'];
// -------------------------------------------------------------STAGES et date de stage
$stN =$_POST['xguest_stageN'];
$xguest_dateStN =$_POST['xguest_dateStN'];

$stV =$_POST['xguest_stageV'];
$xguest_dateStv =$_POST['xguest_dateStV'];

$stD =$_POST['xguest_stageD'];
$xguest_dateStD =$_POST['xguest_dateStD'];

$stW =$_POST['xguest_stageW'];
$xguest_dateStW =$_post['xguest_dateStW'];

$stNb =$_POST['xguest_stageNb'];
$xguest_dateStNb =$_POST['xguest_dateStNb'];
// ------------------------------------------------------------- Infos
$inf1 =$_POST['xguest_info1'];
$inf2 =$_POST['xguest_info2'];
// ------------------------------------------------------------- Appel et date
$xguest_dateA =$_POST['xguest_dateAppel'];
$rap =$_POST['xguest_rap'];
$rep =$_POST['xguest_rep'];
$absc =$_POST['xguest_absc'];
$fauxN=$_POST['xguest_fauxN'];


       // connexion à la base  // sélection de la base  
	   

require_once'mysql_connect.php';

    
    // on écrit la requête sql
    $sql = "INSERT INTO client (id_xguest,xguest_nom,xguest_prenom,xguest_inscription,xguest_adresse,xguest_ville,xguest_cp,
																									xguest_tel,xguest_mobil,xguest_email,xguest_site,
													xguest_stageN,xguest_dateStN,
													xguest_stageV,xguest_dateStV,
													xguest_stageD,xguest_dateStD,
													xguest_stageW,xguest_dateStW,
													xguest_stageNb,xguest_dateStNb,
													xguest_info1,xguest_info2,
													xguest_dateAppel,xguest_rap,xguest_rep,xguest_absc,xguest_fauxN) 
				VALUES('','$xguest_nom','$xguest_prenom','$insc','$xguest_adresse','$xguest_ville','$xguest_cp','$xguest_tel','$xguest_mobil','$xguest_email','$xguest_site',
									'$stN','$xguest_dateStN',
									'$stV','$xguest_dateStv',
									'$stD','$xguest_dateStD',
									'$stW','$xguest_dateStW',
									'$stNb','$xguest_dateStNb',
									'$inf1','$inf2',
									'$xguest_dateA','$rap','$rep','$absc','$fauxN')";
    
    // on insère les informations du formulaire dans la table
    mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
		mysql_close();  // on ferme la connexion
    // on affiche le résultat 
    echo '<strong><center><h1><br/><br/><br/><br/><br/><br/><br/><br/><br/>BRAVO TU ES LE MEILLEUR TOUT ES OK.</h1></center></strong>';

    

?> 


Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 févr. 2011, 15:38

oui oui j'ai raison ;)

a tu lu la doc ? http://dev.mysql.com/doc/refman/5.0/fr/datetime.html

la réponse a ta question est clairement énoncée dans les 10 premières lignes :)


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 81 Messages

04 févr. 2011, 15:43

en rentrant la date dans se sens 2001-01-10 cela fonctionne
je vais mettre un label pour indiquer la bonne saisie de la date .

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 févr. 2011, 16:09

heu oui mais encore faut il que tu vérifie que le format de date est bon parce que sinon c'est le drame (imagine que l'on entre 1095/78/45 ?)

c'est pour cela que l'on vois souvent des listes déroulantes pour simplifier la chose après tu en fait ce que tu veut et tu n'est pas tributaire du format indiqué par le gars devant sont PC. (il te suffira de tester si les valeurs rentrée sont des entiers avec des valeurs qui vont bien 1 - 31 pour les jours, 1 -12 pour les mois et > l'année en cours pour l'année :)).

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 81 Messages

04 févr. 2011, 17:05

super ton idée de liste déroulante , mais moi pas connaitre comment faire
sinon je ferai un regex pour la date.

merci

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

04 févr. 2011, 17:08

heu <select> <option> .... => http://fr.selfhtml.org/html/formulaires ... htm#listes

sinon oui pour la regexp par contre faut quand même vérifier les bornes des nombres entrées parce qu'il y a des chances que 2248/78/75 vérifie ton masque :mrgreen:

@+
Il en faut peu pour être heureux ......

ViPHP
AB
ViPHP | 5818 Messages

04 févr. 2011, 17:35

Pour vérifier la validité d'une date en php y'a une fonction dédiée :checkdate() qui tient compte des années bissextiles.

Y'a aussi un équivalent javascript http://phpjs.org/functions/checkdate:366