NiTrOuS Posted October 25, 2005 Share Posted October 25, 2005 Salut à tous, j'ai un petit probleme en PHP. J'ai une base de données postgres avec une table facture_client. Dans cette table, j'ai un champ date_now de type text. Et dans ce champ, j'aimerais enregistrer la date actuelle. Voici mon code: <?php include('connect.php'); if(@isset($_GET['hiddenField'])) { $date_now = date("d-m-Y"); $query="INSERT INTO facture_client (id_client,id_voiture,date_now,montant_facture_client) VALUES ('$_SESSION[id_client]','$_GET[hiddenField]',$date_now,$prix)"; $result=@pg_exec($cnx,$query); if(!$result) { echo("Erreur, la requête n'a pas pu aboutir"); } else { echo("La commande est passée"); } } ?> Voilà, si j'affiche $date avec un echo, elle s'affiche parfaitement. Par contre, quand je vais voir dans ma base de données, la date s'enregistre de cette facon: -1990 Vous pouvez m'aider svp ? Link to comment Share on other sites More sharing options...
fabien29200 Posted October 25, 2005 Share Posted October 25, 2005 Si ce champ est du type text dans ta base, il faut que tu le convertisses en texte avant de le passer à la base. Link to comment Share on other sites More sharing options...
NiTrOuS Posted October 25, 2005 Author Share Posted October 25, 2005 Et comment peut-on faire cela ? Link to comment Share on other sites More sharing options...
ggbce Posted October 25, 2005 Share Posted October 25, 2005 Lorsque tu fais un echo directement dans ta page de la date et que tu dis qu'elle est ok, à quoi ressemble-t-elle ? Dans une entrée TEXT d'une BD Postgres est-ce qu'il y a des caractères (ex.: -,.!"@£?&*#|\±¢¤¬¦²³¼½) qui ne sont pas valides ? Peut-être que la valeur retourné par date("d-m-Y") contient ces caractères non valides ? Moi j'utilise des champs VARCHAR en MySQL pour les dates. Link to comment Share on other sites More sharing options...
deor Posted October 25, 2005 Share Posted October 25, 2005 Pas du tout, c'est le bug de l'an 2000, c'est tout Bon, sinon, quand j'ai des soucis de ce type, tout simplement, je fais une requête SQL SELECTsur les champs de date depuis un script PHP quelconque, histoire de voir comment ils y sont stockés et je formate de cette manière-là en INSERT. Pour avoir un champ date rempli: fait un INSERT avec la valeur CURRENT_DATE. Certaines bases demandent un TIMESTAMP Unix, aussi, la doc sur Postgres devrait pas mal éclairer ta lanterne. si j'affiche $date avec un echo De quelle $date tu parles? Et puis correctement, ça veut dire quoi? T'aurais un exemple? Sinon, je me rappelle que pour une base (je ne sais plus laquelle), il fallait lui balancer la date sous ce format: "#2005-10-25" . Link to comment Share on other sites More sharing options...
NiTrOuS Posted October 25, 2005 Author Share Posted October 25, 2005 Yes ca marche, j'ai mis mon champ en type DATE et j'ai ajouté la CURENT_DATE et ca marche sans probleme Merci beaucoup Link to comment Share on other sites More sharing options...
seishiro Posted October 26, 2005 Share Posted October 26, 2005 NiTrOuS c'est exactement ce que je voulais te proposer c'est a dire d'utiliser le type DATE pour ton champ. L'avantage est que les manipulation de date et heure sont rendu plus facile de plus tu t'évite des conversion hasardeuse.... Link to comment Share on other sites More sharing options...
xhark Posted October 26, 2005 Share Posted October 26, 2005 ça beugue car si on est le 01/01/2005 : $date_now = "01-01-2005" et toi dans ta base il doit s'enregistrer le tout mais ton champ n'est pas assez grand et du coup tu as que les 5 derniers caractères : "-2005" donc passe ton champ en type date : Même si MySQL essaye d'interpreter les valeurs sous différents formats, il s'attend toujours à ce que l'année soit dans la partie gauche de la valeur. Les dates doivent êtres données sous la forme année-mois-jour (exemple : 98-09-04), au lieu de mois-jour-année ou jour-mois-année qui sont très utilisés ailleurs (comme 09-04-98 ou '04-09-98'). Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.