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

  FORUM HardWare.fr
  Programmation
  PHP

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

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°264845
xkamui
Their Destiny Was Foreordained
Posté le 08-12-2002 à 19:05:45  profilanswer
 

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
mood
Publicité
Posté le 08-12-2002 à 19:05:45  profilanswer
 

n°264871
Profil sup​primé
Posté le 08-12-2002 à 19:37:44  answer
 

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

n°264881
xkamui
Their Destiny Was Foreordained
Posté le 08-12-2002 à 19:40:39  profilanswer
 

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

n°264884
Profil sup​primé
Posté le 08-12-2002 à 19:42:38  answer
 

merci :)

n°265036
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 00:05:45  profilanswer
 

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

n°265063
Sh@rdar
Ex-PhPéteur
Posté le 09-12-2002 à 08:20:27  profilanswer
 

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
n°265212
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 11:50:47  profilanswer
 

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...

n°265376
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 14:32:16  profilanswer
 

[:yoyoz] Plizzzz

n°265395
Sh@rdar
Ex-PhPéteur
Posté le 09-12-2002 à 14:40:30  profilanswer
 

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
n°265403
Mara's dad
Yes I can !
Posté le 09-12-2002 à 14:45:43  profilanswer
 

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é.
mood
Publicité
Posté le 09-12-2002 à 14:45:43  profilanswer
 

n°265409
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 14:48:50  profilanswer
 

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 à

n°265410
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 14:50:10  profilanswer
 

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...

n°265414
Sh@rdar
Ex-PhPéteur
Posté le 09-12-2002 à 14:53:17  profilanswer
 

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
n°265427
Mara's dad
Yes I can !
Posté le 09-12-2002 à 14:59:09  profilanswer
 

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é.
n°265433
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 15:02:26  profilanswer
 

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 ??...

n°265462
Sh@rdar
Ex-PhPéteur
Posté le 09-12-2002 à 15:10:02  profilanswer
 

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
n°265474
xkamui
Their Destiny Was Foreordained
Posté le 09-12-2002 à 15:16:27  profilanswer
 

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...

n°265493
omega2
Posté le 09-12-2002 à 15:26:47  profilanswer
 

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)

n°265506
ethernal
Chercheur de vérité...
Posté le 09-12-2002 à 15:43:23  profilanswer
 

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...
n°265508
omega2
Posté le 09-12-2002 à 15:46:23  profilanswer
 

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.

n°265510
Mara's dad
Yes I can !
Posté le 09-12-2002 à 15:49:41  profilanswer
 

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é.
n°265519
ethernal
Chercheur de vérité...
Posté le 09-12-2002 à 15:54:03  profilanswer
 

Mara's dad a écrit :

Bon allez on va être gentil !


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


---------------
...oups kernel error...
mood
Publicité
Posté le   profilanswer
 


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

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

 

Sujets relatifs
Code qui permet de virer la barre d'ascenseur à droite inutile. OKCode souce de XP , qui n'en veut !!!
Code excelJ'arrive pas à retrouver le code html d'une couleur...le vieux vert!
Mail + Popup (Blague débile inside)[XHTML] problème entre navigateurs malgré W3C (screens inside)
formulaire de m.. grrr! pkoi ça marche pas? (source inside)[PHP] Ca marche pas... [formulaire inside]
Imprimer correctement du code sourceBien inserer des métas dans ce genre de code?
Plus de sujets relatifs à : Alleger mon code (inside) siouplait...........


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