Créer un modèle permettant de calculer l'âge automatiquement - commentaires Créer un modèle permettant de calculer l'âge automatiquement 2018-09-17T11:49:54Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment498193 2018-09-17T11:49:54Z <p>Merci, ça marche parfaitement</p> Créer un modèle permettant de calculer l'âge automatiquement 2018-08-27T22:31:37Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment498005 2018-08-27T22:31:37Z <p>Bonjour,</p> <p>Essaye de retirer le « s » dans le nom du filtre :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code> [(#NAISSANCE|age)]</code></pre></div> <p>Si ça ne fonctionne toujours par alors on va reprendre le code du modèle pour en faire un filtre :<br class="autobr"> Dans le dossier « squelettes » ajoute le fichier (si ce n'est pas déjà le cas) « mes_fonctions.php » :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code>/** * Retourne l'age en toute lettres à partir d'une date donnée. * * @filtre * @link https://contrib.spip.net/Creer-un-modele-permettant-de-calculer-l-age#forum498003 * @example [(#DATE|ages)] * * @param string $uneDate * * @return string */ function age($uneDate) { $test1 = preg_match("/(^[0-9]{2})[-\/]([0-9]{2})[-\/]([0-9]{4}$)/", $uneDate); $test2 = preg_match("/(^[0-9]{4})[-\/]([0-9]{2})[-\/]([0-9]{2}$)/", $uneDate); // Si la date donné est bien dans un des formats acceptés if ($test1 or $test2) { // Formatage de la date ("AAA-MM-JJ") $uneDate = date('Y', strtotime($uneDate)) . '-' . date('m', strtotime($uneDate)) . '-' . date('j', strtotime($uneDate)); $dateNaissance = new DateTime($uneDate); // Création d'un objet 'DateTime" avec la date de naissance $dateActuelle = new DateTime(date('Y-m-d')); // Création d'un objet 'DateTime" avec la date actuelle $age = $dateNaissance->diff($dateActuelle); // Calcule de la différence entre les deux dates // Récupère les chiffres $nb_jours = $age->d; $nb_mois = $age->m; $nb_annees = $age->y; // Gestion du singlulier et du pluriel ($nb_jours > 1) ? $d = "jours" : $d = "jour"; ($nb_annees > 1) ? $y = "ans" : $y = "an"; // Gestion des différent cas d'affichage if ($nb_annees == 0 and $nb_mois == 0) { return("$nb_jours $d"); } elseif ($nb_annees == 0 and $nb_jours == 0) { return("$nb_mois mois"); } elseif ($nb_mois == 0 and $nb_jours == 0) { return("$nb_annees $y"); } elseif ($nb_annees == 0) { return("$nb_mois mois et $nb_jours $d"); } elseif ($nb_mois == 0) { return("$nb_annees $y et $nb_jours $d"); } elseif ($nb_jours == 0) { return("$nb_annees $y et $nb_mois mois"); } return("$nb_annees $y, $nb_mois mois et $nb_jours $d"); } else { return("<b>Format de date invalide : " . $uneDate . "</b>"); } }</code></pre></div> <p>N'oublie pas de mettre la fonction entre les balises PHP : « </p> <pre><code style="color:#000000;"><span style="color:#0000BB;"><?php </span><span style="color:#007700;">[...] </span><span style="color:#0000BB;">?></span></code></pre> <p> »</p> <p>C'est simplement un copier/coller de la fonction du modèle.</p> <p>Une fois que c'est fait tu peux ajouter le filtre à tes squelettes :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#NAISSANCE|age)]</code></pre></div> Créer un modèle permettant de calculer l'âge automatiquement 2018-08-27T20:15:27Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment498003 2018-08-27T20:15:27Z <p>Merci beaucoup pour cette réponse rapide,</p> <p>Effectivement, j'ai crée un article contenant :</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code><age|n=date> </code></pre></div> <p>ça marche parfaitement,</p> <p>en revanche, dans mon squelette lorsque je mets</p> <div class="precode"><pre class="spip_code spip_code_block language-spip" dir="ltr" style="text-align:left;" data-language="spip"><code>[(#NAISSANCE|ages)]</code></pre></div> <p>ma page renvoie un message d'erreur : <br class="autobr"> Filtre ages non défini dans la boucle principale</p> <p>et affiche seulement la valeur #NAISSANCE « 2017-01-01 » sans faire le calcul.</p> <p>une idée du problème<small class="fine d-inline"> </small>?</p> <p>merci en tout cas. je vais chercher de mon coté.</p> Créer un modèle permettant de calculer l'âge automatiquement 2018-08-27T14:26:23Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment497998 2018-08-27T14:26:23Z <p>Bonjour,</p> <p>J'ai écrit cette contribution il y a quelques années. Je ne sais pas si c'est toujours aussi compatible n'ayant pas suivi les évolutions.</p> <p>Sinon, si je me souviens bien, la syntaxe <tt><age|n=date></tt> doit être écrite dans un article, un titre ou autre. C'est l'éditeur qui va traduire la syntaxe. La syntaxe ne doit pas être dans le squelette. Dans les squelettes c'est cette syntaxe :</p> <div class="precode"><pre class="spip_code spip_code_block language-php" dir="ltr" style="text-align:left;" data-language="php"><code> [(#NAISSANCE|ages)]</code></pre></div> <p>Ça devrait fonctionner.</p> <p>La première version est la version qui affiche seulement les années ou quelque chose du genre.</p> <p>La deuxième version (v0.0.2) est une version modifiée à la base pour l'association<br class="autobr"> « <a href='https://files.spip.net/lmcchats.free.fr/lmcchats/' rel='nofollow'>lmcchats</a> » qui affiche l'âge en toute lettre.</p> Créer un modèle permettant de calculer l'âge automatiquement 2018-08-27T12:02:16Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment497997 2018-08-27T12:02:16Z <p>Bonjour,</p> <p>Merci pour cette contribution qui semble faire ce que je souhaite. Malheureusement je suis débutant et j'ai un peu du mal à comprendre comment tout ceci fonctionne.</p> <p>J'ai suivi les instructions en décompressant l'archive V0.0.2 et en copiant les deux fichiers dans squelettes/modeles (que j'ai créé)</p> <p>Je souhaite afficher l'age d'un auteur, dans le fichier «<small class="fine d-inline"> </small>auteur.htlm<small class="fine d-inline"> </small>» de squelettes, j'écris qqpart : <br class="autobr"> J'ai <tt><ages|n=#NAISSANCE></tt> ans</p> <p>idem si j'écris J'ai <tt><ages|n=01-01-1987></tt> ans</p> <p>Je pense que c'est de la que vient mon problème. Je ne comprends pas bien le début du tutoriel :</p> <p>«<small class="fine d-inline"> </small>Concrètement :</p> <p>Note : vous trouverez, à la fin de l'article, le modèle déjà prêt.</p> <p>Nous allons commencer par créer le répertoire «<small class="fine d-inline"> </small>modeles<small class="fine d-inline"> </small>», s'il n'existe pas déjà, ensuite nous allons partir d'une syntaxe, d'une forme d'écriture que Spip reconnaîtra et qui appellera notre modèle.<br class="autobr"> Nous partirons sur la syntaxe suivante :</p> <p> <tt><ages|n=date></tt></p> <p>«<small class="fine d-inline"> </small>date<small class="fine d-inline"> </small>» sera, évidemment, à remplacer par la date «<small class="fine d-inline"> </small>d'anniversaire<small class="fine d-inline"> </small>» souhaité, par exemple, si l'on veut dire :</p> <p> J'utilise Spip depuis ... ans</p> <p>On écrira :</p> <p> J'utilise Spip depuis <tt><ages|n=13-02-2011></tt> ans<br class="autobr"> <small class="fine d-inline"> </small>»</p> <p>Je vous remercie bien par avance.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-09-15T16:04:54Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment483708 2015-09-15T16:04:54Z <p>Salut à tous<br class="autobr"> Merci gdw pour cette seconde version qui répond parfaitement à mes demandes et marche du tonnerre. (Version PHP minimum 5.2 requise.)<br class="autobr"> Merci à tous les autres contributeurs à l'univers du libre : utilisateur final, j'apprécie énormément ce que vous faites.<br class="autobr"> MERCI.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-09-01T07:18:07Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment483486 2015-09-01T07:18:07Z <p>Bonjour gdw96.<br class="autobr"> Oui, mon adresse courriel est parfaitement valable et correspondre par ce biais me semble en effet plus pratique.<br class="autobr"> Je te prépare que quelques exemples d'utilisations très rapidement.<br class="autobr"> Merci.<br class="autobr"> En attendant, un site personnel où j'ai testé ton modèle («<small class="fine d-inline"> </small>Date de naissance<small class="fine d-inline"> </small>» dans la description) et qui pourra servir de base aux exemples que je te proposerai : <a href="http://lmcchats.free.fr/lmcchats/" class="spip_url spip_out auto" rel="nofollow external">http://lmcchats.free.fr/lmcchats/</a><br class="autobr"> Encore merci et à bientôt.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-08-31T10:41:27Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment483475 2015-08-31T10:41:27Z <p>Et bah écoutez, pourquoi pas<small class="fine d-inline"> </small>!?</p> <p>Donnez-moi quelques exemples d'affichages pour être sûr que cela réponde exactement à vos besoins et je vous fais cela<small class="fine d-inline"> </small>! Normalement :-)</p> <p>L'adresse e-mail que vous avez donné pour poser ce commentaire est-elle réelle<small class="fine d-inline"> </small>? (toto1074@******.fr)</p> <p>Si oui, nous communiquerons par e-mail si cela ne vous gêne pas.</p> <p>Bien à vous,</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-08-28T15:06:10Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment483452 2015-08-28T15:06:10Z <p>Bonjour et MERCI<small class="fine d-inline"> </small>!<br class="autobr"> Tout marche bien.<br class="autobr"> Ce script répond à un besoin pour la publication d'annonces d'adoptions d'animaux (associations de sauvetages).<br class="autobr"> Malheureusement, je ne connais pas le php pour l'adapter à cette spécificité : en effet, nous avons des animaux de moins d'un an...<br class="autobr"> Pourrais-tu me modifier le script pour qu'il renvoit l'âge en tenant compte des mois<small class="fine d-inline"> </small>?<br class="autobr"> Et si ce n'est ni trop compliqué ni trop de travail, l'idéal serait que le script fasse la différence entre les mois et les années et soit capable de renvoyer une réponse énoncée seulement en mois lorsque le résultat est inférieur à 1 an et « x » ans et « x » mois pour les autres... J'abuse<small class="fine d-inline"> </small>?<br class="autobr"> J'abuse un peu plus : il y a moyen que le script soit capable d'accorder AN en nombre si le sujet à plus d'1 an<small class="fine d-inline"> </small>?<br class="autobr"> Encore merci.<br class="autobr"> Bonne journée.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-26T18:40:24Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479765 2015-02-26T18:40:24Z <p>Merci<small class="fine d-inline"> </small>;-)</p> <p>J'espère qu'elle fonctionnera, c'est étrange tout de même. Je jongle toujours entre plusieurs systèmes et je n'ai jamais eu de problème avant.</p> <p>PS :<br class="autobr"> Sur Windows, j'utilise surtout le gestionnaire d'archive 7zip.<br class="autobr"> Sous GNU/Linux, j'utilise surtout le gestionnaire d'archive Ark.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-26T18:13:14Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479759 2015-02-26T18:13:14Z <p>@gdw96 : on va éviter de multiplier les archives. Je supprime la première.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-26T18:10:42Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479758 2015-02-26T18:10:42Z <p>Pour info : sur Mac, les deux archives fonctionnent nickel.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-25T18:11:33Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479730 2015-02-25T18:11:33Z <p>Bonjour mailou,</p> <p>J'ai fait une seconde archive (mais j'ai laissé l'ancienne car elle fonctionne pour certaines personnes).</p> <p>J'attends les prochains retours.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-24T15:44:25Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479672 2015-02-24T15:44:25Z <p>Bonjour,<br class="autobr"> Je viens de prendre connaissance de cette contribution et moi aussi je ne réussis pas à décompresser l'archive il est indiqué « Une erreur s'est produite pendant le chargement de l'archive », j'ai essayé plusieurs fois et toujours pareil, dommage j'aimerais tester<br class="autobr"> Merci</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-22T13:38:22Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479615 2015-02-22T13:38:22Z <p>Ah<small class="fine d-inline"> </small>! D'accord<small class="fine d-inline"> </small>!</p> <p>C'est plus clair comme cela. Il est vrai que je ne comprenais absolument pas d'où venait le problème.</p> <p>Après, je suis sous GNU/Linux LinuxMint 17.1 64bits (donc Ubuntu) et je travail d'abords sur ce système.<br class="autobr"> Mon serveur virtuel est sous Ubuntu - Apache 2.2.22 64bits<br class="autobr"> Mon serveur virtuel local est sous Debian 7 64bits</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-22T09:40:49Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479609 2015-02-22T09:40:49Z <p>en système 32 bits, les bornes de dates gérés sont 2038-01-19 et 1901-12-13. Une forme de bug de l'an 2000 lié au fait que le point de référence est 1970 et que la date est stockée sur timestamp.</p> <p>2 solutions : <br>- la plus simple (mais le plus chère) : avoir un serveur 64 bit. <br>- utiliser la classe datetime : <a href="http://php.net/DateTime" class="spip_url spip_out auto" rel="nofollow external">http://php.net/DateTime</a> (il faut du coup faire un php de php...)</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-22T06:39:03Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479604 2015-02-22T06:39:03Z <p>Bonjour,<br class="autobr"> Si je mets «<small class="fine d-inline"> </small><tt><ages|n=01/01/1902></tt><small class="fine d-inline"> </small>» j'ai 113 ans, avec «<small class="fine d-inline"> </small><tt><ages|n=01/01/1901></tt><small class="fine d-inline"> </small>» j'obtiens 45 ainsi qu'en mettant des dates antérieures.<br class="autobr"> Est ce que le calcul peut dépendre du serveur ou du système<small class="fine d-inline"> </small>?<br class="autobr"> Je suis en local avec easyphp, spip 2 et spip 3 et j'obtiens le même résultat.<br class="autobr"> Voir ici :</p> <p><a href="http://imagesetpeche.free.fr/?Dates" class="spip_url spip_out" rel='nofollow external'>http://imagesetpeche.free.fr/?Dates</a></p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-21T20:14:40Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479598 2015-02-21T20:14:40Z <p>Bizarrement, chez moi, ça fonctionne jusqu'à l'an 0<small class="fine d-inline"> </small>!</p> <p>(Attention<small class="fine d-inline"> </small>! Pour les années à moins de 4 chiffres (par exemple pour le 1<sup class="typo_exposants">er</sup> janvier 900) il faut écrire « <tt><ages|n=01-01-0900></tt> » ou « <tt><ages|n=0900-01-01></tt> » ou « <tt><ages|n=01/01/0900></tt> » ou « <tt><ages|n=0900/01/01></tt> » : Il ne faut pas oublier de mettre un zéro avant le 900 afin qu'il y ai bien 4 chiffres).</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-21T16:52:50Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479593 2015-02-21T16:52:50Z <p>Mais ne va pas plus loin que 1902... dommage</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-21T12:40:13Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479589 2015-02-21T12:40:13Z <p>Bonjour, et merci pour cet ajout aux possibilités de Spip.<br class="autobr"> Tout marche bien, et j'ai effectivement<i> 66 ans </i> comme l'a découvert le programme...<br class="autobr"> Ce script répond à la demande d'un participant à la liste de diffusion.<br class="autobr"> Bonne journée.</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-21T11:26:20Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479587 2015-02-21T11:26:20Z <p>je viens de tester. Aucun souci. Quelle système<small class="fine d-inline"> </small>? quel message d'erreur<small class="fine d-inline"> </small>?</p> Créer un modèle permettant de calculer l'âge automatiquement 2015-02-21T11:23:14Z https://files.spip.net/Creer-un-modele-permettant-de-calculer-l-age#comment479585 2015-02-21T11:23:14Z <p>Impossible de décompresser le fichier modele spip-ages</p>