Page 1 sur 1

Modifier champs date en date fr

Posté : 09 sept. 2005, 23:36
par muriel
bonjour à tous,

je voudrais pouvoir modifier la champ date en date fr, directement dans phpmyadmin, car j'ai dedans beaucoup d'enregistrements, alors j'arrive avec la fonction ci dessous à voir que j'arrive à changer le champ date mais je n'arrive pas à faire un UPDATE ou ALTER car je n'ai pas la bonne formule (mon champs date_commande est un champ date):
SELECT DATE_FORMAT('date_commande',"%d-%m-%Y") FROM `commandes_2005` LIMIT 0 ,300;
c'est pour cela que je reviens vers vous, sachant que je suis sur le meilleur forum de php.

@++

ps: cyrano si tu lis ce post, je suis toujours sur le post array_unique mais j'avance, lentement par manque de temps, mais je mets en pratique tous tes bons conseils.....

Posté : 09 sept. 2005, 23:57
par Cyrano
Pourquoi ne pas laisser la date dans la base dans son format par défaut et la traiter pour affichage seulement lors de la récupération ? En fin de compte, tu ne lis jamais la base de donnée et personne n'y a accès... sauf ton script qui peut très bien s'en charger.

Ta requête SELECT te retourne ce que tu veux dans le bon sens ? Si oui, alors tu n'as pas besoin de te casser la tête à modifier les dates dans la base : la requête te la met directement dans un format exploitable directement pour affichage.

Mais j'ai peut-être loupé un chapitre ? :-k

Posté : 10 sept. 2005, 00:04
par iclo
Sans compter que si les dates sont stockées au format AAAA-MM-JJ c'est pour permettre d'en faire un classement chronologique.

Posté : 10 sept. 2005, 13:15
par muriel
Bonjour cyrano et bonjour iclo,

merci pour vos reponses rapide, je voulais mettre mon champs date en date fr pour me simplifier la vie, mais je vais ecouter vos conseils.
Pour l'affichage des dates en fr je n'ai pas de probleme, j'ai trouvé la reponse sur ce forum, le probleme c'est pour faire l'insert, je voudrais que le champs de mon formulaire soit en date fr mais ensuite je ne sais pas comment faire pour qu'il fasse l'insertion au format AAAA-MM-JJ, car pour le moment mon champ date dans le formulaire est en date fr et quand je rentre un enregistrement dans la base le champs date me met 0000-00-00 au lieu de la date que j'ai rentré.

d'avance merci de votre aide,

Posté : 10 sept. 2005, 13:41
par Cyrano
Pour l'insertion, il faut faire une manipulation pour inverser les différentes parties. Un preg_replace() devrait faire l'affaire, exemple:
<?php
$var_date = "10/09/2005";
$date_var = preg_replace("#(\d{2})/(\d{2})/(\d{4})#","$3-$2-$1",$var_date);
echo("<p>Date originale : ". $var_date ."<br />\nDate convertie : ". $date_var ."</p>\n");
?>
Va générer la chose suivante:

Code : Tout sélectionner

<p>Date originale : 10/09/2005<br /> Date convertie : 2005-09-10</p>

Posté : 10 sept. 2005, 15:07
par muriel
bonjour cyrano,

comme d'habitude je suis un peu larguée, j'arrive à faire marcher ta commande en faisant un echo mais je n'arrive pas à trouver la formule pour mettre dans mon INSERT, j'ai essayé de faire comme le code ci-dessous mais dans la BD ça me met toujours 0000-00-00, alors que l'echo lui me met bien la date originale : 09-09-2005 et la date convertie : 2005-09-09:
<?
 $date_var = preg_replace("#(\d{2})-(\d{2})-(\d{4})#","$3-$2-$1",$date_commande); 

include("_connexion.php");


mysql_query ("INSERT INTO commandes_2005 VALUES('','". addslashes($_POST['annonceur']) ."', '". addslashes($_POST['date_commande']) ."')");
   
echo("<p>Date originale : ". $date_commande ."<br />\nDate convertie : ". $date_var ."</p>\n"); 
?>
je pense que je fais une erreur quelques part mais je ne sais pas ou ?
en esperant que tu pourras une nouvelle fois m'aider...

merci pour tous,

Posté : 10 sept. 2005, 15:14
par Cyrano
Tout simple :
<?
$date_var = preg_replace("#(\d{2})-(\d{2})-(\d{4})#","$3-$2-$1",$date_commande);

include("_connexion.php");

mysql_query ("INSERT INTO commandes_2005 VALUES('','". addslashes($_POST['annonceur']) ."', '". addslashes($date_var) ."')");
   
echo("<p>Date originale : ". $date_commande ."<br />\nDate convertie : ". $date_var ."</p>\n");
?>
Au lieu d'utiliser la valeur de $_POST['date_commande'], utilise la date transformée puisque c'est pour ça que tu as mis cette ligne.

Posté : 10 sept. 2005, 15:29
par muriel
merci cyrano, tu es tout simplement genial, ça marche parfaitement.

à tres bientot, pour d'autres questions.

Posté : 10 sept. 2005, 15:33
par Cyrano
...à tres bientot, pour d'autres questions.
Ou des réponses, un jour peut-être pas si lointain que tu penses, tu finiras toi-même par pouvoir en donner aussi :D

Posté : 10 sept. 2005, 19:44
par muriel
je le souhaite vraiment cyrano car je dois bien cela au forum, vu ce que le forum m'a apporté comme aide, j'espere bien un jour pouvoir vous le rendre de cette maniere, bientot je l'espere ....

@++