Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1046 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] addition de plusieurs heures, minutes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[RESOLU] addition de plusieurs heures, minutes

n°2019660
Rius
Posté le 29-08-2010 à 12:32:00  profilanswer
 

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
mood
Publicité
Posté le 29-08-2010 à 12:32:00  profilanswer
 

n°2019667
aideinfo
Posté le 29-08-2010 à 13:33:51  profilanswer
 

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
n°2019668
Rius
Posté le 29-08-2010 à 14:17:46  profilanswer
 

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 ? :(

n°2019670
aideinfo
Posté le 29-08-2010 à 14:46:09  profilanswer
 

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
n°2019673
Rius
Posté le 29-08-2010 à 15:27:57  profilanswer
 


 

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 ? :??:  

n°2019674
aideinfo
Posté le 29-08-2010 à 15:44:57  profilanswer
 

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
n°2019676
Rius
Posté le 29-08-2010 à 16:47:53  profilanswer
 

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. ?>


n°2019677
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 29-08-2010 à 17:15:27  profilanswer
 

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
n°2019678
Alisteroid
Posté le 29-08-2010 à 17:24:30  profilanswer
 

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

n°2019679
Rius
Posté le 29-08-2010 à 17:35:01  profilanswer
 

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
mood
Publicité
Posté le 29-08-2010 à 17:35:01  profilanswer
 

n°2019681
aideinfo
Posté le 29-08-2010 à 17:45:51  profilanswer
 

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
n°2019682
Alisteroid
Posté le 29-08-2010 à 17:51:01  profilanswer
 

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.

n°2019683
Alisteroid
Posté le 29-08-2010 à 17:52:07  profilanswer
 

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 ?

n°2019685
Rius
Posté le 29-08-2010 à 18:01:31  profilanswer
 

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');

n°2019687
Alisteroid
Posté le 29-08-2010 à 18:14:39  profilanswer
 

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');

n°2019688
Rius
Posté le 29-08-2010 à 18:19:12  profilanswer
 

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

n°2021169
NewsletTux
&lt;Insérez ici votre vie /&gt;
Posté le 04-09-2010 à 14:22:08  profilanswer
 

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


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

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  [RESOLU] addition de plusieurs heures, minutes

 

Sujets relatifs
Inclure plusieurs fichiers xml dans un seulSynchroniser le lancement de plusieurs animations flash
insertion dans plusieurs tables à la foiscryptage d'un message à plusieurs destinataires
Problème pour joindre plusieurs fichiers à un mailboucle pour ouvrir plusieurs fichiers en C
utilisation de script js plusieurs fois dans une même page Par défaut requete en de plusieurs tables en relations avec hibernat
gérer plusieurs flux 
Plus de sujets relatifs à : [RESOLU] addition de plusieurs heures, minutes


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR