pichpoich
Messages postés26Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention29 janvier 2009 29 janv. 2009 à 18:40
Salut Armenak,
Disons que le plus d'une classe par rapport à la fonction, c'est:
- au lieu de vérifier la date par une fonction et de la récupérer dans une variable, puis de la passer en argument dans une autre fonction, tout se fait à l'intérieur de la classe.
- ça va avoir l'air un peu égoïste, mais je développe ça pour une application bien précise, qui va faire appel à une base de données, et je trouve (c'est perso) super plus pratique de manipuler une bdd à l'intérieur d'une classes qu'avec des fonctions.
Mais... je ne suis pas suffisamment calé pour t'expliquer pourquoi c'est plus pratique en peu de lignes.
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 29 janv. 2009 à 18:13
Heu, je vais certainement en faire bondir certains, mais quel est le plus (sauf l'exercice de style) par rapport à la simple fonction précédente?
pichpoich
Messages postés26Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention29 janvier 2009 29 janv. 2009 à 18:04
J'ai modifié la façon d'appeler le calendrier. Pour ça, j'ai créer une classe agenda qui possède deux fonction:
-la fonction agenda qui récupère la date passée par méthode get et le cas échéant prend la date du jour.
-la fonction affichage qui affiche le calendrier.
On l'affiche en procédant de la manière suivante:
$calendrier = new agenda;
$calendrier->affichage();
A noter que les liens (lignes 58, 61, 66, 72, 116 et 135) pointent vers l'url index.php?date=jj-mm-yyyy ce qui peut se modifier suivant vos besoins.
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 21:56
@kohntark
j'ai passé la soirée sur le manuel, tu as raison sur tout...
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 17:47
Tu ne mors pas au moins!!!
Désolé d'enfoncer les portes ouvertes de certains.
J'ai pas les 5 langues sous la main, mais j'en ai 3.
function trad_date($date_americaine,$lang)
//YYYYmmdd
{
$annee=substr($date_americaine,0,4);
$mois=substr($date_americaine,4,2);
$jour=substr($date_americaine,6,2);
switch($lang){
case 'fr':
$trad = array('janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre');
$mois= $trad[$mois-1];
return $jour.' '.$mois.' '.$annee;
break;
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 27 janv. 2009 à 17:01
Salut,
Grrrr :o)
Tout le monde avait compris mais je ne suis vraiment pas fan de cette méthode. Pourquoi réinventer une fonction native de php ?
C'est plus long, donc plus lourd, en terme de fichier comme en terme de traitement.
Concernant le "multi langues" c'est encore pire, tu es obliger de réécrire tous les mois, les jours, avec tous les risques d'erreurs que cela comporte, sans compter la spécificité des dates / heures propres à certains pays.
J'aimerai bien voir comment tu écris en 5 langues différentes :p
le mardi 27 janvier 2009 à 17:10
Cordialement,
Kohntark-
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 13:36
oups
$mois= $trad[$mois-1];
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 12:19
c'est vrai que si je l'écrivais comme ça ce serait plus élégant, même si ça fonctionne pareil
$trad = array('janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
$mois= $trad[$mois];
La discussion atteint son but : l'ébullition des neurones...
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 11:53
Tu as raison, je suis un peu vieux jeu...
pichpoich
Messages postés26Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention29 janvier 2009 27 janv. 2009 à 11:37
Salut armenak,
je ne me suis pas encore occupé de la mise en page, je le ferai très bientôt, histoire de le faire proprement avec un fichier css, les styles dans les balises html ne sont plus au goût du jour.
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 11:10
Pour la mise en page, j'aurai ajouté quelques align sinon c'est lu différemment sur IE et Ffox:
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 27 janv. 2009 à 10:53
C'est évidemment plus propre...
switch ($mois) {
case 01:
$mois='janvier';
break;
case 02:
$mois='février';
break;
case 03:
$mois='mars';
break;
case 04:
$mois='avril';
break;
case 05:
$mois='mai';
break;
case 06:
$mois='juin';
break;
case 07:
$mois='juillet';
break;
case 08;
$mois='août';
break;
case 09:
$mois='septembre';
break;
case 10:
$mois='octobre';
break;
case 11:
$mois='novembre';
break;
case 12:
$mois='décembre';
break;
}
La dernière version mise à jour fonctionne très bien chez moi en localhost, mais personnellement je pense qu'une petite fonction comme celle initiée ci-dessus permettrait de maîtriser plus efficacement les différentes syntaxes de date.
divx78
Messages postés115Date d'inscriptiondimanche 11 mars 2007StatutMembreDernière intervention21 mars 2009 26 janv. 2009 à 23:28
Salut,
J'utiliserai plutot un switch que sa :
if($mois=="01") $mois='janvier';
if($mois=='02') $mois='février';
if($mois=='03') $mois='mars';
if($mois=='04') $mois='avril';
if($mois=='05') $mois='mai';
if($mois=='06') $mois='juin';
if($mois=='07') $mois='juillet';
if($mois=='08') $mois='août';
if($mois=='09') $mois='septembre';
if($mois=='10') $mois='octobre';
if($mois=='11') $mois='novembre';
if($mois=='12') $mois='décembre';
les if en bataille pas trés propre si je pe me permettre.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 26 janv. 2009 à 19:09
Il n'y a pas des dizaines d'OS non plus :o) On couvre sans doute 98% de l'existant avec cette syntaxe.
Et puis justement, même dans un même langage une date peut se présenter différemment et strftime est bien plus pratique à mettre en oeuvre (on peut très bien imaginer un tableau regroupant le formatage des dates suivant la langue et/ou le type de formatage)
Mais bon, c'est aussi une question de préférence personnelle.
Kohntark-
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 26 janv. 2009 à 18:32
Ben c'est pour ça que je me casse moins la tête avec un fichier de traduction que j'ai fait une fois et que je copie colle. Et comme la syntaxe d'une date diffère d'une langue à l'autre, mon fichier est un peu plus lourd, mais je sais où je vais. Ok, ça va en faire bondir quelques uns ici, je sais...
@pichpoich
C'est effectivement mieux sans le boutons radio.
kohntark
Messages postés3705Date d'inscriptionlundi 5 juillet 2004StatutMembreDernière intervention27 avril 201230 26 janv. 2009 à 16:40
Salut,
@Armenak :
A mon avis il faut conserver setlocale, c'est bien plus simple, plus court, et ça permet de traduire sans se prendre la tête !! :o)
Par contre ça ne fonctionne pas sous windows car il faudrait l'écrire comme ça :
setlocale(LC_TIME, 'fr_Fr', 'french');
setlocale dépend de l'OS sur lequel est installé le serveur, il faut peut être ajouter encore des noms pour les autres OS (ici linux / windows)
@pichpoich
Pense à mettre à jour :o)
Cordialement,
bj33
Messages postés145Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention 1 mai 2012 26 janv. 2009 à 12:20
Ce qui permettrait aussi de traduire le calendrier dans toutes les langues.
cs_armenak
Messages postés58Date d'inscriptionvendredi 29 août 2003StatutMembreDernière intervention25 octobre 2010 26 janv. 2009 à 10:56
Effectivement, l'affichage n'est pas génial, mais bon, tout ça peut s'arranger. Les boutons radio sont un peu lourdingues, le suffit.
pichpoich
Messages postés26Date d'inscriptionlundi 5 janvier 2004StatutMembreDernière intervention29 janvier 2009 23 janv. 2009 à 15:12
Salut coucou,
tu as raison, pour l'instant, on ne peut pas faire grand chose avec cette source à part afficher une date dans le mois.
En fait cette fonction va me servir pour afficher un évènement à une date donnée.
Cela dit, pour l'affichage html, rien n'empêche d'ôter les balises <html>, , et </html> pour afficher le calendrier dans une page à l'endroit ou on veut en appelant la fonction au moment voulu.
Pour l'utilisation, on peut mettre uns lien ou une balise input pour chaque jour en posant deux nouvelles variables lignes 79 et 85:
$chaine=$compte_jour.'-'.$mois.'-'.$annee;
$url=urlencode($chaine);
echo '[index.php?date='.$url.' '.$compte_jour.']';
ou pour la balise input:
echo''.$compte_jour;
à la place de echo $compte_jour;
Bon, peut-être n'est-ce pas assez clair, de toute manière, je bosse sur cette source vu que j'en ai besoin, je posterai le résultat final après adaptation.
coucou747
Messages postés12303Date d'inscriptionmardi 10 février 2004StatutMembreDernière intervention30 juillet 201244 23 janv. 2009 à 01:46
salut
ton code html est inutilisable :
# <html>
#
ton calendrier doit s'afficher SEUL sur une page, ce qui nous empeche de l'inclure dans un formulaire, donc de saisir une date.
un calendrier peut servir a deux choses :
selectionner une date
afficher des evenements
le tien n'est pas assez parametrable pour faire une seule de ces deux choses.
29 janv. 2009 à 18:40
Disons que le plus d'une classe par rapport à la fonction, c'est:
- au lieu de vérifier la date par une fonction et de la récupérer dans une variable, puis de la passer en argument dans une autre fonction, tout se fait à l'intérieur de la classe.
- ça va avoir l'air un peu égoïste, mais je développe ça pour une application bien précise, qui va faire appel à une base de données, et je trouve (c'est perso) super plus pratique de manipuler une bdd à l'intérieur d'une classes qu'avec des fonctions.
Mais... je ne suis pas suffisamment calé pour t'expliquer pourquoi c'est plus pratique en peu de lignes.
29 janv. 2009 à 18:13
29 janv. 2009 à 18:04
-la fonction agenda qui récupère la date passée par méthode get et le cas échéant prend la date du jour.
-la fonction affichage qui affiche le calendrier.
On l'affiche en procédant de la manière suivante:
$calendrier = new agenda;
$calendrier->affichage();
A noter que les liens (lignes 58, 61, 66, 72, 116 et 135) pointent vers l'url index.php?date=jj-mm-yyyy ce qui peut se modifier suivant vos besoins.
27 janv. 2009 à 21:56
j'ai passé la soirée sur le manuel, tu as raison sur tout...
27 janv. 2009 à 17:47
Désolé d'enfoncer les portes ouvertes de certains.
J'ai pas les 5 langues sous la main, mais j'en ai 3.
function trad_date($date_americaine,$lang)
//YYYYmmdd
{
$annee=substr($date_americaine,0,4);
$mois=substr($date_americaine,4,2);
$jour=substr($date_americaine,6,2);
switch($lang){
case 'fr':
$trad = array('janvier','février','mars','avril','mai','juin','juillet','aout','septembre','octobre','novembre','décembre');
$mois= $trad[$mois-1];
return $jour.' '.$mois.' '.$annee;
break;
case 'en':
$trad = array('January','Febuary','March','April','May','June','July','August','September','October','November','December');
$mois= $trad[$mois-1];
return $mois.' '.$jour.', '. $annee;
break;
case 'de':
$trad = array('Januar','Febuar','März','April','Mai','Juni','Juli','August','September','Oktober','November','Dezember');
$mois= $trad[$mois-1];
return $jour.". ".$mois." ". $annee;
break;
}
27 janv. 2009 à 17:01
Grrrr :o)
Tout le monde avait compris mais je ne suis vraiment pas fan de cette méthode. Pourquoi réinventer une fonction native de php ?
C'est plus long, donc plus lourd, en terme de fichier comme en terme de traitement.
Concernant le "multi langues" c'est encore pire, tu es obliger de réécrire tous les mois, les jours, avec tous les risques d'erreurs que cela comporte, sans compter la spécificité des dates / heures propres à certains pays.
J'aimerai bien voir comment tu écris en 5 langues différentes :p
le mardi 27 janvier 2009 à 17:10
Cordialement,
Kohntark-
27 janv. 2009 à 13:36
$mois= $trad[$mois-1];
27 janv. 2009 à 12:19
$trad = array('janvier','février','mars','avril','mai','juin','juillet','août','septembre','octobre','novembre','décembre');
$mois= $trad[$mois];
La discussion atteint son but : l'ébullition des neurones...
27 janv. 2009 à 11:53
27 janv. 2009 à 11:37
je ne me suis pas encore occupé de la mise en page, je le ferai très bientôt, histoire de le faire proprement avec un fichier css, les styles dans les balises html ne sont plus au goût du jour.
27 janv. 2009 à 11:10
<td colspan="2" align="left">
<?php echo '[index.php?date='.date( '.htmlentities(strftime("%B %Y",mktime(0, 0, 0, $mois-1, $jour, $annee))).']'; ?>
</td>
<td colspan="2" align="left">
<?php echo '[index.php?date=01-01-'.($annee-1).' '.($annee-1).']'; ?>
</td>
<td colspan="3" align="center">
<?php echo htmlentities(strftime("%B %Y",mktime(0,0,0,$mois,$jour,$annee))); ?>
</td>
<td colspan="3" align="center">
<?php echo $annee; ?>
</td>
<td colspan="2" align="right">
<?php echo '[index.php?date=01-01-'.($annee+1).' '.($annee+1).']'; ?>
</td>
<td colspan="2" align="right">
<?php echo '[index.php?date='.date( '.htmlentities(strftime("%B %Y",mktime(0, 0, 0, $mois+1, $jour, $annee))).']'; ?>
</td>
27 janv. 2009 à 10:53
switch ($mois) {
case 01:
$mois='janvier';
break;
case 02:
$mois='février';
break;
case 03:
$mois='mars';
break;
case 04:
$mois='avril';
break;
case 05:
$mois='mai';
break;
case 06:
$mois='juin';
break;
case 07:
$mois='juillet';
break;
case 08;
$mois='août';
break;
case 09:
$mois='septembre';
break;
case 10:
$mois='octobre';
break;
case 11:
$mois='novembre';
break;
case 12:
$mois='décembre';
break;
}
La dernière version mise à jour fonctionne très bien chez moi en localhost, mais personnellement je pense qu'une petite fonction comme celle initiée ci-dessus permettrait de maîtriser plus efficacement les différentes syntaxes de date.
26 janv. 2009 à 23:28
J'utiliserai plutot un switch que sa :
if($mois=="01") $mois='janvier';
if($mois=='02') $mois='février';
if($mois=='03') $mois='mars';
if($mois=='04') $mois='avril';
if($mois=='05') $mois='mai';
if($mois=='06') $mois='juin';
if($mois=='07') $mois='juillet';
if($mois=='08') $mois='août';
if($mois=='09') $mois='septembre';
if($mois=='10') $mois='octobre';
if($mois=='11') $mois='novembre';
if($mois=='12') $mois='décembre';
les if en bataille pas trés propre si je pe me permettre.
26 janv. 2009 à 19:09
Et puis justement, même dans un même langage une date peut se présenter différemment et strftime est bien plus pratique à mettre en oeuvre (on peut très bien imaginer un tableau regroupant le formatage des dates suivant la langue et/ou le type de formatage)
Mais bon, c'est aussi une question de préférence personnelle.
Kohntark-
26 janv. 2009 à 18:32
@pichpoich
C'est effectivement mieux sans le boutons radio.
26 janv. 2009 à 16:40
@Armenak :
A mon avis il faut conserver setlocale, c'est bien plus simple, plus court, et ça permet de traduire sans se prendre la tête !! :o)
Par contre ça ne fonctionne pas sous windows car il faudrait l'écrire comme ça :
setlocale(LC_TIME, 'fr_Fr', 'french');
setlocale dépend de l'OS sur lequel est installé le serveur, il faut peut être ajouter encore des noms pour les autres OS (ici linux / windows)
@pichpoich
Pense à mettre à jour :o)
Cordialement,
26 janv. 2009 à 12:20
http://www.micronetwork.de/activecalendar/
excellent, utile, facile à utiliser et à modifier.
26 janv. 2009 à 11:13
if($mois=="01") $mois='janvier';
if($mois=='02') $mois='février';
if($mois=='03') $mois='mars';
if($mois=='04') $mois='avril';
if($mois=='05') $mois='mai';
if($mois=='06') $mois='juin';
if($mois=='07') $mois='juillet';
if($mois=='08') $mois='août';
if($mois=='09') $mois='septembre';
if($mois=='10') $mois='octobre';
if($mois=='11') $mois='novembre';
if($mois=='12') $mois='décembre';
Ce qui permettrait aussi de traduire le calendrier dans toutes les langues.
26 janv. 2009 à 10:56
23 janv. 2009 à 15:12
tu as raison, pour l'instant, on ne peut pas faire grand chose avec cette source à part afficher une date dans le mois.
En fait cette fonction va me servir pour afficher un évènement à une date donnée.
Cela dit, pour l'affichage html, rien n'empêche d'ôter les balises <html>, , et </html> pour afficher le calendrier dans une page à l'endroit ou on veut en appelant la fonction au moment voulu.
Pour l'utilisation, on peut mettre uns lien ou une balise input pour chaque jour en posant deux nouvelles variables lignes 79 et 85:
$chaine=$compte_jour.'-'.$mois.'-'.$annee;
$url=urlencode($chaine);
echo '[index.php?date='.$url.' '.$compte_jour.']';
ou pour la balise input:
echo''.$compte_jour;
à la place de echo $compte_jour;
Bon, peut-être n'est-ce pas assez clair, de toute manière, je bosse sur cette source vu que j'en ai besoin, je posterai le résultat final après adaptation.
23 janv. 2009 à 01:46
ton code html est inutilisable :
# <html>
#
ton calendrier doit s'afficher SEUL sur une page, ce qui nous empeche de l'inclure dans un formulaire, donc de saisir une date.
un calendrier peut servir a deux choses :
selectionner une date
afficher des evenements
le tien n'est pas assez parametrable pour faire une seule de ces deux choses.