Je ne me souviens plus bien du besoin,
Qu’est-ce que tu veux à la fin de la boucle?
Ce qu’il me semble c’est que dans ta fonction add_heures tu passes #champ
Message du 31/01/13 09:59
De : « Beru Beru »
A : « papounet.net »
Copie à : « Mikhael MYARA » , « francois L deplaine » , « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et secondeIl faudrait que je trouve le moyen de calculer à chaque « passage » de boucle:
La somme du #champs actif et du #champs précédent.
Beru
Merci de ta proposition.
J’ai simplifié le code et adapté à ce que je proposais. Cela donnerait cela.
Si je ne me trompe pas et si j’ai bien compris:
#SET{somme,0}
2008} {surtitre=« double »}>#SET{somme,#EVAL{add_heures(‹ 12:04:43 ›,‹ 1:54:8 ›)}}
#GET{somme}
La question que je me pose c’est: Où vais-je introduire mon champs ?
Un truc du genre: #champs + #champs (+1) ?Je ne vois pas trop à vrai dire.
Beru
Voilà une boucle où la somme des heures s’affiche en dessous d’un article (boucle initialement écrite par JC Villeneuce pour ESCAL (V2)et modifiée pour mes besoins).
[(#REM) feuille de style pour l’onglet Bienvenue ]
#TEXTE
#SET{somme,#EVAL{add_heures(‹ 12:04:43 ›,‹ 1:54:8 ›)}}
#GET{somme}Le code de calcul des deux fonctions, que tu as donné pour la sommation des heures, est collé dans mes_fonctions.php placé dans le répertoire « squelettes »
J’ai testé avec un spip 2.1.19 en local avec easyphp.
Message du 28/01/13 10:41
De : « Beru Beru »
A : « papounet.net »
Copie à : « Mikhael MYARA » , « francois L deplaine » , « liste SPIP »Objet : Re: [Spip] additionner des durées en heure, minute et seconde
Je suis toujours sur mon prob!
J’ai trouvé cela qui fonctionne:
function add_heures($heure1,$heure2){
$secondes1=heure_to_secondes($heure1);
$secondes2=heure_to_secondes($heure2);
$somme=$secondes1+$secondes2;
//transfo en h:i:s
$s=$somme % 60; //reste de la division en minutes => secondes
$m1=($somme-$s) / 60; //minutes totales
$m=$m1 % 60;//reste de la division en heures => minutes
$h=($m1-$m) / 60; //heures
$resultat=$h."H ".$m.« mn « .$s.« s »;
return $resultat;
}
function heure_to_secondes($heure){
$array_heure=explode( »: »,$heure);
$secondes=3600*$array_heure[0]+60*$array_heure[1]+$array_heure[2];
return $secondes;
}$heure_1=‹ 12:04:43 ›;
$heure_2=‹ 14:57:07 ›;
echo 'La somme de ‹ .$heure_1. › et de ‹ .$heure_2. › est: '.add_heures($heure_1,$heure_2);
?>
Mais je n’arrive pas à y inclure ma boucle.
Qui ressemble à cela pour l’instant:
#SET{total,0}
#SET{total, #GET{total}|plus{#CHAMPS}}
total : #GET{total}
Beru
Comme ki dirait yaka faucon!
C’est du code à écrire avec le langage de PHP, regarde là : http://php.net/manual/fr/langref.php
et à appeler dans les bonnes boucles!Message du 10/01/13 18:31
De : « Beru Beru »
A : « Mikhael MYARA »
Copie à : « papounet.net » , « francois L deplaine » , « liste SPIP »Objet : Re: [Spip] additionner des durées en heure, minute et seconde
Merci de ta réponse.
Et comment je fais rentrer ça dans une boucle SPIP?
Beru
ca semble plus simple de tout convertir en secondes :
t = h3600+m60+s
puis de convertir le temps obtenu en h m s. si t est le temps en secondes :
h = t/3600
r1 = modulo(t,3600)
m = r1/60
s = modulo(r1/60)
où « modulo » serait une fonction « reste » de la division entière (opérateur « % » en C)
Bon après tout ce que j’ai lu, le besoin est simplement d’aditionner des temps qui ont un format du type xxh yym zzs!
Y-a-pas de secret, on additionne d’abord les seconde et tout ce qui est au dessus de 60, il faut le convertit en heures et minutes.
Puis on additionne les minutes et tout ce qui est au dessus de 60 on le convertit en heures
On additionne enfin les heures et quand c’est au dessus de 24 on le convertit en jours. Il faut faire un peut de programmation !
Sinon tu convertit tous tes temps en secondes; t’aditionne le tout et tu reconvertit en heures, minutes et secondes!bon courage!
Message du 05/01/13 15:41
De : « Beru Beru »
A : « francois L deplaine »
Copie à : « liste SPIP »
Objet : Re: [Spip] additionner des durées en heure, minute et secondeMerci pour ces liens.
Hélas je n’ai pas su trouver mon bonheur.
Je précise que je cherche à additionner des durées (indépendamment de tout problème de date).
Par ex, cela pourrait être: 30h + 2h25 + 4h58
Beru
http://contrib.spip.net/Utilisation-des-filtres-de-date
http://forum.spip.net/fr_231956.html
http://www.spip.net/en_article5533.html
De : Beru Beru [mailto:beru59@gmail.com]
Envoyé : vendredi 4 janvier 2013 19:08
À : Stéphane Santon
Cc : liste SPIP
Objet : Re: [Spip] additionner des durées en heure, minute et secondeTu aurais un petit exemple de snythaxe pour transformer, par ex la durée 01:12:25 en 72 minutes ou 4345 secondes, et compatible avec Spip ?
Beru
Bonjour,
Transformer en TimeStamp (nb de secondes depuis 1/1/1970) en regardant les fonctions de Php qui peuvent toutes être utilisées comme filtre Spip.
http://php.net/manual/fr/function.strtotime.php
http://php.net/manual/fr/ref.datetime.phpComment additionner des durées?
Je m’explique:
Dans ma base chaque enregistrement à une durée pour lequel j’ai créé un
champs: duree
de type hh:mm:ssJ’ai utilisé le code suivant:
#SET{total,0}
[(#SET{total, #GET{total}|plus{#DUREE}})]
total : #GET{total}
Cela fonctionne mais uniquement pour les heures. Par ex:
1h25 + 1h45 + 2h12
donne le résultat 4h
et non 5h22Faut-il transformer avant calcul les durées en minutes (par ex 1h25
devient 85 mn) ?Merci de vos avis et conseils,
Beru
–
StéphaneBTS Electrotechnique *** http://enselec.santonum.eu
Les Voisins Spipeurs * http://www.voisins-spipeurs.net
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc
[ (pas de nom de fichier) (0.3 Ko) ]
_______________________________________________
liste spip
spip@rezo.net - désabonnement : envoyer un mail à spip-off@rezo.netInfos et archives : http://listes.rezo.net/mailman/listinfo/spip
http://archives.rezo.net/spip.mbox/Documentation de SPIP : http://www.spip.net/
Irc : de l’aide à toute heure : http://spip.net/irc