Alleger mon code (inside) siouplait...........

Alleger mon code (inside) siouplait........... - PHP - Programmation

Marsh Posté le 08-12-2002 à 19:05:45    

voilà, j'ai une date stocké dans ma base mysql comme ceci :  

  • champ jour  (0000-00-00)
  • champ heure (00:00:00)


je veux afficher tout ça, je fait donc, mise à par ma requête de récupération de données :  
 

Code :
  1. $mois=array(1=>"Janvier","Février","Mars","Avril","Mai","Juin","Juillet","Août","Septembre","Octobre","Novembre","Décembre" );
  2. $jour=array("Dimanche","Lundi","Mardi","Mercredi","Jeudi","Vendredi","Samedi" );
  3. $d=explode ("-", $tab[1]);
  4. $h=explode (":", $tab[2]);
  5. ".$jour[date ("w", mktime(0,0,0,$d[1],$d[2],$d[0]))]." ".$d[2]." ".$mois[date ("n", mktime(0,0,0,$d[1],$d[2],$d[0]))]." ".$d[0]." à ".$h[0]."h".$h[1].":".$h[2]."


 
à ça m'écrit bien, par exemple, "Lundi 03 Novembre 2002 à 13h15:25"... mais je trouve ça peut-être un peu trop long...
 
vous voyez un moyen d'alléger tout ça ??


Message édité par xkamui le 09-12-2002 à 00:05:25
Reply

Marsh Posté le 08-12-2002 à 19:05:45   

Reply

Marsh Posté le 08-12-2002 à 19:37:44    

tu peu m'expliquer en bref la fonction explode la que t'es la?

Reply

Marsh Posté le 08-12-2002 à 19:40:39    

la fontion explode me permet de récupérer, sur mes champs jour et heure, jes différentes valeurs de l'année, du mois et du jour, pour la date et des heures, des minutes et des secondes pour l'horraire...
 
ensuite, je place ce qui convient dans mon mktime là où il faut pour récupérer ce qui m'interesse... le numéro du jour et du mois correspondant à la date 0000-00-00

Reply

Marsh Posté le 08-12-2002 à 19:42:38    

merci :)

Reply

Marsh Posté le 09-12-2002 à 00:05:45    

[:yoyoz][:yoyoz][:yoyoz]

Reply

Marsh Posté le 09-12-2002 à 08:20:27    

déjà, tu peux éviter le traitement sur l'heure en le faisant directement dans ta requête SQL
 
pour la date en FR c'est plus compliqué, ça dépend aussi de la conf du serveur (set local etc..)
 
DATE_FORMAT(champ_heure,'à %hh%i:%s';) AS champheure


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 09-12-2002 à 11:50:47    

Sh@rdar a écrit :

déjà, tu peux éviter le traitement sur l'heure en le faisant directement dans ta requête SQL
 
pour la date en FR c'est plus compliqué, ça dépend aussi de la conf du serveur (set local etc..)
 
DATE_FORMAT(champ_heure,'à %hh%i:%s';) AS champheure


 
pour l'heure : ok, donc dans ma requête sql, je fait bien :  
SELECT bozo, texte, jour, (DATE_FORMAT('heure', '%Hh%i:%s';) AS heure) from ma_table where bozo like '1';
=> pkoi je met un 'AS heure'... je veux dire que je viens d'aller voir sur nexen.net et je ne vois pas ce 'AS heure'...
=> j'attend une confirmation quand même, merci
 
pour la date en français : si ça peut t'aider, je suis actuellement avec free, donc si tu pouvais m'expliquer, ça m'arrangerias pas mal...

Reply

Marsh Posté le 09-12-2002 à 14:32:16    

[:yoyoz] Plizzzz

Reply

Marsh Posté le 09-12-2002 à 14:40:30    

le AS sert à faire un alias, moi je m'en sert surtout pour tout les champs avec traitement (date, count() etc..) pour être sur du nom du champ en sortie (pas d'erreur possible)
 
si tu veux que ton code soit plus clair, sépare les traitements jour et mois / heure
 
le mois et l'heure sont plus "simple" à récupérer, tu pourras très bien les concaténer ensuite à ta date en français.
 
donne un peu la nouvelle version de ton code, il doit déjà y en avoir  moins


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 09-12-2002 à 14:45:43    

setlocale(LC_TIME, "fr_FR" );  
echo( strftime("%A %d %B %Y à %H:%M:%S" ) );


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 14:45:43   

Reply

Marsh Posté le 09-12-2002 à 14:48:50    

voilà le nouveau code :  
requête :

$query="select type, jour, DATE_FORMAT('heure', '%Hh%i:%s') AS heure, news_".$lang." from v5_news $trinews order by jour desc, heure desc limit $start,$limit";


 
un explode à disparut :

$d=explode ("-", $tab[1]);


 
et la commande d'affichage s'est raccourcie :

".$jour[date ("w", mktime(0,0,0,$d[1],$d[2],$d[0]))]." ".$d[2]." ".$mois[date ("n", mktime(0,0,0,$d[1],$d[2],$d[0]))]." ".$d[0]." à ".$tab[2]."


 
malheureusement, l'affichage aussi :

Lundi 30 Septembre 2002 à

Reply

Marsh Posté le 09-12-2002 à 14:50:10    

Mara's dad a écrit :

setlocale(LC_TIME, "fr_FR" );  
echo( strftime("%A %d %B %Y à %H:%M:%S" ) );
 


 
c'est bien joli tout ça, mais c'est pas la date du jour que je veux mais celle qui correspind à la date qui se trouve dans ma base...
 
et à vrai sire, 2 lignes de codes lachés dans la nature comme ça, c'est pas très parlant...

Reply

Marsh Posté le 09-12-2002 à 14:53:17    

t'abuses là, t'as plus qu'à regarder dans la doc l'utilisation de ces fonctions...
 

Code :
  1. 8.21.35 setlocale
  2. [Notes en ligne] [Exemples]
  3. Change les informations locales
  4. string setlocale (mixed category, string locale)
  5. category est une chaîne ou une constante qui spécifie la catégorie de fonctions qui va être affectée par les informations locales : @itemize @bullet
  6. # LC_ALL : toutes les fonctions ci-dessous
  7. # LC_COLLATE : pour les comparaisons de chaînes (voir strcoll())
  8. # LC_CTYPE : pour la classification de caractères et les conversions, par exemple strtoupper()
  9. # LC_MONETARY : pour localeconv() - (en cours d'implémentation)
  10. # LC_NUMERIC : pour les séparateurs décimaux
  11. # LC_TIME : pour le format des dates et heures date avec strftime()
  12. Si locale est une chaîne vide ("" ), les noms locaux prendront la valeur des variables d'environnement de même nom, ou à partir de "LANG".
  13. Si locale vaut zéro ou "0", la valeur reste inchangée, mais l'état courant est retourné.
  14. setlocale() retourne la valeur courante, ou FALSE si la fonctionnalité n'est pas encore implémentée pour la plate-forme. Une catégorie invalide provoque une alerte.


 

Code :
  1. 8.5.11 strftime
  2. [Notes en ligne] [Exemples]
  3. Formate une date/heure locale avec les options locales.
  4. string strftime (string format, int timestamp )
  5. strftime() retourne la date sous la forme d'une chaîne formatée conformément au format format, en utilisant le timestamp timestamp donné. Si le timestamp est omis, la date actuelle est utilisée. Les mois et jours de la semaine, et toutes les chaînes dépendantes de la langue sont fixées avec la commande setlocale().
  6. Les caractères suivants sont utilisés pour spécifier le format de la date : @itemize @bullet
  7. # %a - nom abrégé du jour de la semaine (local).
  8. # %A - nom complet du jour de la semaine (local).
  9. # %b - nom abrégé du mois (local).
  10. # %B - nom complet du mois (local).
  11. # %c - représentation préférée pour les dates et heures, en local.
  12. # %C - numéro de siècle (l'année, divisée par 100 et arrondie entre 00 et 99)
  13. # %d - jour du mois en numérique (intervalle 01 à 31)
  14. # %D - identique à %m/%d/%y
  15. # %e - numéro du jour du mois. Les chiffres sont précédés d'un espace (de ' 1' à '31')
  16. # %h - identique à %b
  17. # %H - heure de la journée en numérique, et sur 24-heures (intervalle de 00 à 23)
  18. # %I - heure de la journée en numérique, et sur 12- heures (intervalle 01 à 12)
  19. # %j - jour de l'année, en numérique (intervalle 001 à 366)
  20. # %m - mois en numérique (intervalle 1 à 12)
  21. # %M - minute en numérique
  22. # %n - newline character
  23. # %p - soit `am' ou `pm' en fonction de l'heure absolue, ou en fonction des valeurs enregistrées en local.
  24. # %r - l'heure au format a.m. et p.m.
  25. # %R - l'heure au format 24h
  26. # %S - secondes en numérique
  27. # %t - tabulation
  28. # %T - l'heure actuelle (égal à %H:%M:%S)
  29. # %u - le numéro de jour dans la semaine, de 1 à 7. (1 représente Lundi)
  30. # %U - numéro de semaine dans l'année, en considérant le premier dimanche de l'année comme le premier jour de la première semaine.
  31. # %V - le numéro de semaine comme défini dans l'ISO 8601:1988, sous forme décimale, de 01 à 53. La semaine 1 est la première semaine qui a plus de 4 jours dans l'année courante, et dont Lundi est le premier jour.
  32. # %W - numéro de semaine dans l'année, en considérant le premier lundi de l'année comme le premier jour de la première semaine
  33. # %w - jour de la semaine, numérique, avec Dimanche = 0
  34. # %x - format préféré de représentation de la date sans l'heure
  35. # %X - format préféré de représentation de l'heure sans la date
  36. # %y - l'année, numérique, sur deux chiffres (de 00 à 99)
  37. # %Y - l'année, numérique, sur quatre chiffres
  38. # %Z - fuseau horaire, ou nom ou abréviation
  39. # %% - un caractère `%' littéral
  40. Note : Tous les caractères suivants ne sont pas toujours supportés par toutes les librairies C. Dans ce cas, ils ne seront pas supportés par PHP non plus.
  41. Exemple strftime()
  42. <?php
  43.   setlocale ("LC_TIME", "C" );
  44.   print(strftime("%A en Finlandais est " ));
  45.   setlocale ("LC_TIME", "fi" );
  46.   print(strftime("%A, en Français " ));
  47.   setlocale ("LC_TIME", "fr" );
  48.   print(strftime("%A est en Allemand " ));
  49.   setlocale ("LC_TIME", "de" );
  50.   print(strftime("%A.\n" ));
  51. ?>
  52.    
  53. Cet exemple ne fonctionnera que si vous avez les configurations respectives installées sur votre système.
  54. Voir aussi strftime(), setlocale(), mktime() et le groupe de spécifications de strftime().


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 09-12-2002 à 14:59:09    

Sh@rdar a écrit :

t'abuses là, t'as plus qu'à regarder dans la doc l'utilisation de ces fonctions...


 :jap:


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 15:02:26    

Sh@rdar a écrit :

t'abuses là, t'as plus qu'à regarder dans la doc l'utilisation de ces fonctions...
 

Code :
  1. ...




 
tu as la source de ça ??...

Reply

Marsh Posté le 09-12-2002 à 15:10:02    

cliques dans ma signature


---------------
La musique c'est comme la bouffe, tu te souviens du restaurant dans lequel t'as bien mangé 20 ans plus tôt, mais pas du sandwich d'il y a 5 minutes :o - Plugin pour winamp ©Harkonnen : http://harko.free.fr/soft
Reply

Marsh Posté le 09-12-2002 à 15:16:27    

ok ok, alors j'ai essayé quelques trucs :  
$tab[2]="22:15:12";
 
strftime($tab[2], '%Hh%M:%S';) => 22:15:12
strftime('%Hh%M:%S', $tab[2]) => 1h0:22
 
en fait, je n'arrive pas à comprendre comment me servir de strftime avec une date qui n'est pas la date en cour...

Reply

Marsh Posté le 09-12-2002 à 15:26:47    

xkamui a écrit :

ok ok, alors j'ai essayé quelques trucs :  
$tab[2]="22:15:12";
 
strftime($tab[2], '%Hh%M:%S';) => 22:15:12
strftime('%Hh%M:%S', $tab[2]) => 1h0:22
 
en fait, je n'arrive pas à comprendre comment me servir de strftime avec une date qui n'est pas la date en cour...

il prend un toimestamp et pas un string.
Faut que tu transforme ton string en timestamp (te reste plus qu'à regarder la doc dans la catégorie fonction de date/heure)

Reply

Marsh Posté le 09-12-2002 à 15:43:23    

me trompe peut-être mais il y a moyen d'obtenir un timestamp directement de la query non ??
ça dépend comment tu as déclaré le champ jour et heure, si ce sont des timestamp, tu peux les injecter tels quels dans la fonction strftime(date,'format';);
 
sinon, SELECT UNIX_TIMESTAMP('2002-12-08 20:11:23';) as date; (ou un truc du genre)
 
 


---------------
...oups kernel error...
Reply

Marsh Posté le 09-12-2002 à 15:46:23    

ethernal a écrit :

me trompe peut-être mais il y a moyen d'obtenir un timestamp directement de la query non ??
ça dépend comment tu as déclaré le champ jour et heure, si ce sont des timestamp, tu peux les injecter tels quels dans la fonction strftime(date,'format';);
 
sinon, SELECT UNIX_TIMESTAMP('2002-12-08 20:11:23';) as date; (ou un truc du genre)
 
 
 

faut pas faire "from table" pour que la requête soit valide?
Il me semble que j'avais du faire ça une fois.

Reply

Marsh Posté le 09-12-2002 à 15:49:41    

Bon allez on va être gentil !
 
$result = mysql_query( "SELECT unix_timestamp( concat( jour, ' ', heure ) ) as dt from ma_table" );
 
$data = mysql_fetch_object( $result );
 
echo( strftime("%A %d %B %Y à %H:%M:%S", $data->dt ) );


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-12-2002 à 15:54:03    

Mara's dad a écrit :

Bon allez on va être gentil !


 
ça c'est beaucoup plus qu'être gentil :)


---------------
...oups kernel error...
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed