Page 1 sur 1

Datepicker insertion base de donnée

Posté : 23 mars 2014, 13:29
par yoann38
Salut bon j'ai regardé mon code et ne vois pas trop ou se situe mon problème, je reçois bien mon formulaire en base de donnée avec tous les champs souhaité sauf le datepicker qui me renvoi 0000-00-00 00:00 (Ma table est enformat DATETIME).

Voiçi mon code:
<?php
 $form = true;
 if(isset($_POST['departement'],$_POST['type'], $_POST['title'], $_POST['description'])){
	 	if(get_magic_quotes_gpc()){
			$departement = stripslashes($_POST['departement']);
			$type = stripslashes($_POST['type']);
			$street = stripslashes($_POST['street']);
			$city = stripslashes($_POST['city']);
			$postcode = stripslashes($_POST['postcode']);
			$title = stripslashes($_POST['title']);
			$website = stripslashes($_POST['website']);
			$sousTitre = stripslashes($_POST['sous-titre']);;
			$description = stripslashes($_POST['description']);
			$price = stripslashes($_POST['price']);
			$email = stripslashes($_POST['email']);
			$phone = stripslashes($_POST['phone']);
			$date_debut_sortie = stripslashes($_POST['date_debut_sortie']);

		}else{
			$departement = $_POST['departement'];
			$type = $_POST['type'];
			$street = $_POST['street'];
			$city = $_POST['city'];
			$postcode = $_POST['postcode'];
			$title = $_POST['title'];
			$website = $_POST['website'];
			$sousTitre = $_POST['sous-titre'];;
			$description = $_POST['description'];
			$price = $_POST['price'];
			$email = $_POST['email'];
			$phone = $_POST['phone'];
			$date_debut_sortie = $_POST['date_debut_sortie'];
		$nom_photo = "{$_SESSION['userid']}-{$_FILES['photo']['name']}";
		
		
		if(mysql_query('INSERT INTO loisirs (id_loisirs, id_departements, id_type_loisirs, photo, titre, sous_titre,  description, phone, date_debut_sortie, email, website, street, postcode, city, price, valide)
						VALUE("", '.$departement.', '.$type.', "'.$nom_photo.'", "'.$title.'", "'.$sousTitre.'","'.$description.'", "'.$phone.'","'.$date_debut_sortie.'", "'.$email.'", "'.$website.'", "'.$street.'", "'.$postcode.'", "'.$city.'", "'.$price.'", 0)')){
 <input type="text" class="datepicker" name="date_debut_sortie">

Re: Datepicker insertion base de donnée

Posté : 23 mars 2014, 13:47
par jojolapine
Bonjour,

Il faut que tu vérifies le format de $date_debut_sortie.
à priori le datepicker formate la date en français... ce qui n'est pas compatible avec le format de la base de donnée.
Il faut donc convertir la date dans le bon format.
Tu peux le faire avec la fonction date_parse_from_format() par exemple.

Bon courage,

Cordialement,

Re: Datepicker insertion base de donnée

Posté : 23 mars 2014, 20:09
par yoann38
Bon voilà ce que j'ai fait car j'ai besoin d'une date allée et d'une date de retour avec les champs heure et minute, c'est pourquoi j'utilise le datetimepicker jquery,
G juste un soucis sur le retour en base de donée
Le champ date retourne toujours 0000-00-00 00:00
    	 <?php
 $form = true;
 if(isset($_POST['departement'], $_POST['type'], $_POST['title'],$_POST['description'])){
	 	if(get_magic_quotes_gpc()){
			$departement = stripslashes($_POST['departement']);
			$type = stripslashes($_POST['type']);
			$street = stripslashes($_POST['street']);
			$city = stripslashes($_POST['city']);
			$postcode = stripslashes($_POST['postcode']);
			$title = stripslashes($_POST['title']);
			$website = stripslashes($_POST['website']);
			$sousTitre = stripslashes($_POST['sous-titre']);;
			$description = stripslashes($_POST['description']);
			$price = stripslashes($_POST['price']);
			$email = stripslashes($_POST['email']);
			$phone = stripslashes($_POST['phone']);
			$date_debut_sortie = stripslashes($_POST['date_debut_sortie']);
			$date_fin_sortie = stripslashes($_POST['date_fin_sortie']);
		}else{
			$departement = $_POST['departement'];
			$type = $_POST['type'];
			$street = $_POST['street'];
			$city = $_POST['city'];
			$postcode = $_POST['postcode'];
			$title = $_POST['title'];
			$website = $_POST['website'];
			$sousTitre = $_POST['sous-titre'];;
			$description = $_POST['description'];
			$price = $_POST['price'];
			$email = $_POST['email'];
			$phone = $_POST['phone'];
			$date_debut_sortie = $_POST['date_debut_sortie'];
			$date_fin_sortie = $_POST['date_fin_sortie'];
		}
$nom_photo = "{$_SESSION['userid']}-{$_FILES['photo']['name']}";
		
		
		if(mysql_query('INSERT INTO loisirs (id_loisirs, id_departements, id_type_loisirs, photo, titre, sous_titre, date_debut_sortie, date_fin_sortie, description, phone, email, website, street, postcode, city, price, valide)
						VALUE("", '.$departement.', '.$type.', "'.$nom_photo.'", "'.$title.'", "'.$sousTitre.'", "'.$date_debut_sortie .'", "'.$date_fin_sortie .'",   "'.$description.'", "'.$phone.'", "'.$email.'", "'.$website.'", "'.$street.'", "'.$postcode.'", "'.$city.'", "'.$price.'", 0)')){

Et les champs date en question :
<!-- Date picker debut de la sortie -->
      		 <label for="">Date d'allée</label>
          <input type="text" id="allee" class="datepicker" name="date_debut_sortie">
      		<label for="">Date de retour</label>
      		<input type="text" id="retour" class="datepicker" name="date_fin_sortie">
et un des code js où il y a peut etre une erreur mais laquelle ?
[javascript]jQuery(function($){


$.datepicker.setDefaults( $.datepicker.regional['fr'] );

var datepickers = $('.datepicker').datetimepicker({
minDate : 0,
onSelect: function(date){
var option = this.id == 'allee' ? 'minDate' : 'maxDate';
datepickers.not('#'+this.id).datepicker('option',option,date);
}
})

});[/javascript]


ou celui là
[javascript]/* French initialisation for the jQuery UI date picker plugin. */
/* Written by Keith Wood (kbwood{at}iinet.com.au) and Stéphane Nahmani ([email protected]). */
jQuery(function($){
$.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'],
weekHeader: 'Sm',
dateFormat: 'dd/mm/yy',
firstDay: 1,
isRTL: false,
showMonthAfterYear: false,
yearSuffix: ''};
$.datepicker.setDefaults($.datepicker.regional['fr']);
});[/javascript]

Re: Datepicker insertion base de donnée

Posté : 23 mars 2014, 22:41
par jojolapine
Bonsoir,

Comme indiqué dans mon précédent message, la date que tu renvois via le formulaire est au format français : jj/mm/aaaa hh:mm:ss à priori
La format de date utilisé par Mysql est un format anglais : http://dev.mysql.com/doc/refman/5.0/fr/datetime.html
Donc : aaaa-mm-jj hh:mm:ss

Il faut donc que tu convertisse tes dates du premier format vers le second afin de pouvoir les enregistrer en base de donnée.
Pour cela tu peux utiliser la fonction date_parse_from_format().

Bonne recherche,

Re: Datepicker insertion base de donnée

Posté : 24 mars 2014, 10:38
par yoann38
Merci mais je ne vois pas trop comment et où l'integrer en fait.
peut tu m'éclairer stp ?

Re: Datepicker insertion base de donnée

Posté : 24 mars 2014, 13:31
par yann18
avec la fonction date_format de php tu peux formatter une date en format us(yyyy-mm-dd )
<?php
         $form = true;
 if(isset($_POST['departement'], $_POST['type'], $_POST['title'],$_POST['description'])){
               $departement = $_POST['departement'];
                        $type = $_POST['type'];
                        $street = $_POST['street'];
                        $city = $_POST['city'];
                        $postcode = $_POST['postcode'];
                        $title = $_POST['title'];
                        $website = $_POST['website'];
                        $sousTitre = $_POST['sous-titre'];;
                        $description = $_POST['description'];
                        $price = $_POST['price'];
                        $email = $_POST['email'];
                        $phone = $_POST['phone'];
			
			//création de la date en format fr
			$date_debut_fr = date_create_from_format( 'd-m-Y H:i:s', $_POST['date_debut_sortie'] );
			// formattage de la date en format us
                       $date_debut_sortie =  date_format( $date_debut_fr, 'Y-m-d H:i:s');

			//création de la date en format fr
			$date_fin_fr = date_create_from_format( 'd-m-Y H:i:s', $_POST['date_fin_sortie'] );
			// formattage de la date en format us
                        $date_fin_sortie = date_format( $date_fin_fr, 'Y-m-d H:i:s');

var_dump($_POST); //
}
laisse tomber les fonctions stripslashes() et get_magic_quotes_gpc() car magic_quote n'est plus activé sur les versions récentes de php.