| Par goudo, le 26 Oct 2005, 14:30 |
Revenir en haut de page |
|
Youhou, c'est remoi, le p'tit chieur du PHP/MySQL.
Alors aujourdhui, au menu nous avons :
Un bon probleme de somme.
Je m'explique :
J'ai une table qui contient un champ "temps" avec des données de type TIME qui ont donc cett formes : 00:00:00.
Jusque la aucun probleme.
Ensuite je dois faire la somme de ces valeurs et pour le moment j'obtiens un entier qui ne rime presque à rien.
Ex :
00:15:03
00:04:58
Le résultat devrait être 00:20:01 et bien non, cela donne d'apres MySQL cela donne : 1961.
en fait MySQL supprime les ":" colle les chiffres et fait une somme avec une base(10).
J'ai tenté de faire un script PHP avec des "substr()" afin de récupérer les heures, minutes et secondes séparemment mais le probleme est ensuite de les traiter comme telles et de pouvoir extraire toutes les valeurs du champs "temps" pour en faire la somme.
Et la pouf, mon derniers neurone m'a laché.
Si quelqu'un a déjà eu affaire avec ce genre de formules et de données, je veux bien quelques indications.
En vous remerciant 
Dernière édition par goudo le 28 Oct 2005, 15:54; édité 1 fois |
|
 |
| Par Cédric, le 26 Oct 2005, 15:36 |
Revenir en haut de page |
|
Salut,
- A quoi correspondent tes valeurs de temps ?
- Comment tu les récupères ?
- Pourquoi est-ce que tu ne les enregistrerais pas en secondes (ce qui serait quand même plus simple niveau script).
Exemple :
Enregistrements :
00:15:03 = 15*60+3 = 903
00:04:58 = 4*60+58 = 298
Conversion
Après les avoir récupérés, tu fais un simple :
- Somme (ici 903+298) = 1201
- Si somme >= 60 : 1201 / 60 = 20,01666...
Nombre de minutes : arrondi inférieur = 20
Nombre de secondes : reste * 60 = 1
- Si minutes > 60, idem (nombre d'heures + Nombre de minutes restantes)
|
|
 |
| Par Cédric, le 26 Oct 2005, 15:39 |
Revenir en haut de page |
|
NB : tu peux faire la même chose avec ta façon de faire mais ça t'oblige à convertir tous les enregistrements (faut voir combien tu en as) en secondes...
| Citation: | | Heures * 360 + minutes * 60 + secondes. |
Quand à effectuer un calcul séparément (additionner heures, puis minutes, puis secondes) c'est possible mais ça revient au même : il faut ensuite :
- diviser tes secondes par 60, ajouter l'entier à tes minutes et conserver le reste en secondes.
- diviser tes minutes par 60, ajouter l'entier à tes heures et conserver le reste en minutes. |
|
 |
| Par goudo, le 27 Oct 2005, 08:31 |
Revenir en haut de page |
|
Merci pour tes réponses.
Pour répondre à tes questions :
A quoi correspondent tes valeurs de temps ?
Elles correspondent à la durée entre la prise d'appel et la fin de celui-ci.
(C'est un logiciel de Hotline)
Comment tu les récupères ?
Les valeurs sont entrées dans une table. Le champ qui les concernent est au format TIME.
Je les réupère donc par un simple "SELECT temps ..." que j'aimerais transformer en "SELECT sum(temps) ..." mais bon le "sum" d'un champs TIME retourne n'importe quoi.
Pourquoi est-ce que tu ne les enregistrerais pas en secondes (ce qui serait quand même plus simple niveau script).
En gros, ce n'était pas prévu au début d'en faire la somme
Le fait de les reprendre est une bonne mais je devrais revoir ma base et tout mon systeme de calcul de durée .
Biensur je le ferais si je ne trouve pas d'autres solutions et si tu n'as pas d'idées (j'en doute, vu les posts que tu viens de faire)
Pour les calculs en seconde, je vais voir ça en modifier mon interface de test.
Parce que le gros du probleme c'est que mon p'tit logiciel Hotline est deja en production. |
|
 |
| Par Cédric, le 27 Oct 2005, 10:19 |
Revenir en haut de page |
|
Le plus simple avec tes champs Time (champs "temps" de la table "appels") :
| Code: | $sql = "SELECT sec_to_time(sum(time_to_sec(temps))) AS temps FROM appels";
$rec = mysql_query($sql) or die ('Erreur : '.mysql_error() );
$row = mysql_fetch_assoc($rec);
echo $row['temps']; |
En principe ça répond à ta question...  |
|
 |
| Par goudo, le 28 Oct 2005, 15:54 |
Revenir en haut de page |
|
Je dirais même que c'est plus qu'en principe, ça réponds totalement à ma question.
Je vais enfin pouvoir terminer mes stats... ouf.
Un grand merci à toi Cedric  |
|
 |
| Par Cédric, le 29 Oct 2005, 09:21 |
Revenir en haut de page |
|
Pas de quoi !
| Citation: | | Parce que le gros du probleme c'est que mon p'tit logiciel Hotline est deja en production. |
En "production" ? Donc tu comptes le commercialiser ?! S'il est en production tu as certainement déposé les éventuels brevets... tu peux nous en dire plus ? |
|
 |
| Par goudo, le 04 Nov 2005, 11:45 |
Revenir en haut de page |
|
Heu non rien à voir avec de la commercialisation
J'ai développé cette petite appli dans le but de faciliter le suivi des appels qui moi et mon responsable recevont chaque jour, chaque chaque minute ...
Donc elle est en production dans ma société et non dans le commerce
Désolé pour le quiprocos (pas tres sur de l'ortho de ce mot) |
|
 |
| Par Cédric, le 04 Nov 2005, 16:34 |
Revenir en haut de page |
|
Ah ok... alors comment récupères-tu les appels / leur durée avec PHP C'est de la téléphonie IP / ADSL ? |
|
 |
| Par goudo, le 08 Nov 2005, 11:08 |
Revenir en haut de page |
|
Ho non loin de la, d'une maniere tres simple.
Un joli formulaire, qui a son ouverture prends l'heure, et lors de sa validation reprends l'heure. donc la durée se fait à partir de "l'heure de fin - l'heure de début".
ensuite pour identifer l'appelant bin un simple menu avec la liste des personnes succeptibles de nous appeler  |
|
 |
|
 |
| Par goudo, le 14 Nov 2005, 17:14 |
Revenir en haut de page |
|
Et oui je me doute bien
Peut etre un jour qui sait, po moi en tout cas  |
|
 |