Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD > PHP & MySQL
PHP & MySQL Forum d'entraide sur les fonctions MySQL avec PHP. Avant de poster -> FAQ MySQL, Cours MySQL et Sources MySQL. Pour les questions concernant le moteur MySQL plutôt que les fonctions PHP, merci d'utiliser le forum MySQL.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 03/11/2011, 14h56   #1
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
Par défaut Date française en format US

Bonjour,

je récupère depuis un formulaire des dates en français et je souhaite les remettre au format SQL (YYYY-mm-dd), afin d'interroger ma base :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
// on récupère les dates du formulaire
$date_depart=mysql_real_escape_string($_POST['date1']);
$date_fin=mysql_real_escape_string($_POST['date3']);
// pour la requête au format US
setlocale (LC_TIME, 'us_US.UTF8');
$date_depart_req = strftime("%Y-%m-%d",strtotime("$date_depart"));
$date_fin_req = strftime("%Y-%m-%d",strtotime("$date_fin"));
//On remet les dates au format français
setlocale (LC_TIME, 'fr_FR.UTF8');
$date_vue_depart = strftime("%A %d %B %Y",strtotime("$date_depart"));
$date_vue_fin = strftime("%A %d %B %Y",strtotime("$date_fin"));
 
	echo '$date_depart :'.$date_depart;
	echo '<br />';
	echo '$date_fin :'.$date_fin;
	echo '<br />';
	echo '$date_depart_req :'.$date_depart_req;
	echo '<br />';
	echo '$date_fin_req :'.$date_fin_req;
	echo '<br />';
	echo '$date_vue_depart :'.$date_vue_depart;
	echo '<br />';
	echo '$date_vue_fin :'.$date_vue_fin;
Voici le résultat (incorrect bien sûr) :
$date_depart :Jeudi 03 Novembre 2011
$date_fin :Mardi 22 Novembre 2011
$date_depart_req :1970-01-01
$date_fin_req :1970-01-01
$date_vue_depart :jeudi 01 janvier 1970
$date_vue_fin :jeudi 01 janvier 1970
Merci !
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 16h05   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Tu peux aussi soumettre tes $date_depart et $date_fin à MySQL et utiliser dans la requête la fonction STR_TO_DATE, à condition toutefois que toutes les dates soient au même format.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 16h54   #3
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
j'ai indiqué :
Code :
1
2
$date_depart_req = STR_TO_DATE('$date_depart', GET_FORMAT(DATE, 'USA'));
$date_fin_req = STR_TO_DATE('$date_fin', GET_FORMAT(DATE, 'USA'));
et voici l'affichage :
Citation:
Call to undefined function STR_TO_DATE()
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 17h25   #4
Modérateur
 
Inscription : septembre 2010
Messages : 7 161
Détails du profil
Informations forums :
Inscription : septembre 2010
Messages : 7 161
Points : 8 530
Points : 8 530
c'est des fonctions SQL pas PHP ...
__________________
http://blog.stealth35.com/
stealth35 est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 03/11/2011, 21h05   #5
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
A la place de :
Code :
1
2
 
$select2 = "SELECT * FROM evenement WHERE date_ev BETWEEN '$date_depart_req' AND '$date_fin_req' AND type_evenement='".mysql_real_escape_string($_POST['evenement1'])."' ORDER BY date_ev ASC"
;

j'ai mis :
Code :
1
2
 
$select2 = "SELECT * FROM evenement WHERE date_ev BETWEEN 'STR_TO_DATE('$date_depart', GET_FORMAT(DATE, 'USA'))' AND 'STR_TO_DATE('$date_fin', GET_FORMAT(DATE, 'USA'))' AND type_evenement='".mysql_real_escape_string($_POST['evenement1'])."' ORDER BY date_ev ASC";
Voici le résultat :
Code :
1
2
3
4
5
6
7
8
9
 
$date_depart :Jeudi 03 Novembre 2011
$date_fin :Dimanche 20 Novembre 2011
$date_depart_req :
$date_fin_req :
$date_vue_depart :jeudi 01 janvier 1970
$date_vue_fin :jeudi 01 janvier 1970
Du : Jeudi 01 Janvier 1970   Au : Jeudi 01 Janvier 1970
Erreur : You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Jeudi 03 Novembre 2011', GET_FORMAT(DATE, 'USA'))' AND 'STR_TO_DATE('Dimanche 20' at line 1
Désolé, je suis un peu long à la détente...
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 09h05   #6
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 11 029
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 11 029
Points : 18 327
Points : 18 327
Envoyer un message via MSN à CinePhil
Tu as mal compris la fonction STR_TO_DATE !
Les arguments sont :
- la chaîne de caractères censée être une date ;
- le format actuel de la chaîne de caractères.

Toi tu as donné en second argument le format que tu souhaites !
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/11/2011, 11h38   #7
Invité régulier
 
Inscription : avril 2007
Messages : 18
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 18
Points : 7
Points : 7
J'utilise ça quand j'en ai besoin :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
function changedateusfr($dateus) 
{ 
$datefr=$dateus{8}.$dateus{9}."-".$dateus{5}.$dateus{6}."-".$dateus{0}.$dateus{1}.$dateus{2}.$dateus{3}; 
return $datefr; 
} 
 
function changedatefrus($datefr) 
{ 
$dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1}; 
return $dateus; 
} 
 
		$datefr=changedateusfr($date);
et inversement.
ticad est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 04/11/2011, 11h49   #8
Membre du Club
 
Avatar de fazpedro
 
Homme
Inscription : août 2009
Messages : 360
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations forums :
Inscription : août 2009
Messages : 360
Points : 64
Points : 64
En fait le problème venait de mon formulaire, car il transmettait une date mais au format 'texte' et non 'date' ! :
Code :
1
2
3
4
5
$date_depart2 = date('Y-m-d', strtotime($date_depart2.' +1 days'));	
		$date_vue_depart = strftime("%A %d %B %Y",strtotime("$date_depart2"));
		$jour_vue = ucwords(strtolower($date_vue_depart));
		echo '<option value="'.$jour_vue.'">'.$jour_vue.'</option>';
et j'ai remplacé par :
Code :
1
2
3
4
5
$date_depart2 = date('Y-m-d', strtotime($date_depart2.' +1 days'));	
		$date_vue_depart = strftime("%A %d %B %Y",strtotime("$date_depart2"));
		$jour_vue = ucwords(strtolower($date_vue_depart));
		echo '<option value="'.$date_depart2.'">'.$jour_vue.'</option>';
et là cela fonctionne avec le code de traitement suivant :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$date_depart=mysql_real_escape_string($_POST['date1']);		// on récupère les dates du formulaire
	$date_fin=mysql_real_escape_string($_POST['date3']);
setlocale (LC_TIME, 'fr_FR.UTF8');										//On remet les dates au format français
$date_vue_depart = strftime("%A %d %B %Y",strtotime("$date_depart"));	// Affichage de la date de départ et de fin en français
$date_vue_fin = strftime("%A %d %B %Y",strtotime("$date_fin"));	// Affichage de la date de départ et de fin en français
echo '<p />';
echo '<br>';
echo '<h3>'.mysql_real_escape_string($_POST['evenement1']).'</h3>';
echo '<br>'.'</br>';
echo 'Du :  '.'<b>'.ucwords(strtolower($date_vue_depart)).'&nbsp;'.'&nbsp;'.'&nbsp;'.'</b>';
echo 'Au : '.'<b>'.ucwords(strtolower($date_vue_fin)).'</b>';
echo '<br>'.'</br>';
$sql = connect_sql();
// on écrit la requête
mysql_query("SET NAMES utf8");
$select2 = "SELECT * FROM evenement WHERE date_ev BETWEEN '$date_depart' AND '$date_fin' AND type_evenement='".mysql_real_escape_string($_POST['evenement1'])."' ORDER BY date_ev ASC";
Désolé du dérangement !
fazpedro est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h09.


 
 
 
 
Partenaires

Hébergement Web