Php+calcul+nbre heure

pandouta08 Messages postés 89 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 14 février 2011 - 22 avril 2009 à 18:52
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 - 23 avril 2009 à 21:56
bonjour,
je voudrais savoir comment je peux calculer le nombre d'heures entre 2 dates de la meme journée .j'ai une date sortie et une date entrée de type datetime je veux avoir la différence entre ces 2 dates afin d'afficher le nombre des heures ecoulés.
voici un partie de mon code :
while ($row = mysql_fetch_array($resultb)) {
   echo '<tr>';
   echo '<td align="center" >'.$row['id_user'].'</td>';
   echo '<td align="center" >'.$row['nom'].'</td>';
   echo '<td align="center">';
     $query = "select * from presence where id_user=".$row['id_user'];
        $result2 = mysql_query($query) or die( mysql_error());
  while ($row2 = mysql_fetch_array($result2)) {
   echo $row2['entree'].' '.$row2['sortie'].'
';
  }
  echo "</td>";
  
  
  echo '<td align="center">';
  
  $query = "select * from presence where id_user=".$row['id_user'];
  $result2 = mysql_query($query) or die( mysql_error());
  while ($row2 = mysql_fetch_array($result2)) {
  $diff=mktime($row2['sortie']-$row2['entree']);
  echo ($diff).'
';
  }
  echo '</td></tr>';
  
  }
  ?>
s'il vous plait pourriez vous m'aider?
merci

3 réponses

Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
23 avril 2009 à 01:56
Ce qu'il faudrait d'abord savoir c'est quelle genre de valeur se trouve dans ton champ "entree" et "sortie". C'est une valeur calculé à partir de quoi ? la fonction time ? l'heure de la journée ? la fonction date dans mysql ? autre chose ?
pandouta08 Messages postés 89 Date d'inscription mercredi 27 décembre 2000 Statut Membre Dernière intervention 14 février 2011
23 avril 2009 à 10:06
bonjour,
j'ai une table sql "presence" qui contient les champs suivants:
id_presence  int
id_user  int
entree dateTime
sortie  dateTime 
mon probléme consiste à:
comment peut -t-on  calculer le nbre d'heures entre la date sortie et la date entree tout en affichant ceux ci dans la colonne nbre d'heures???
voici le code :

<html><head><style type="text/css">
*{
 margin: 0px;
 padding: 0px;
 font-family: Verdana, Arial, Helvetica, sans-serif;
 font-size: 11px;
}
body{
 
}
a{
 text-decoration: none;
 color: #200;
}
ul, li{
 list-style: none;
}
.mon_onglet{
 float: left;
 padding: 2px 10px;
 margin-right: 5px;
 color: #FFFFFF;
 background: #000066;
 border: 1px solid ##0066FF;
 cursor: pointer;
 margin-bottom: -1px;

.mon_onglet:hover{
 background: #0066FF;
}    
.mon_onglet_selected{
 float: left;
 padding: 2px 10px;
 margin-right: 5px;
 color: #FFFFFF;
 background: #0066FF;
 border-top: 1px solid #68ce3e;
 border-right: 1px solid #0066FF;
 border-left: 1px solid ##0066FF; 
 border-bottom: 1px solid ##0066FF; 
 cursor: pointer; 
 margin-bottom: -1px;
}     
.clear{
 clear: both;
}
.mon_contenu{
 color: #000000;
 background: #a3t222;
 border: 2px solid #0099FF;
 padding: 10px;    
}
#mes_contenus, #mes_onglets{
 width: 900px;
}
</style>
<script language="javascript">
function changeOnglet(_this){
 var getOnglets  = document.getElementById('mes_onglets').getElementsByTagName('li');
 for(var i = 0; i < getOnglets.length; i++){
  if(getOnglets[i].id){
   if(getOnglets[i].id == _this.id){
    getOnglets[i].className = 'mon_onglet_selected';
    document.getElementById('c' + _this.id).style.display    = 'block';
   }
   else{
    getOnglets[i].className = 'mon_onglet';
    document.getElementById('c' + getOnglets[i].id).style.display  = 'none';
   }
  }
 }   
}
</script></head></html>
<?php
$host = "localhost";


$user = "root";


$bdd = "dotproject";


$passwd  = "";


mysql_connect($host,$user,$passwd) or die("Connexion impossible");


mysql_select_db($bdd) or die("Echec de selection de la base");
?>


<style type="text/css">
<!--
.Style1 {font-weight: bold}
.Style2 {font-weight: bold}
.Style3 {color: #FFFFFF}
-->
</style>


 


<?php


$today = date("Y:m:d");
$mois_en_cours=date(m);


$query = "select* from utilisateur";


$result = mysql_query($query) or die( mysql_error());


//$arrays = mysql_fetch_assoc($result);


$querya "SELECT * FROM presence, utilisateur WHERE WEEK(entree, 3) DATE_FORMAT(NOW(), '%u')order by entree; ";
$resulta = mysql_query($querya);


 


$queryb = "SELECT * FROM utilisateur";
$resultb = mysql_query($queryb);


?>
<style type="text/css">
<!--
.Style1 {
 color: #FFFFFF;
 font-weight: bold;
}
.Style2 {
 color: #EBE9ED;
 font-weight: bold;
}
-->
</style>

 
  <li class="mon_onglet_selected Style3" id="o_1" onclick="changeOnglet(this);">Par jour</li>
  <li class="mon_onglet Style3" id="o_2" onclick="changeOnglet(this);">Par semaine</li>
  <li class="mon_onglet Style3" id="o_3" onclick="changeOnglet(this);">Par mois</li>
  
  

 

 
   
   
   
   
  ----

  Identifiant,
    Utilisateur,
 
 
    <?php           
  while ($row = mysql_fetch_array($result)) {
  echo '----
';
  echo ''.$row['id_user'].', ';
  echo ''.$row['nom'].', ';
  echo '';
  }
  ?>


 


 
  ----

  Identifiant,
  Utilisateur,
  Nombre d'heures,
 
 
    <?php
  while ($row = mysql_fetch_array($resulta)) {
  echo '----
';
  echo''.$row['id_user'].', ';
  echo''.$row['nom'].', ';
  echo'';
  }
  ?>

 
  ----

  Identifiant,
    Utilisateur,
    Entree/sorite,
    nb,
 
 
    <?php
  while ($row = mysql_fetch_array($resultb)) {
   echo '----
';
   echo ''.$row['id_user'].', ';
   echo ''.$row['nom'].', ';
   echo '';
     $query = "select * from presence where id_user=".$row['id_user'];
        $result2 = mysql_query($query) or die( mysql_error());
  while ($row2 = mysql_fetch_array($result2)) {
   echo $row2['entree'].' '.$row2['sortie'].'
';
  }
  echo ", \";
  
  
  echo '';
  
  $query = "select * from presence where id_user=".$row['id_user'];
  $result2 = mysql_query($query) or die( mysql_error());
  while ($row2 = mysql_fetch_array($result2)) {
  $diff=mktime($row2['sortie']-$row2['entree']);
  echo ($diff).'
';
  }
  echo ', ';
  
  }
  ?>

merci d'avance.
Arto_8000 Messages postés 1044 Date d'inscription lundi 7 mars 2005 Statut Membre Dernière intervention 13 juillet 2010 7
23 avril 2009 à 21:56
Habituellement quand on ne sait pas comment manipuler certaines données, on commence par regarder la documentation sur le sujet.

http://dev.mysql.com/doc/refman/5.0/fr/datetime.html

Ce que la documentation dit c'est que les données sont retournés sous le format : "
AAAA-MM-JJ HH:MM:SS
". Si tu veux comparer seulement les heures, il suffit d'extraire la bonne partie de la chaine.

<?php
$dt = explode(':',$row2['entree']);
$heure1 = $dt[1];

$dt = explode(':', $row2['sortie']);
$heure2 = $dt[1];

$nombreHeure = $heure2-$heure1;
?>
Rejoignez-nous