Bonjour à tous,
je cherche à créé un petit script pour détecter une intersection entre 2 timeline exemple :
14:00 -17:00
16-00 18:00
est ce qu'il y aurait moyen de faire un script simple pour l'occasion ?
merci d'avance !
Bonjour à tous,
je cherche à créé un petit script pour détecter une intersection entre 2 timeline exemple :
14:00 -17:00
16-00 18:00
est ce qu'il y aurait moyen de faire un script simple pour l'occasion ?
merci d'avance !
je pensais pas qu'on me répondrais si rapidement !
ca peut etre n'importe qu'elle heure au format hh:mmCe seront toujours des heures piles ?
voici ce que j'ai... le problème c que lorsque ca dépasse 2 sélection ... ça ne fonction plus très bien...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for($i=0 ; $i < count($affecter) ; $i++ ){ for($j=0 ; $j < count($affecter) ; $j++ ){ if( isset($h_out_aff[$j+1]) && isset($h_out_aff[$i+1]) ){ if($h_in_aff[$i] <= $h_out_aff[$j+1] && $h_in_aff[$i+1] <= $h_out_aff[$j] ){ $valide = false; } } } }
L'intersection c'est le plus grand début et la petite fin :
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 <?php $t1 = 1400; $t2 = 1700; $t3 = 1800; $t4 = 1900; $intersect_debut = max($t1, $t3); $intersect_fin = min($t2, $t4); if ($intersect_debut < $interect_fin) { echo $intersect_debut . " - " . $intersect_fin; } else { echo 'pas d\'intersection'; }
si il y en a plusieurs je fait pareil ?
parce que je récupére ces éléments dans un formulaire... et la personne peux en sélectionner plusieurs mais il ne faut pas qu'il y est une intersection entre l'un d'entre eux..
du coup j'ai fait comme ca pour tous les prendre en conte, mais fait pas le resultat attendu :/
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 $t1 = null; $t2 = null; $t3 = null; $t4 = null; for($i=0 ; $i < sizeof($affecter) ; $i++ ){ for($j=0 ; $j < sizeof($affecter) ; $j++ ){ $t1 = strtotime($in[$i]) ; $t2 = strtotime($out[$i]); $t3 = strtotime( $in[$j]); $t4 = strtotime($out[$j]); $intersection_in = max($t1,$t3); $intersection_out = max($t2,$t4); if($intersection_in < $intersection_out ){ echo $intersection_in." - ".$intersection_out ; echo "<br/> intersection ***"; }else { echo 'pas d\'intersection'; } } }
Si tu veux seulement voir si les plages se coupent :
Tel quel si une plage fini à la même heure qu'une plage commence, elles sont considérées comme communes.
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 <?php $plage[] = array('in'=>1400, 'out'=>1900); $plage[] = array('in'=>1800, 'out'=>2000); $plage[] = array('in'=>1900, 'out'=>2200); $n = count($plage); for($i=0 ; $i < $n ; $i++ ){ for($j=0 ; $j < $n ; $j++ ){ if ($i != $j) { if ($plage[$i]['in'] <= $plage[$j]['out'] && $plage[$i]['out'] >= $plage[$j]['in']) { echo $plage[$i]['in'] . '-' . $plage[$i]['out'] . ' coupe ' . $plage[$j]['in'] . '-' . $plage[$j]['out'] . '<br/>'; break(2); } } } }
A toi de voir le comportement que tu veux.
j'ai adapté a ce que je veux faire mais apparemment la condition ne passe pas
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 foreach($affecter as $aff){ // je met les donné dans un tableau multi dimension pour pouvoir les comparé plus tard //....... $plage[] = array( 'in' => $h_in_aff, 'out'=> $h_out_aff ); } // $plage est un tableau multi dimension $n = count($plage); for($i=0 ; $i < $n ; $i++ ){ for($j=0 ; $j < $n ; $j++ ){ if ($i != $j) { if ($plage[$i]['in'] <= $plage[$j]['out'] && $plage[$i]['out'] >= $plage[$j]['in']) { echo $plage[$i]['in'] . '-' . $plage[$i]['out'] . ' coupe ' . $plage[$j]['in'] . '-' . $plage[$j]['out'] . '<br/>'; break(2); } } } }
entait c un tableau qui récupére les valeur pour les mettres dans le tableau multi dimension :/ car les valeurs sont récupéré dans une liste ....
je n'ai pas mieux compris
comment est structuré $affecter ?
lol dsl, ho purée!
en réexpliquant j'ai compris d'où venais l'erreur
En faite j'ai juste oublier de retiré les crochés ha $h_in_aff[] et $h_out_aff[] qui son des variable qui me permet de récupéré les valeur contenu dans mon formulaire
et ca marche !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 foreach($affecter as $aff){ // $h_in et h_out récupère les valeurs des listes a chaque tour de boucle... 12:15 - 14:30 $h_in_aff = strtotime($h_in) ; $h_out_aff = strtotime($h_out) ; $plage[] = array('in'=>$h_in_aff, 'out'=>$h_out_aff); $cumule += ( strtotime($h_out) - strtotime($h_in) ) / 3600 ; $tache_list .= " ".$aff.' ['.$h_in.' - '.$h_out.'],'; //constitution du message infos dans un array pour créer un message de validation }
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager