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 12/05/2011, 09h25   #1
Membre habitué
 
Avatar de Milyshyn76
 
Inscription : novembre 2007
Messages : 363
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : novembre 2007
Messages : 363
Points : 101
Points : 101
Envoyer un message via MSN à Milyshyn76 Envoyer un message via Yahoo à Milyshyn76
Par défaut Insertion d'une date avec une requête MySQL

Bonjour à tous,

Après de fructueuses recherches, je baisse les bras ...

La syntaxe ci-dessous ne fonctionne qu'à moitié :
Code :
1
2
3
$str_DateOp = date($_POST['txt_Date'],'yyyy-mm-dd');
	echo ($str_dateOp);
	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'")';
La valeur $str_DateOp du champs OC_Date ne s'insère pas.

Dans la table T_OpeCom, le champs OC_Date est de format Date.

Merci à tous ...
__________________
Mon TWITTER : Emy___==> Qui m'aime me suive sur TWITTER
Milyshyn76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 10h11   #2
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Bonjour, que contient $_POST['txt_Date'] ?

Qu'affiche echo ($str_dateOp) ?
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 10h14   #3
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
La fonction PHP date() ne sert pas à ça et ne s'utilise de toute façon pas comme ça (consulte la documentation).

Pour convertir ta date au format mysql, utilise la fonction mysql STR_TO_DATE().
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/05/2011, 11h40   #4
Modérateur
 
Avatar de Benjamin Delespierre
 
Benjamin Delespierre
Développeur Web
Inscription : février 2010
Messages : 2 984
Détails du profil
Informations personnelles :
Nom : Benjamin Delespierre
Âge : 24
Localisation : France

Informations professionnelles :
Activité : Développeur Web
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : février 2010
Messages : 2 984
Points : 5 016
Points : 5 016
Salut

Ton problème se situe ici:
Code :
$str_DateOp = date($_POST['txt_Date'],'yyyy-mm-dd');
Ce code est faux pour deux raison:
- je pense que $_POST['txt_date'] contient une date dans un format du style d/m/y h:i:s et non un timestamp
- la syntaxe correcte pour date est date($format, $timestamp)

Pour convertir une date en timestamp, il faut par exemple utiliser strtotime:
Code :
1
2
3
$date = "10 September 2010";
$time = strtotime($date);
echo date('d/m/Y', $time);
__________________
A la recherche d'un framework MVC facile a prendre en main ? Essayez Axiom
Nouveau: la référence d'Axiom est disponible sur GitHub (je la peaufine en ce moment même).

Un problème correctement identifié est à moitié résolu, évitez de poster l'intégralité de votre code avec pour seule explication "ça ne marche pas...".
Pour identifier correctement vos problèmes PHP, utilisez la gestion des erreurs et xdebug.

Les boutons et existent, servez-vous en
Benjamin Delespierre est déconnecté   Envoyer un message privé Réponse avec citation 11
Vieux 13/05/2011, 16h02   #5
Membre habitué
 
Avatar de Milyshyn76
 
Inscription : novembre 2007
Messages : 363
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : novembre 2007
Messages : 363
Points : 101
Points : 101
Envoyer un message via MSN à Milyshyn76 Envoyer un message via Yahoo à Milyshyn76
Citation:
Envoyé par Nheo_ Voir le message
Bonjour, que contient $_POST['txt_Date'] ?

Qu'affiche echo ($str_dateOp) ?
Bonjour,

... affiche la date correctement
__________________
Mon TWITTER : Emy___==> Qui m'aime me suive sur TWITTER
Milyshyn76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h13   #6
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par Milyshyn76 Voir le message
Bonjour,

... affiche la date correctement
C'est à dire ? Donne un exemple d'exécution et montre le résultat du echo.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h20   #7
Membre habitué
 
Avatar de Milyshyn76
 
Inscription : novembre 2007
Messages : 363
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : novembre 2007
Messages : 363
Points : 101
Points : 101
Envoyer un message via MSN à Milyshyn76 Envoyer un message via Yahoo à Milyshyn76
Citation:
Envoyé par Benjamin Delespierre Voir le message
Salut

Ton problème se situe ici:
Code :
$str_DateOp = date($_POST['txt_Date'],'yyyy-mm-dd');
Ce code est faux pour deux raison:
- je pense que $_POST['txt_date'] contient une date dans un format du style d/m/y h:i:s et non un timestamp
- la syntaxe correcte pour date est date($format, $timestamp)

Pour convertir une date en timestamp, il faut par exemple utiliser strtotime:
Code :
1
2
3
$date = "10 September 2010";
$time = strtotime($date);
echo date('d/m/Y', $time);
Merci Benjamin,
Contrairement à certains, tu m'a très bien aidé.

Voici ce que j'ai fais :

Code :
1
2
3
$str_DateOp = (date("Y-m-d", strtotime($_POST['txt_Date'])));
	//echo ($str_dateOp);
	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'",'.   $_POST['cmb_ChargeOp'].')';
ça fonctionne, lorsque je rentre, admettons, 12/09/2011.
Le résultat affiche :

2011-12-09

En revanche, ça ne marche pas à certaines date ça me donne une valeur par défaut : 1970-01-01

Ta syntaxe exact ne m'insère pas ma date par contre.

Code :
1
2
$date = "10 September 2010";
$time = strtotime($date);
Merci de ton aide ....
__________________
Mon TWITTER : Emy___==> Qui m'aime me suive sur TWITTER
Milyshyn76 est déconnecté   Envoyer un message privé Réponse avec citation 01
Vieux 13/05/2011, 16h22   #8
Membre habitué
 
Avatar de Milyshyn76
 
Inscription : novembre 2007
Messages : 363
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : novembre 2007
Messages : 363
Points : 101
Points : 101
Envoyer un message via MSN à Milyshyn76 Envoyer un message via Yahoo à Milyshyn76
Citation:
Envoyé par Nheo_ Voir le message
C'est à dire ? Donne un exemple d'exécution et montre le résultat du echo.
Par exemple si je tape 12/09/2011 ça m'affiche 2011-12-09
__________________
Mon TWITTER : Emy___==> Qui m'aime me suive sur TWITTER
Milyshyn76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h29   #9
Modérateur
 
Avatar de sabotage
 
Homme Vincent
Inscription : juillet 2005
Messages : 14 929
Détails du profil
Informations personnelles :
Nom : Homme Vincent

Informations forums :
Inscription : juillet 2005
Messages : 14 929
Points : 16 381
Points : 16 381
J'insiste mais la façon simple d'inserer est d'utiliser STR_TO_DATE()
sabotage est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h32   #10
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Citation:
En revanche, ça ne marche pas à certaines date ça me donne une valeur par défaut : 1970-01-01
Peux-tu donner un exemple de date posant pb ?
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/05/2011, 16h42   #11
Membre éprouvé
 
Avatar de Nheo_
 
Homme
Étudiant
Inscription : avril 2011
Messages : 317
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : avril 2011
Messages : 317
Points : 405
Points : 405
Citation:
Envoyé par sabotage Voir le message
J'insiste mais la façon simple d'inserer est d'utiliser STR_TO_DATE()
+1, tu devrais suivre ses conseils

Citation:
Envoyé par Milyshyn76 Voir le message
Par exemple si je tape 12/09/2011 ça m'affiche 2011-12-09
Si tu as une date correct à l'affichage, je ne vois pas pourquoi l'insertion marche pas ...

Essaye de faire un insertion avec une valeur directement : 2000-02-02 par exemple.
Nheo_ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 09h11   #12
Membre habitué
 
Avatar de Milyshyn76
 
Inscription : novembre 2007
Messages : 363
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : novembre 2007
Messages : 363
Points : 101
Points : 101
Envoyer un message via MSN à Milyshyn76 Envoyer un message via Yahoo à Milyshyn76
Bonjour à tous,

voilà pour commencer, je fais tout un test de date à inserer :

Si je saisie 12/06/2011, dans la table s'insère 2011-12-06 (Donc on peut en conclure que le mois et le jour sont confondus).

Parce que si j'insère le 14/06/2011, j'ai une date par défaut.
C'est ben un soucis entre le jour et le mois (Sachant qu'il n'y a pas de 14 ième mois dans l'année)

Si je ne saisie rien, alors dans la table s'insère la date 1970-01-01 par défaut j'imagine.

Mon code d'origine est le suivant :
Code :
1
2
3
$str_DateOp = (date("Y-m-d", strtotime($_POST['txt_Date'])));
	//echo ($str_dateOp);
	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'",'.   $_POST['cmb_ChargeOp'].')';
J'utilise strtotime et non STR_TO_DATE ...

Donc avec ce code :

Code :
$str_DateOp = (date("Y-m-d", $_POST['txt_Date']));
l’insertion ne s'effectue pas.

idem si j'utilise cette syntaxe la :
Code :
1
2
3
$str_DateOp = $_POST['txt_Date'];
 
	$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","STR_TO_DATE('.$str_DateOp.')",'.   $_POST['cmb_ChargeOp'].')';
La requête insère 0000-00-00 ...

Pareil pour cette syntaxe :
Code :
1
2
$str_DateOp = (date("Y-m-d", strtotime($_POST['txt_Date'])));
$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","STR_TO_DATE('.$str_DateOp.')",'.   $_POST['cmb_ChargeOp'].')';
Merci à tous !
__________________
Mon TWITTER : Emy___==> Qui m'aime me suive sur TWITTER
Milyshyn76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h57   #13
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Hello,
Je ne vois pas pourquoi, dans ces quelques lignes, jour et mois seraient inversés.
Essaie ceci avec qques dates et colle-nous le résultat stp :

Code :
1
2
3
4
5
echo "_POST['txt_date'] = {$_POST['txt_Date']}<br>" ;
$str_DateOp = date("Y-m-d", strtotime($_POST['txt_Date']));
echo "str_Date = $str_dateOp<br>";
$sql_InsertOpRef = 'INSERT INTO T_OpeCom(OC_Id, OC_Libelle, OC_Date, OC_ChargeDop) VALUES ('.$Lng_IdOp.', "'.$_POST['txt_Libelle'].'","'.$str_DateOp.'",'.   $_POST['cmb_ChargeOp'].')';
echo "sql_InsertOpRef = $sql_InsertOpRef<br>" ;
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2011, 10h59   #14
Expert Confirmé
 
Avatar de Séb.
 
Inscription : mars 2005
Messages : 2 823
Détails du profil
Informations personnelles :
Âge : 34
Localisation : France

Informations professionnelles :
Secteur : High Tech - Opérateur de télécommunications

Informations forums :
Inscription : mars 2005
Messages : 2 823
Points : 3 449
Points : 3 449
Pour les 2 syntaxes suivantes tu as une date en 0000 car il manque des " autour de la date dans la requête.
__________________
Un problème exposé clairement est déjà à moitié résolu
Keep It Smart and Simple
Séb. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/05/2011, 11h50   #15
Membre habitué
 
Avatar de Milyshyn76
 
Inscription : novembre 2007
Messages : 363
Détails du profil
Informations personnelles :
Âge : 24
Localisation : France, Seine Maritime (Haute Normandie)

Informations forums :
Inscription : novembre 2007
Messages : 363
Points : 101
Points : 101
Envoyer un message via MSN à Milyshyn76 Envoyer un message via Yahoo à Milyshyn76
merci de ton aide, j'vais tester de ce pas !
__________________
Mon TWITTER : Emy___==> Qui m'aime me suive sur TWITTER
Milyshyn76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h28.


 
 
 
 
Partenaires

Hébergement Web