Categories > TinyButStrong general (FR) >

Format 01 pour la valeur 1

The forum is closed. Please use Stack Overflow for submitting new questions. Use tags: tinybutstrong , opentbs
By: daviraud
Date: 2006-09-13
Time: 12:41

Format 01 pour la valeur 1

Bonjour,

J'ai un petit problème pour formater mes résultats.
Je dois calculer un temps moyen de communication que j'aimerai afficher de la manière suivante:

1'05 pour 1 minute et 5 secondes
1,10 pour 1 minute et 10 secondes.

Mon résultat est calculé avec la formule suivante:

tps_de_com_moy =temps de com / Nb appel et est en seconde.

Pour avoir les minutes, je divise tps_de_com_moy par 60
Pour les secondes, je calcule tps_de_com_moy modulo 60.

Le problème est qu'il me donne 6 pour le nombre de seconde et j'amerai voir s'afficher 06

Je ne sais pas si je suis clair.

Si quelqu'un  m'a compris et peut m'aider, ce serait très cool

Merci d'avance à mon sauveur
By: Skrol29
Date: 2006-09-13
Time: 13:40

Re: Format 01 pour la valeur 1

Salut,

Oui c'est clair.
Tu poeux soit afficher le résultat avec un format date personnalisé à condition de faire :
  $x= mktime(0, 0, $tps_de_com_moy);
puis
  [var.x;frm='nn,ss']
mais les minutes seront aussi sur 2 digits.

Sinon, il faut que tu programmes une petite fonction de formatage personnalisée qui irait avec le paramètre "onformat" (voir doc).
By: daviraud
Date: 2006-09-13
Time: 14:48

Re: Format 01 pour la valeur 1

petit precision importante, mes resultats proviennent d'une requete mysql.
Voici le code php
if ($file=='') {
     $sql1="SELECT  PREPOSE as analyse1,  Sum(APPEL_PRIS) AS Appel_pris,Sum(If(FILE='3300',APPEL_PRIS,0)) AS Appel_pris_3300,
Sum((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60)) AS Prise_appel,floor((Sum((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60))/Sum(APPEL_PRIS))/60) as mn_dur_com,((Sum((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60))/Sum(APPEL_PRIS)) mod 60) as sec_dur_com,AVg((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60)) AS Prise_appel_moy,
AVg((hour(PAS_LIBRE)*3600)+(Minute(PAS_LIBRE)*60)) AS Pas_libre, AVg((hour(SERVICE)*3600)+(Minute(SERVICE)*60)) AS Service  FROM prepose where PREPOSE='" . $prepose . "' and JOUR >='".$date_deb."' and JOUR <='".$date_fin."' group by analyse1";


     $sql2="SELECT  PREPOSE as analyse1,HORAIRE AS analyse2, Sum(APPEL_PRIS) AS Appel_pris,Sum(If(FILE='3300',APPEL_PRIS,0)) AS Appel_pris_3300, Sum((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60)) AS Prise_appel,floor((Sum((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60))/Sum(APPEL_PRIS))/60) as mn_dur_com,((Sum((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60))/Sum(APPEL_PRIS)) mod 60) as sec_dur_com,AVg((hour(PRISE_APPEL)*3600)+(Minute(PRISE_APPEL)*60)) AS Prise_appel_moy,
     AVg((hour(PAS_LIBRE)*3600)+(Minute(PAS_LIBRE)*60)) AS Pas_libre, AVg((hour(SERVICE)*3600)+(Minute(SERVICE)*60)) AS Service  FROM prepose where PREPOSE='" . $prepose . "' and JOUR >='".$date_deb."' and JOUR <='".$date_fin."' and (Prepose='%p1%') group by analyse1,analyse2";
   
$Titre_page='Statistiques correspondant '.$NomUsr;
$Titre_tab='par file';
$Nbr = $TBS->MergeBlock('Niv1','mysql',$sql1) ;
if ($Nbr>0) $TBS->MergeBlock('Niv2','mysql',$sql2) ;
   
}


et la page html

        <table width="400" border="1" align="center" cellpadding="4" cellspacing="0" bordercolor="#3399CC">
        <tr><td colspan=3 align ='center'><strong>[var.Titre_tab]</strong><br><p style="font-style: italic;font-family:Arial;font-size:8pt;">[var.Info]</p> </td></tr>
        <tr>
            <td><strong>Correspondant [Niv1.analyse1;block=tr]</strong><br>
              <strong>Appel pris :</strong> [Niv1.Appel_pris;frm='0 000.']<br>
              <strong>Tps de com moyen :</strong> [Niv1.mn_dur_com;frm='0 000.']'[Niv1.sec_dur_com;frm='0.']''<br>
              <strong>Marge :</strong> [Niv1.Service;frm='0,0 %']<br>
              <br>
              <table border="1" align="center" cellpadding="2" cellspacing="0">
                <tr bgcolor="#CACACA">
                  <td bordercolorlight="#669999" align="center" bgcolor="#669999" width="48"><font face="Times New Roman" size="2"><b>Horaire</b></font></td>
                  <td bordercolorlight="#669999" align="center" bgcolor="#669999" width="62"><font face="Times New Roman" size="2"><b>Appel pris</b></font></td>
                  <td bordercolorlight="#669999" align="center" bgcolor="#669999" width="60"><font face="Times New Roman" size="2"><b>Tps de com moyen</b></font></td>
                  <td bordercolorlight="#669999" align="center" bgcolor="#669999" width="41"><font face="Times New Roman" size="2"><b>Pas Libre</b></font></td>
                  <td bordercolorlight="#669999" align="center" bgcolor="#669999" width="47"><font face="Times New Roman" size="2"><b>Tps</b></font></td>
                </tr>
                <tr bgcolor="#F0F0F0">
                  <td>[Niv2.analyse2;block=tr;p1=[Niv1.analyse1]]</td>
                  <td><div align="right">[Niv2.Appel_pris;frm='0 000.']</div></td>
                  <td><div align="right">[Niv2.mn_dur_com;frm='0 000.']'[Niv2.sec_dur_com;frm='0.']''</div></td>
                  <td><div align="right">[Niv2.Pas_libre;frm='0 000.']</div></td>
                  <td><div align="right">[Niv2.Service;frm='0 000.']</div></td>
                </tr>
                <tr bgcolor="#E6E6E6">
                  <td>[Niv2.analyse2;block=tr]</td>
                  <td><div align="right">[Niv2.Appel_pris;frm='0 000.']</div></td>
                  <td><div align="right">[Niv2.mn_dur_com;frm='0 000.']'[Niv2.sec_dur_com;frm='0 000.']''</div></td>
                  <td><div align="right">[Niv2.Pas_libre;frm='0 000.']</div></td>
                  <td><div align="right">[Niv2.Service;frm='0 000.']</div></td>
                </tr>
              </table>
          </td>
          </tr>
        </table>     




Je ne vois pas où positionner ce que tu m'as proposé comme solution.
Merci de ton aide

By: lordb
Date: 2006-09-19
Time: 10:39

Re: Format 01 pour la valeur 1

En fait il faut que tu utilise le paramètre "onformat" au lieu de "frm"

du coup tu va pouvoir utiliser une fonction php personalisé pour la mise en forme. Tu devrais pouvoir aussi gagner en performance

Actuellement ta requete génère les durée en minute et seconde.
Personnellement je pense que tu devrais te contenter de récupérer le temps total en seconde et ensuite réaliser le formatatge complet via php

ex :

Durée en seconde : [Niv1.dur_com]
Converti en minute'seconde : [Niv1.dur_com;onformat=TBS_format_dur_com]

function TBS_format_dur_com($field,&$val)
{
    // $val = durée en seconde
    $val = date("i's",$val);
}