Passer une date javascript vers une bdd sql [Résolu/Fermé]

Signaler
Messages postés
5
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
2 juillet 2010
-
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
-
Bonjour,


Dans un formulaire, j'ai déclaré un bouton de type button qui éxécute une fonction javascript au click.
Cette fonction récupère la date et l'heure actuelle et l'enregistre dans un champ de type hidden afin d'être conservée dans un tableau POST.

<script language='javascript'>
function enregistrer2()
{
[...] 
//déclaration de la variable pour la date
var valeur4 = new Date(); 
//enregistrement de la valeur dans le hidden
document.getElementById('hidheuredebut').value = valeur4.toLocaleString();  
[...]
}
</script>


L'enregistrement du formulaire provoque la redirection vers un script php ayant pour fonction l'éxécution de requêtes SQL.
Je récupère donc la valeur de ma variable :

$valeur4 = $_POST['HidHeureDebut'] ;


La requête en question est un INSERT :

$sql4 = 'INSERT INTO 'travaux'
   ('Piece', 'Operation', 'Operateur', 'Date_heure_debut', 'Date_heure_fin')
VALUES
   ("'.$valeur3.'", "'.$valeur2.'", "'.$valeur1.'", "'.$valeur4.'", "'.$valeur5.'");';
$result4 = mysql_query($sql4)


Le champ destiné a recevoir la valeur de la date dans la BDD est un datetime.
Mon problème est que losque je consulte les enregistrements, la valeur de la date est égale à : "0000-00-00 00:00:00".
J'ai effactué un echo "$variable4"; à la fin du script php et il m'affiche bien la date et l'heure normale.
Je pense donc que le problème vient de la compatibilité des formats heure et date entre JavaScript et la BDD SQL.
Or, étant assez novice en programmation, je n'ai toujours pas réussi a résoudre ce problème (j'ai tenté de modifier les formats des deux cotés sans résultat).

Si quelqu'un pourrait m'éclairer, ce serait sympa.
Merci d'avance.

1 réponse


il y a pas un truc en JS permettant de définir toi même comment dois s'afficher l'heure??
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 76687 internautes nous ont dit merci ce mois-ci

Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
79
pour ne pas se casser la tete avec les compatibilités d'heure, autant utiliser le timestamp ;)
Messages postés
5
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
2 juillet 2010

Je ne connais pas vraiment le timestamp, je ne sais pas si je serais capable de l'utiliser, mais je sais qu'il renvoie un nombre de secondes s'étant écoulé depuis un certain temps.
Cependant j'aurais besoin en consultant ma base de donnée que l'enregistrement retourné me renvoie une date et une heure directement afin de ne pas avoir de convertion a faire a chaque fois.
S'il existe une requête sql pouvant le faire automatiquement, alors oui sa peut être une solution.
Aussi, j'ai plusieures heures différentes a récupérer dans le même formulaire et sans recharger la page, je n'ai donc trouvé que cette solution.
Je n'ai pas encore essayé, mais je pense que si je patine trop je changerais le datetime de la BDD pour un banal varchar qui me retournerais ma valeur telle quelle :)
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
79
function replace_date($date,$format){
	if(empty($date)){return '-';}
	$jour = date('d', $date);
	$mois = date('m', $date);
	$annee = date('Y', $date);
	$heure = date('H', $date);
	$minute = date('i', $date);
	if($format == 1){
		$date = $jour.'/'.$mois.'/'.$annee;
	}elseif($format == 2){
		$date = $jour.'/'.$mois.'/'.$annee.' - '.$heure.'h'.$minute;
	}
	return $date;
}


voici un fonction de conversion,

des que tu recupere un timestamp (exemple ta variable $ma_date)

tu fais
replace_date($ma_date,1);


1 -> renvoi la date sous le format 29/06/2010
2 -> 29/06/2010 - 16h00

ce petit bout de code sera placé a un seul endroit dans un fichier que tu appelleras sous forme d'un include sur chacune de tes pages

ps : tester des dates en timestamp est beaucoup plus pratique ^^
Messages postés
5
Date d'inscription
mardi 29 juin 2010
Statut
Membre
Dernière intervention
2 juillet 2010

Je viens de mettre ta fonction dans mes fichiers.
Je ne m'attendais pas a cette méthode, mais c'est plutôt efficace.
Je suis en stage, c'est pour cette raison que je préférais me casser un peu la tête, mais arrivant a son terme, je devais tout de même trouver une solution ;)
Donc merci a toi pour ton aide et a charge de revanche (même si je doute pouvoir t'aider grandement dans ce domaine :p)
Messages postés
699
Date d'inscription
mercredi 8 avril 2009
Statut
Membre
Dernière intervention
4 décembre 2016
79
de rien, si on peut aider ;)