[RESOLU] addition de plusieurs heures, minutes

addition de plusieurs heures, minutes [RESOLU] - PHP - Programmation

Marsh Posté le 29-08-2010 à 12:32:00    

Bonjour,
 
J'ai une base de donnée avec un champs => temps de type Time
Tous les enregistrement sont affiché dans un tableau.
Je récupère les données en utilisant la requête sql => SELECT temps FROM `table`
Je voudrais savoir si il y a une moyen d'additionner le champs temps de tout mes enregistrement ?
 
J'espère que je suis clair :??:  
 
Merci


Message édité par Rius le 29-08-2010 à 18:51:50
Reply

Marsh Posté le 29-08-2010 à 12:32:00   

Reply

Marsh Posté le 29-08-2010 à 13:33:51    

Tu parcours le tableau avec un foreach() et tu ajoutes tes valeurs dans une variable.


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 29-08-2010 à 14:17:46    

aideinfo a écrit :

Tu parcours le tableau avec un foreach() et tu ajoutes tes valeurs dans une variable.


 
Tu aurais pas un exemple, s'il te plait ? :(

Reply

Marsh Posté le 29-08-2010 à 14:46:09    

Oui, ;)

Message cité 1 fois
Message édité par aideinfo le 29-08-2010 à 14:46:59

---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 29-08-2010 à 15:27:57    


 

Code :
  1. <?php
  2.     // Requête SQL
  3.     $reponse = mysql_query("SELECT * FROM pilotes WHERE id_pilotes = '1'" );
  4. // On fait une boucle pour lister tout ce que contient la table :
  5.  while ($donnees = mysql_fetch_array($reponse) )
  6. $montant_total = 0;
  7. foreach($donnees['temps_vol'] AS $heure) {
  8.     $montant_total += $heure['Temps total'];
  9. echo "Valeur : $montant_total<br />\n";
  10. }
  11. ?>


 
Pourrais-tu me dire si je suis sur la bonne piste et ce qu'il va pas dans mon code STP ? :??:  

Reply

Marsh Posté le 29-08-2010 à 15:44:57    

Autant t'épargner le foreach() et tout faire dans le while() (d'où l'intérêt de mettre son code avec la question).


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 29-08-2010 à 16:47:53    

J'ai supprimer le foreach() pour utiliser le While.
En faisant des test avec des ECHO, je vois les valeurs s'afficher avec VALEUR1, mais VALEUR2 n'affiche rien du tt
Donc du coup, l'addition qui se fait est: 0+rien
Je n'arrive pas a récupérer les données pour l'addition
 

Code :
  1. // On fait une boucle pour lister tout ce que contient la table :
  2.  while ($donnees = mysql_fetch_array($reponse) )
  3. echo "Valeur1 : ".$donnees['temps_vol']."<br />\n";
  4. $montant_total = 0;
  5. $temps = $donnees['temps_vol'];
  6. echo "Valeur2 : $temps<br />\n";
  7. $total=$montant_total+$donnees['temps_vol'];
  8. echo "Valeur : $total<br />\n";
  9. ?>


Reply

Marsh Posté le 29-08-2010 à 17:15:27    

Et pourquoi pas directement via SQL ?
 

Code :
  1. $reponse = mysql_query("SELECT SUM(TIME_TO_SEC('temps_vol')) AS temps_vol_total_secondes FROM pilotes WHERE id_pilotes = '1'" );


 
et après pour passer des secondes en H/M/S, la fonction date de PHP le fait ...
 

Code :
  1. [cpp]date('H:i:s', $reponse['temps_vol_total_secondes']);

Message cité 1 fois
Message édité par NewsletTux le 29-08-2010 à 17:16:09

---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Marsh Posté le 29-08-2010 à 17:24:30    

Un bon http://hfr.toyonos.info/generateurs/note/?&n=0&d=20 pour aideinfo
 
La réponse typique du mec qui connait rien en SQL

Reply

Marsh Posté le 29-08-2010 à 17:35:01    

NewsletTux a écrit :

Et pourquoi pas directement via SQL ?
 

Code :
  1. $reponse = mysql_query("SELECT SUM(TIME_TO_SEC('temps_vol')) AS temps_vol_total_secondes FROM pilotes WHERE id_pilotes = '1'" );


 


 
je viens de tester cette requête, j'ai pas d'erreur mais le résultat est 0, il n'arrive pas a récupérer toute les heures

Message cité 1 fois
Message édité par Rius le 29-08-2010 à 17:36:11
Reply

Marsh Posté le 29-08-2010 à 17:35:01   

Reply

Marsh Posté le 29-08-2010 à 17:45:51    

Alisteroid a écrit :

Un bon http://hfr.toyonos.info/generateur [...] ?&n=0&d=20 pour aideinfo
 
La réponse typique du mec qui connait rien en SQL


 
Ouah, super réponse à 2 balles qui fait super avancer les choses ! Pourquoi faut toujours qu'il y en ait qui viennent simplement pour faire chier ??? :sarcastic:


---------------
http://www.aideinfo.com/  Whois adresses IP/domaines le plus évolué !!  FAQ Free Mobile
Reply

Marsh Posté le 29-08-2010 à 17:51:01    

Parceque faire ce genre de chose avec un boucle, revèle bien le niveau d'un mec ...
Je viens, faire chier, parceque je trouve pas ça normal d'apprendre des conneries pareilles à un débutant.

Reply

Marsh Posté le 29-08-2010 à 17:52:07    

Rius a écrit :


 
je viens de tester cette requête, j'ai pas d'erreur mais le résultat est 0, il n'arrive pas a récupérer toute les heures


Tu peux exporter ta table (structure et quelques lignes) et la mettre ici ?

Reply

Marsh Posté le 29-08-2010 à 18:01:31    

Alisteroid a écrit :


Tu peux exporter ta table (structure et quelques lignes) et la mettre ici ?


Code :
  1. CREATE TABLE `phpboost_pilotes_carnets` (
  2.   `id` tinyint(2) NOT NULL auto_increment,
  3.   `id_pilotes` tinyint(2) NOT NULL,
  4.   `date` date NOT NULL,
  5.   `appareil` varchar(20) collate latin1_general_ci NOT NULL,
  6.   `temps_vol` time NOT NULL,
  7.   `aeroport_start` varchar(20) collate latin1_general_ci NOT NULL,
  8.   `aeroport_stop` varchar(20) collate latin1_general_ci NOT NULL,
  9.   `commentaire` varchar(80) collate latin1_general_ci default NULL,
  10.   PRIMARY KEY  (`id`),
  11.   KEY `id_phpboost_pilotes` (`id_pilotes`)
  12. ) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci PACK_KEYS=1 AUTO_INCREMENT=14 ;
  13. --
  14. -- Contenu de la table `phpboost_pilotes_carnets`
  15. --
  16. INSERT INTO `phpboost_pilotes_carnets` VALUES (1, 1, '2010-08-23', '747-400 PMDG', '00:49:00', 'LFLL', 'LFPG', 'Vol de jour');
  17. INSERT INTO `phpboost_pilotes_carnets` VALUES (2, 1, '2010-08-23', '747-400 PMDG', '00:46:00', 'LFPG', 'LFLL', 'Vol en 747-400 PMDG de jour');
  18. INSERT INTO `phpboost_pilotes_carnets` VALUES (3, 1, '2010-08-24', '747-400 PMDG', '01:00:00', 'LFBO', 'LEIB', 'Vol en 747-400 PMDG');

Reply

Marsh Posté le 29-08-2010 à 18:14:39    

Pour avoir le nb de secondes :
SELECT SUM(TIME_TO_SEC(temps_vol)) AS temps_vol_total_secondes FROM phpboost_pilotes_carnets
 
Pour l'avoir sous format hh::mm:ss
SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( temps_vol ) ) ) AS temps_vol_total_secondes
FROM phpboost_pilotes_carnets
 
Le problème venait de quotes autour de 'temps_vol', tu sommais la chaine de caractère 'temps_vol' (donc ca donnait 0) au lieu de sommer les valeurs de la colonne temps_vol... bref fallait juste enlever les quotes ou mettre les bonnes (‘temps_vol');

Reply

Marsh Posté le 29-08-2010 à 18:19:12    

Alisteroid a écrit :

Pour avoir le nb de secondes :
SELECT SUM(TIME_TO_SEC(temps_vol)) AS temps_vol_total_secondes FROM phpboost_pilotes_carnets
 
Pour l'avoir sous format hh::mm:ss
SELECT SEC_TO_TIME( SUM( TIME_TO_SEC( temps_vol ) ) ) AS temps_vol_total_secondes
FROM phpboost_pilotes_carnets
 
Le problème venait de quotes autour de 'temps_vol', tu sommais la chaine de caractère 'temps_vol' (donc ca donnait 0) au lieu de sommer les valeurs de la colonne temps_vol... bref fallait juste enlever les quotes ou mettre les bonnes (‘temps_vol');


 
Ça fonctionne nikel MERCI beaucoup

Reply

Marsh Posté le 04-09-2010 à 14:22:08    

exact, pardon, c'est une erreur dans ma suggestion plus haut. Merci de la correction...


---------------
NewsletTux - outil de mailing list en PHP MySQL
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed