Problème calendrier Datepicker

Résolu/Fermé
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - Modifié par papyclic le 15/03/2015 à 23:28
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 - 17 mars 2015 à 14:13
Bonjour,
J'ai téléchargé la librairie Jquery pour avoir un calendrier pour mes dates.
Avec pas mal de tutos sur le net j'avais l'impression que cela serai facile à mettre en place, mais malheureusement j'ai quelques soucis.
Voici la fonction qui retourne le calendrier en Français j'ai également mis le format que je voulais c'est à dire la date complète
dateFormat: 'DD dd MM yy'
Dimanche 15 Mars 2015

jQuery(function($) {
    $('#date_sortie').datepicker();
 $.datepicker.regional['fr'] = {
  closeText: 'Fermer',
  prevText: '<Préc',
  nextText: 'Suiv>',
  currentText: 'Courant',
  monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
  monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],
  dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
  dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
  dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
  dateFormat: 'DD dd MM yy', firstDay: 1,
  isRTL: false};
 $.datepicker.setDefaults($.datepicker.regional['fr']);
});

Par contre mon soucis c'est que l'INSERT ne ce fait pas dans ma BDD.
Par contre si je met la date à ce format c'est à dire 2015/03/15 tout fonctionne l'INSERT se fait bien dans ma BDD
yy/mm/dd
2015/03/15

Pouvez-vous m'aider sur ce problème s'ils vous plait il y a trop longtemps que je galère.
Juste pour info le champ de type est Date dans ma BDD
En vous remerciant par avance.
A voir également:

6 réponses

jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
16 mars 2015 à 17:22
Bonjour,


Tu laisses ta date comme ça dans ton javascript ... par contre... avant de l'insérer en BDD tu la retransformes en datetime (format anglais).

Par exemple via une petite fonction de ce genre :
function getDateFRtoEN($date){
  $result= substr($date, 6, 4)."-".substr($date, 3, 2)."-".substr($date, 0, 2);
  if($result!='--'){
    return $result;
  }else{
   return NULL;
  }
 }

0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 mars 2015 à 07:15
Bonjour
Merci pour ta fonction.
Malheureusement je n'arrive pas à insérer l'appel à cette fonction dans ma page.
J'ai mis ta fonction dans mon fichier "fonction.php" et ci-dessous le script qui ajoute les dates insérés.
Merci de ton aide.
if(isset($_POST['action'])) {
	
	$id_calendrier				= isset($_REQUEST['id_calendrier']) ? $_REQUEST['id_calendrier'] : '';
    $date_sortie				= isset($_POST['date_sortie']) ? Security::clean($_POST['date_sortie']) : '';
    $lieu_sortie				= isset($_POST['lieu_sortie']) ? Security::clean($_POST['lieu_sortie']) : '';
    $objet_sortie     		= isset($_POST['objet_sortie']) ? Security::clean($_POST['objet_sortie']) : '';	
    $rdv_sortie     			= isset($_POST['rdv_sortie']) ? Security::clean($_POST['rdv_sortie']) : '';
	$id_calendrier_historique	= isset($_POST['id_calendrier_historique']) ? $_POST['id_calendrier_historique'] : '';
	$date_sortie_historique		= isset($_POST['date_sortie_historique']) ? Security::clean($_POST['date_sortie_historique']) : '';
	$lieu_sortie_historique     	= isset($_POST['lieu_sortie_historique']) ? Security::clean($_POST['lieu_sortie_historique']) : '';
	$objet_sortie_historique	= isset($_POST['objet_sortie_historique']) ? Security::clean($_POST['objet_sortie_historique']) : '';
	$rdv_sortie_historique     	= isset($_POST['rdv_sortie_historique']) ? Security::clean($_POST['rdv_sortie_historique']) : '';

	$Calendrier = new Calendrier_class($id_calendrier, $date_sortie, $lieu_sortie, $objet_sortie, $rdv_sortie, $id_calendrier_historique, $date_sortie_historique, $lieu_sortie_historique, $objet_sortie_historique, $rdv_sortie_historique);
	$VerifCalendrier = $Calendrier->VerifCalendrier();
	
	if($VerifCalendrier == 'success') {
		
		if($Calendrier->AjoutCalendrier()) {
			echo '<span class="success-info">L\'enregistrement c\'est bien effectué.</span><br/><br/>';
		} else {
			$erreur[] = "Une erreur est survenue";
		}
		
	} else {
		$erreur[] = $VerifCalendrier;
	}
}
0
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
17 mars 2015 à 08:30
On va y aller par étape. ..
fais un echo de tes variables et donne moi le résultat que je sache sous quelle forme sont tes dates


0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 mars 2015 à 09:17
Bonjour
Alors en fait ma date est formater, dateFormat: 'DD dd MM yy'
soit echo "Mardi 17 Mars 2015"
Car dans le formulaire où l'utilisateur rentrera une date ça sera beaucoup plus lisible que le format "yy-mm-dd.
Mais le hic c'est que ce format n'est pas reconnu par Mysql.
Par contre si je laisse la date formater en US tous se passe bien au niveau de l'INSERT.
Donc la fonction permettra de transformer dans la BDD la date Française en US afin que l'INSERT se passe bien.
Merci
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jordane45 Messages postés 38138 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 17 avril 2024 4 649
17 mars 2015 à 10:03
On va faire la conversion directement dans le Jquery .. en utilisant deux option du datepicker
altFormat et altField
<script type="text/javascript">
jQuery(function($) {
    $('#date_sortie').datepicker();
 $.datepicker.regional['fr'] = {
  closeText: 'Fermer',
  prevText: '<Préc',
  nextText: 'Suiv>',
  currentText: 'Courant',
  monthNames: ['Janvier','Février','Mars','Avril','Mai','Juin','Juillet','Août','Septembre','Octobre','Novembre','Décembre'],
  monthNamesShort: ['Jan','Fév','Mar','Avr','Mai','Jun','Jul','Aoû','Sep','Oct','Nov','Déc'],
  dayNames: ['Dimanche','Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi'],
  dayNamesShort: ['Dim','Lun','Mar','Mer','Jeu','Ven','Sam'],
  dayNamesMin: ['Di','Lu','Ma','Me','Je','Ve','Sa'],
  dateFormat: 'DD dd MM yy', firstDay: 1,
  altFormat: "yy-mm-dd",
  altField: "#alt_date_sortie",
  isRTL: false};
   
 $.datepicker.setDefaults($.datepicker.regional['fr']);
});


 $('#date_sortie').blur(function(){
  console.log($(this).val());
 });
</script>

<input type="text" id="date_sortie">
<input type="hidden" id="alt_date_sortie" name='alt_date_sortie'>



Ce code permet d'afficher une date dans le format "français" dans le champ date_sortie ... et de stocker cette même date dans le format anglais dans le champ (masqué) alt_date_sortie

Donc toi.. dans ton code php .. c'est le champ MASQUE que tu devras utiliser pour stocker les infos en BDD
$date_sortie = isset($_POST['alt_date_sortie'])?$_POST['alt_date_sortie']:'';






0
papyclic Messages postés 446 Date d'inscription mercredi 5 novembre 2014 Statut Membre Dernière intervention 18 octobre 2016 3
17 mars 2015 à 14:13
Bonjour
Merci ça fonctionne c'est génial.
Cordialement.
0