Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1298 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]Champ Date

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[PHP]Champ Date

n°1556926
plop007
Posté le 08-05-2007 à 18:18:11  profilanswer
 

Bonjour à vous :)
 
voila j'ai fait un petit calendrier avec dans ma base de donnée les champ ID,DATE,EVENEMENT.
 
comme chacun sait mysql ne comprends que les dates à l'anglaise or dans ma partie administration du site lorsque les utilisateurs rentrent un évenement ils vont mettre les dates en français. alors je me suis posé la question comment faire que se soit transparent pour eux...
et dans phpmyadmin lorsqu'on veut inséré des donnée date dans un champ on a un petit calendrier qui s'affiche, comment puis je mettre ça en place sur mon site ? ou sinon comment puis je lor de l'envoie du formulaire transformer la date française en anglaise ?
 
merci pour vos réponses :)
 
SeB

mood
Publicité
Posté le 08-05-2007 à 18:18:11  profilanswer
 

n°1556930
AlphaZone
Posté le 08-05-2007 à 18:35:43  profilanswer
 

fonction explode()
après un petit formatage avec sprintf et c'est dans la poche.
 
Tu peux également remplacer la date par le timestamp. Ainsi tu n'utilise plus que la fonction date() au lieu de 2.

n°1556934
plop007
Posté le 08-05-2007 à 18:39:24  profilanswer
 

AlphaZone a écrit :

fonction explode()
après un petit formatage avec sprintf et c'est dans la poche.
 
Tu peux également remplacer la date par le timestamp. Ainsi tu n'utilise plus que la fonction date() au lieu de 2.


 
oula je débute lol, tu peux dévellopé, voici mon formulaire :  

Code :
  1. <form method="post" name="form1" action="<?php echo $editFormAction; ?>">
  2.           <table align="center">
  3.             <tr valign="baseline">
  4.               <td nowrap align="right">DATE:</td>
  5.               <td><input type="text" name="DATE" value="" size="32"></td>
  6.             </tr>
  7.             <tr valign="baseline">
  8.               <td nowrap align="right">DESCRIPTION:</td>
  9.               <td><textarea name="DESCRIPTION" cols="32" rows="3"></textarea></td>
  10.             </tr>
  11.             <tr valign="baseline">
  12.               <td nowrap align="right">REUNION:</td>
  13.               <td><input type="checkbox" name="REUNION" value="" ></td>
  14.             </tr>
  15.             <tr valign="baseline">
  16.               <td nowrap align="right">EVENEMENT:</td>
  17.               <td><input type="checkbox" name="EVENEMENT" value="" ></td>
  18.             </tr>
  19.             <tr valign="baseline">
  20.               <td nowrap align="right">&nbsp;</td>
  21.               <td><input type="submit" value="Insérer l'enregistrement"></td>
  22.             </tr>
  23.           </table>
  24.           <input type="hidden" name="MM_insert" value="form1">
  25.         </form>

n°1557072
leflos5
On est ou on est pas :)
Posté le 08-05-2007 à 23:10:46  profilanswer
 

Oulala, et pourquoi pas une usine à gaz pour allumer une ampoule aussi :o
 
Expression régulière puisque de toutes manières chaque entrée DOIT être filtrée, suffit juste d'utiliser une référence arrière ;)

n°1557087
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 08-05-2007 à 23:38:39  profilanswer
 

moi perso je fais un champ INT(10) qui dontient un mktime($heure, $minute,$secondes,$mois,$jour,annee) ... puis à la lecture, un echo date("d/m/Y H:i:s",$timestamp); suffit.

n°1557102
leflos5
On est ou on est pas :)
Posté le 09-05-2007 à 00:36:45  profilanswer
 

Et pourquoi pas un champ d'un type date :??: S'il contient une date pourquoi ne pas le typé en ce sens?
 
De toutes manières c'est pas le souci du sujet :D

n°1557194
AlphaZone
Posté le 09-05-2007 à 10:14:14  profilanswer
 

leflos5 a écrit :

Et pourquoi pas un champ d'un type date :??: S'il contient une date pourquoi ne pas le typé en ce sens?


Parce qu'un champ date doit être au format US et ça nécessite toujours une manipulation de la chaine.

n°1557221
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2007 à 10:47:24  profilanswer
 

et alors tu as des fonctions mysql très bien faites, genre str_to_date qui font exactement ce que tu demandes:

Code :
  1. SELECT str_to_date( '9-5-2007', '%d-%m-%Y' ) ;


 
Alors biensur pour que cela marche il faut s'assurer que la date saisie et son format sont correctes, mais j'imagine que tu le fais déjà.

n°1557257
plop007
Posté le 09-05-2007 à 11:27:45  profilanswer
 

le problème de faire un champ qui n'est pas date et que tu ne peux pas le requéte par la suite par ordre croissant ou décroissant. je me trompe ?

n°1557267
ZeBix
edit &gt; preview
Posté le 09-05-2007 à 11:36:29  profilanswer
 

Petite remarque en passant : le format MySQL standard (AAAA-MM-JJ HH:MM:SS) pour un champ "date" n'est absolument pas le format US qui est MM-JJ-AAAA ...
 
Ce format MySQL est juste le seul format intelligent de stockage de date en string (à part le timestamp donc) puisqu'elles seront toujours chronologiquement ordonnées.

mood
Publicité
Posté le 09-05-2007 à 11:36:29  profilanswer
 

n°1557269
anapajari
s/travail/glanding on hfr/gs;
Posté le 09-05-2007 à 11:38:20  profilanswer
 

plop007 a écrit :

le problème de faire un champ qui n'est pas date et que tu ne peux pas le requéte par la suite par ordre croissant ou décroissant. je me trompe ?


oui tu te trompes car son int est "triable" aisément.
Par exemple: 20070101 est bien supérieur à 20061231 mais inférieur à 20070509.

 

L'inconvénient c'est que tu peux plus te servir des fonctions natives du sgdb pour la gestion des dates ( date_format, date_add, date_sub, timediff,... par exemple sur mysql)

 
ZeBix a écrit :

Petite remarque en passant : le format MySQL standard (AAAA-MM-JJ HH:MM:SS) pour un champ "date" n'est absolument pas le format US qui est MM-JJ-AAAA ...


Petite remarque en repassant: c'est pas le format "MySQL standard" mais le format standard défini en SQL92

Message cité 1 fois
Message édité par anapajari le 09-05-2007 à 11:40:30
n°1557323
AlphaZone
Posté le 09-05-2007 à 13:15:00  profilanswer
 

anapajari a écrit :

et alors tu as des fonctions mysql très bien faites, genre str_to_date qui font exactement ce que tu demandes:

Code :
  1. SELECT str_to_date( '9-5-2007', '%d-%m-%Y' ) ;



Je ne connaissais pas cette fonction, merki :D
 

anapajari a écrit :

Alors biensur pour que cela marche il faut s'assurer que la date saisie et son format sont correctes, mais j'imagine que tu le fais déjà.


Je suis un peu parano sur les bords, donc oui je m'assure que la date saisi est au bon format ^^

n°1557364
ZeBix
edit &gt; preview
Posté le 09-05-2007 à 14:30:21  profilanswer
 

anapajari a écrit :

Petite remarque en repassant: c'est pas le format "MySQL standard" mais le format standard défini en SQL92


 
Tu as très bien compris ce que je voulais dire, mais précisions pour précisions, il s'agit en vérité du format ISO 8601 ... dont la dernière révision date de 2004 mais qui a été visiblement initié en ... 1988.
 
Valààà comme ça on est biiiiien précis !
 
[:cbrs]

n°1557640
plop007
Posté le 09-05-2007 à 21:16:19  profilanswer
 

HuM :/
je crois que je vais changer de philosophi et si qqun veut bien se donner la peine de m'aider sa serait génial :)
pourquoi pas créer 3 champs formulaire avec des liste déroulante dans chacun de ces 3 champ qui énumererai le jour , moi et année. en suite je prends ces 3 champ et je l'insére au format ISO yyyy-mm-dd dan ma table mysql.
par contre je serai incapable de coder ça tout seul...
 
si qqun veut bien m'aider, mais peut être j'en demande trop :/
 
SeB

n°1557692
rawcut
tw: @_rawcut
Posté le 09-05-2007 à 23:55:52  profilanswer
 

J'ai un truc un peu porc pour çà que j'ai chopé je ne sais ou sur le net.  
 

<?php
 
 // $name : Nom générique des champs de formulaire
 // $fyear/$lyear : Fourchette d'années (optionel)
 // $class : Classe CSS appliquée (optionel)
 
 
  $class = '';
  $fyear='2007';
  $lyear='2015';
  $name = 'nom';
 
 
  $yr=date("Y",strtotime($date_ymd));
  $mo=date("m",strtotime($date_ymd));
  $dy = date("d",strtotime($date_ymd));
   
 // Jour  
   
  $s="<SELECT NAME=\"${name}_d\" class='$class'>\n";  
  $s.="<OPTION VALUE=$dy>$dy</OPTION>\n";
  $sclt="";  
  for ($i=1;$i<=31;$i++)  
  {  
  $i2="0$i";  
  $i2=substr($i2, -2);  
  if ($i2==$dy)  
  $sclt=" SELECTED";  
  else  
  $sclt="";  
  $s.="<OPTION VALUE=\"$i2\"$sclt>$i</OPTION>\n";
  }  
  $s.="</SELECT> / ";  
// Mois  
   
  $s.="<SELECT NAME=\"${name}_m\" class='$class'>\n";  
  $s.="<OPTION VALUE=$mo>$mo</OPTION>\n";
  $sclt="";  
  for ($i=1;$i<=12;$i++)  
  {  
  $i2="0$i";  
  $i2=substr($i2, -2);  
  if ($i2==$mo)  
  $sclt=" SELECTED";  
  else  
  $sclt="";  
  $mon2=date("M", mktime(0, 0, 0, $i, 1, 2001));
  $s.="<OPTION VALUE=\"$i2\"$sclt>$mon2</OPTION>\n";
  }  
  $s.="</SELECT> / ";  
 
 // Année  
   
  $s.="<SELECT NAME=\"${name}_y\" class='$class'>\n";  
  $s.="<OPTION VALUE=$yr>$yr</OPTION>\n";
  $sclt="";  
  for ($i=$fyear;$i<=$lyear;$i++)
  {  
  $i2="$i";  
  if ($i2==$yr)  
  $sclt=" SELECTED";  
  else  
  $sclt="";  
  $s.="<OPTION VALUE=\"$i\"$sclt>$i</OPTION>\n";  
  }  
  $s.="</SELECT>\n";  
    echo"$s";
 
// Pour récuperer vos valeurs du formulaire, ici avec la methode POST
// avec pour nom générique "nom"
 
$nom_y = $_POST['nom_y'];
$nom_m = $_POST['nom_m'];
$nom_d = $_POST['nom_d'];
 
?>


 
Et donc ensuite pour ta requete mysql

Code :
  1. $date_ymd = "{$_POST['nom_y']}-{$_POST['nom_m']}-{$_POST['nom_d']}";


 
M'enfin si qq1 poste qq chose de mieux :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [PHP]Champ Date

 

Sujets relatifs
Comment appeler une page PHP sans iframe ?[PHP] Erreur aléatoire session start
j'ai un problem pour modifier le type d'un champmodification d'un type de champ a partir d'une application..?
Recherche gallerie photos PHP.upload via PHP - telechargement impossible via FTP
récupérer les éléments d'un sortable dans PHPFormatage d'une date en francais déja extraite
[PHP] Variable de session 
Plus de sujets relatifs à : [PHP]Champ Date


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR