Bonjour![]()
J'ai un petit souçis avec une fonction que j'ai créé (d'où le souçi) et que je n'arrive pas à regler;
Voici ma fonction:
Voila j'ai essayé de commenter à fond. Le but du programme est que je rentre une date, il va rechercher les enregistrements correspondant (et surtout les heures de début et fin des reservations à cette date) et doit me calculer et me retourner le nombre de 1/2 heures que l'item est reservé dans cette journée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46 <?php function occupation($jour){ //Requete en fonction de $jour. Le format de ce dernier est par exemple '2007-07-18' //On selectionne donc toutes les reservations de la journée pour un objet donné $sql = "SELECT debut_reservation, fin_reservation FROM reservation" ." WHERE statut_reservation='V' AND debut_reservation>='".$jour.' 00:00:00'."'" ." AND fin_reservation<'".$jour.' 23:59:59'."' ORDER BY debut_reservation"; $temp = mysql_query($sql); //$i sera le return de la fonction. C'est le nombre de demi_heures que l'objet est reservé sur la journée. Ca me permettra de faire un // pourcentage au final, ($i/48)*100 $i = 0; //Pour chaque reservation while($result = mysql_fetch_assoc($temp)){ //$result['debut_reservation'] est un champ datetime //$début va contenir un tableau avec les heures du debut de la reservation (on connait la date, plus besoin) $date = explode(" ", $result['debut_reservation']); $debut = explode(":", $date[1]); //$fin va contenir un tableau avec les heures de fin de la reservation $date = explode(" ", $result['fin_reservation']); $fin = explode(":", $date[1]); // Tant que l'heure de début n'est pas égale à l'heure de fin ... while(($debut[0] != $fin[0]) && ($debut[1] != $fin[1])){ //Une demi-heure en plus dans $i $i++; //Je ne prend que les tranches par demi-heures lors d'un enregistrement, donc //les minutes ne peuvent contenir que '00' ou '30' //Si ca n'est pas déjà une demi-heure if($debut[1] == '30'){ //On passe les minutes à '00' $debut[1] = '00'; //Et on rajoute une heure pour se rapprocher de $fin $debut[0]=$debut[0]+1; } else{ //Si c'etait déjà '00', on passe donc à '30' sans rajouter d'heure $debut[1] = '30'; } } } return $i; } ?>
Les champs dates des reservations sont des datetimes, mais les secondes sont toujours '00' et les minutes ne sont que '00' ou '30'.
Le problème est que la fonction ne me retourne que 1, ce qui ne correspond pas au nombre de demi-heures ... par exemple '2007/07/18 10:00:00' pour début et '2007/07/18 12:30:00' devrais me donner 5, et je n'ai jamais autre chose que 1, ou 0 quand il n'y a rien !
Si vous pouvez m'aider merci beaucoup![]()






Répondre avec citation


Partager