si $temps est au format h:i:s, je doute qu'il corresponde au premier argument attendu par la fonction mktime...mktime -- Retourne le timestamp UNIX d'une date
Description
int mktime ( [int hour [, int minute [, int second [, int month [, int day [, int year [, int is_dst]]]]]]] )
mysql> SELECT TIMEDIFF('2000:01:01 00:00:00', '2000:01:01 00:00:00.000001');
-> '-00:00:00.000001'
De mon côté, je saisi le code suivant mais sans résultat :
$sql2 = mysql_query("SELECT TIMEDIFF('$temps','$tempsdereference')");
$ecart = mysql_query($sql2);
Où est le bug ?
$tempsdereference="2006-05-21 01:00:03";
puis je calcule l'écart entre le temps réalisé ($temps par exemple 2006-05-21 01:00:15) par l'équipe et ce temps de référence dans la boucle d'affichage du tableau :
$sql = "SELECT * FROM equipe order by temps asc";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req))
{
$temps=$data['temps'];
//calcul de l'écart
$ecart = mysql_query("SELECT TIMEDIFF('$temps','$tempsdereference')");
//c'est ici que ça bug
// L'affichage me donne " " partout en écart.
//affichage de la ligne de résultat
//...
echo "<td align=center><span class=texte>$ecart</span></td>";
//...
$i++;
}
J'espère que je suis plus clair comme ça.$temps2 = mktime($temps);
$tempsdereference2 = mktime($tempsdereference);
//1 h = 3600 secondes
//1 min = 60 secondes
$nbheure = ($temps2 - $tempsdereference2)/3600;
$nbmin = (($temps2 - $tempsdereference2)/60)-($nbheure*3600);
$nbsec = ($temps2 - $tempsdereference2)-($nbmin*60);
Ca me donne toujours 0:0:0<?php
$sql = "SELECT * FROM equipe order by temps asc";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req))
{
$temps = $data['temps'];
//calcul de l'écart
$sql2 = "SELECT TIMEDIFF('". $temps ."', '". $tempsdereference ."');";
$exec = mysql_query($sql2);
while(($ecart = mysql_result($exec, 0)) != false)
{
echo "<td align=center><span class=texte>". $ecart ."</span></td>";
}
}
?>
//$temps est au format 2006-05-21 01:00:00
//on explose $temps pour isoler les heures, les minutes, les secondes
$heure1 = substr($temps,11,2);
$min1 = substr($temps,14,2);
$sec1 = substr($temps,17,2);
$temps2 = mktime($heure1,$min1,$sec1,05,21,2006);
$tempsdereference2 = mktime(01,00,00,05,21,2006);
//on fait les calculs
//1 h = 3600 secondes
//1 min = 60 secondes
$nbheure = ($temps2 - $tempsdereference2)/3600;
$nbmin = (($temps2 - $tempsdereference2)/60)-($nbheure*3600);
$nbsec = ($temps2 - $tempsdereference2)-($nbmin*60);
J'arrive bien à 0:0:0 écart sur le 1er : normal mais les autres calcul sont bizarres...$nbheure = round(($temps2 - $tempsdereference2)/3600);
$nbmin = round((($temps2 - $tempsdereference2)/60)-($nbheure*3600));
$nbsec = round(($temps2 - $tempsdereference2)-($nbmin*60));
//on fixe le temps du vainqueur
$tempsdereference="2006-05-21 01:00:03";
$i=1;
//on sélectionne tous les participants
$sql = "SELECT * FROM equipe order by temps asc";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
while($data = mysql_fetch_array($req))
{
// recherche de toutes les données dont le temps de l'équipe
//....
$temps=$data['temps'];
//...
//$temps est au format 2006-05-21 01:00:00
//on explose la variable $temps
$heure1 = substr($temps,11,2);
$min1 = substr($temps,14,2);
$sec1 = substr($temps,17,2);
$temps2 = mktime($heure1,$min1,$sec1,05,21,2006);
$tempsdereference2 = mktime(01,00,00,05,21,2006);
//on effectue les calculs pour chaque equipe
//1 h = 3600 secondes
//1 min = 60 secondes
$nbheure = round(($temps2 - $tempsdereference2)/3600);
$nbmin = round((($temps2 - $tempsdereference2)/60)-($nbheure*60));
$nbsec = round(($temps2 - $tempsdereference2)-(($nbmin*60)+($nbheure*3600)));
//... code du tableau
//on affiche le résultat
if($i>1) //on ne fait pas le clacul pour le vainqueur
{
if($nbheure>0.9999999) //si il y a + d'une heure d'écart
{
echo "+ $nbheure h : $nbmin min : $nbsec sec";
}
elseif($nbmin>1) //si il y a + d'une minute d'écart
{
echo "+ $nbmin min : $sec1 sec";
}
else //si il n'y a que des secondes d'écart
{
echo "+ $sec1 sec";
}
}
//... fin du tableau
$i++;
}
//... fin du tableau
mysql_close();
Voilà. Merci à tous.